From bd02981b5298509d1b45948f8ab437a5590a79f8 Mon Sep 17 00:00:00 2001
From: David Haukeness <david@hauken.us>
Date: Sun, 20 Oct 2019 14:33:10 -0600
Subject: [PATCH] new funcs to render unicode emojis and resolve emoji aliases

---
 emojiMap.go | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/emojiMap.go b/emojiMap.go
index b710cba..dfc2944 100644
--- a/emojiMap.go
+++ b/emojiMap.go
@@ -1,7 +1,10 @@
 package main
 
 import (
+	"fmt"
+	"regexp"
 	"strconv"
+	"strings"
 )
 
 var UNICODE_EMOJI_SUPPORT bool = false
@@ -13,6 +16,34 @@ type emojiData struct {
 	Alias       []string
 }
 
+func emojiUnicodeConvert(s string) string {
+	pStr := strings.Fields(s)
+	reeMatch := regexp.MustCompile(`:\w+:`)
+	for i, word := range pStr {
+		if matched := reeMatch.MatchString(word); matched {
+			// renders a unicode emoji instead of the name
+			if temp, ok := emojiMap[word]; ok {
+				pStr[i] = renderUnicodeEmoji(temp)
+			}
+		}
+	}
+	return strings.Join(pStr, " ")
+}
+
+func resolveRootEmojis(s string) string {
+	pStr := strings.Fields(s)
+	reMatch := regexp.MustCompile(`:\w+:`)
+	for i, word := range pStr {
+		if matched := reMatch.MatchString(word); matched {
+			// resolves the real emoji in case they typed an alias
+			if temp, ok := emojiMap[word]; ok {
+				pStr[i] = temp.Name
+			}
+		}
+	}
+	return strings.Join(pStr, " ")
+}
+
 func renderUnicodeEmoji(data emojiData) (string, error) {
 	emj, err := strconv.ParseInt(data.Unicode, 16, 32)
 	if err != nil {