summary refs log tree commit diff
path: root/scripts/emoji_codegen.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/emoji_codegen.py')
-rwxr-xr-xscripts/emoji_codegen.py49
1 files changed, 26 insertions, 23 deletions
diff --git a/scripts/emoji_codegen.py b/scripts/emoji_codegen.py
index 1e23bd49..9dae1544 100755
--- a/scripts/emoji_codegen.py
+++ b/scripts/emoji_codegen.py
@@ -7,9 +7,10 @@ from jinja2 import Template
 
 
 class Emoji(object):
-    def __init__(self, code, shortname):
+    def __init__(self, code, shortname, unicodename):
         self.code = ''.join(['\\U'+c.rjust(8, '0') for c in code.strip().split(' ')])
         self.shortname = shortname
+        self.unicodename = unicodename
 
 def generate_qml_list(**kwargs):
     tmpl = Template('''
@@ -17,7 +18,7 @@ const QVector<Emoji> emoji::Provider::emoji = {
     {%- for c in kwargs.items() %}
     // {{ c[0].capitalize() }}
     {%- for e in c[1] %}
-    Emoji{QStringLiteral(u"{{ e.code }}"), QStringLiteral(u"{{ e.shortname }}"), emoji::Emoji::Category::{{ c[0].capitalize() }}},
+    Emoji{QStringLiteral(u"{{ e.code }}"), QStringLiteral(u"{{ e.shortname }}"), QStringLiteral(u"{{ e.unicodename }}"), emoji::Emoji::Category::{{ c[0].capitalize() }}},
     {%- endfor %}
     {%- endfor %}
 };
@@ -78,29 +79,31 @@ if __name__ == '__main__':
 
 
         char, name = re.match(r'^(\S+) E\d+\.\d+ (.*)$', charAndName).groups()
+        shortname = name
+
         #TODO: Handle skintone modifiers in a sane way
-        if name in shortcodeDict: 
-            # TODO: this duplicates emoji
-            categories[current_category].append(Emoji(code, shortcodeDict[name]))
-        
-        if name.endswith(' face'): 
-            name = name[:-5]
-        elif name.endswith(' button'): 
-            name = name[:-7] 
+        if shortname in shortcodeDict: 
+            shortname = shortcodeDict[shortname]
         else: 
-            matchobj = re.match(r'^flag: (.*)$', name) 
-            if matchobj: 
-                country, = matchobj.groups() 
-                name = country + " flag"
-        name = name.replace(" ", "_")
-        name = name.replace("“", "")
-        name = name.replace("”", "")
-        name = name.replace(":", "")
-        name = name.replace("-", "_")
-        name = re.sub(r'_{2,}', '_', name) 
-        name = name.lower()
-        name = unidecode(name)
-        categories[current_category].append(Emoji(code, name))
+            if shortname.endswith(' face'): 
+                shortname = shortname[:-5]
+            elif shortname.endswith(' button'): 
+                shortname = shortname[:-7] 
+            else: 
+                # FIXME: Is there a better way to do this?
+                matchobj = re.match(r'^flag: (.*)$', shortname) 
+                if matchobj: 
+                    country, = matchobj.groups() 
+                    shortname = country + " flag"
+            shortname = shortname.replace(" ", "_")
+            shortname = shortname.replace("“", "")
+            shortname = shortname.replace("”", "")
+            shortname = shortname.replace(":", "")
+            shortname = shortname.replace("-", "_")
+            shortname = re.sub(r'_{2,}', '_', shortname) 
+            shortname = shortname.lower()
+            shortname = unidecode(shortname)
+        categories[current_category].append(Emoji(code, shortname, name))
 
     # Use xclip to pipe the output to clipboard.
     # e.g ./codegen.py emoji.json | xclip -sel clip