├── .gitignore
├── .npm
└── package
│ ├── .gitignore
│ ├── README
│ └── npm-shrinkwrap.json
├── spec
├── setup.coffee
├── emojis-transforms-spec.coffee
└── emojis-spec.coffee
├── Makefile
├── template.coffee
├── package.js
├── LICENSE
├── .versions
├── polyfill.js
├── emojis.coffee
├── README.md
└── seed
└── seed.coffee
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 |
--------------------------------------------------------------------------------
/.npm/package/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
--------------------------------------------------------------------------------
/spec/setup.coffee:
--------------------------------------------------------------------------------
1 | if Meteor.isServer
2 | Meteor.publish 'emojis', ->
3 | Emojis.find()
4 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | PORT=5010
2 |
3 | runner:
4 | @TEST_WATCH=1 meteor test-packages --driver-package=meteortesting:mocha --port $(PORT) ./
5 |
6 | test:
7 | @meteor test-packages --driver-package=meteortesting:mocha --once --port $(PORT) ./
8 |
9 | .PHONY: test runner
10 |
--------------------------------------------------------------------------------
/.npm/package/README:
--------------------------------------------------------------------------------
1 | This directory and the files immediately inside it are automatically generated
2 | when you change this package's NPM dependencies. Commit the files in this
3 | directory (npm-shrinkwrap.json, .gitignore, and this README) to source control
4 | so that others run the same versions of sub-dependencies.
5 |
6 | You should NOT check in the node_modules directory that Meteor automatically
7 | creates; if you are using git, the .gitignore file tells git to ignore it.
8 |
--------------------------------------------------------------------------------
/template.coffee:
--------------------------------------------------------------------------------
1 | tmpl = new Template 'Template.emoji', ->
2 | content = ''
3 |
4 | if @templateContentBlock
5 | # this is for the block usage eg: {{#emoji}}:smile:{{/emoji}}
6 | content = Blaze._toText(@templateContentBlock, HTML.TEXTMODE.STRING)
7 | else
8 | # this is for the direct usage eg: {{> emoji ':blush:'}}
9 | content = @parentView.dataVar.get()
10 |
11 | return HTML.Raw(Emojis.parse(content))
12 |
13 | Template.registerHelper 'emoji', tmpl
14 |
--------------------------------------------------------------------------------
/package.js:
--------------------------------------------------------------------------------
1 | var both = ['client', 'server'];
2 |
3 | Package.describe({
4 | name: 'lookback:emoji',
5 | summary: 'Easily render and manage emojis in Meteor.',
6 | version: '0.5.0',
7 | git: 'https://github.com/lookback/meteor-emoji'
8 | });
9 |
10 | Package.onUse(function(api) {
11 | api.versionsFrom('1.6');
12 |
13 | api.use([
14 | 'mongo',
15 | 'coffeescript@2.0.2_1',
16 | 'modules',
17 | 'check',
18 | 'underscore'
19 | ], both);
20 |
21 | api.use('templating@1.3.2', 'client');
22 |
23 | api.addFiles(['polyfill.js', 'emojis.coffee'], both);
24 | api.addFiles('template.coffee', 'client');
25 | api.addFiles('seed/seed.coffee', 'client');
26 |
27 | api.export('Emojis', both);
28 | });
29 |
30 | Package.onTest(function(api) {
31 | Npm.depends({
32 | chai: '4.1.2',
33 | sinon: '4.2.2'
34 | });
35 |
36 | api.use([
37 | 'coffeescript',
38 | 'meteortesting:mocha',
39 | 'lookback:emoji'
40 | ]);
41 |
42 | api.addFiles([
43 | 'spec/setup.coffee',
44 | 'spec/emojis-spec.coffee',
45 | 'spec/emojis-transforms-spec.coffee'
46 | ]);
47 | });
48 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Lookback Inc.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/.versions:
--------------------------------------------------------------------------------
1 | allow-deny@1.1.0
2 | babel-compiler@7.2.3
3 | babel-runtime@1.3.0
4 | base64@1.0.11
5 | binary-heap@1.0.11
6 | blaze@2.3.2
7 | blaze-tools@1.0.10
8 | boilerplate-generator@1.6.0
9 | caching-compiler@1.2.1
10 | caching-html-compiler@1.1.2
11 | callback-hook@1.1.0
12 | check@1.3.1
13 | coffeescript@2.0.3_4
14 | coffeescript-compiler@2.0.3_4
15 | ddp@1.4.0
16 | ddp-client@2.3.3
17 | ddp-common@1.4.0
18 | ddp-server@2.2.0
19 | deps@1.0.12
20 | diff-sequence@1.1.1
21 | dynamic-import@0.5.0
22 | ecmascript@0.12.3
23 | ecmascript-runtime@0.7.0
24 | ecmascript-runtime-client@0.8.0
25 | ecmascript-runtime-server@0.7.1
26 | ejson@1.1.0
27 | fetch@0.1.0
28 | geojson-utils@1.0.10
29 | html-tools@1.0.11
30 | htmljs@1.0.11
31 | id-map@1.1.0
32 | inter-process-messaging@0.1.0
33 | jquery@1.11.10
34 | local-test:lookback:emoji@0.5.0
35 | logging@1.1.20
36 | lookback:emoji@0.5.0
37 | meteor@1.9.2
38 | meteortesting:browser-tests@0.1.1
39 | meteortesting:mocha@0.4.4
40 | minimongo@1.4.5
41 | modern-browsers@0.1.3
42 | modules@0.13.0
43 | modules-runtime@0.10.3
44 | mongo@1.6.0
45 | mongo-decimal@0.1.0
46 | mongo-dev-server@1.1.0
47 | mongo-id@1.0.7
48 | npm-mongo@3.1.1
49 | observe-sequence@1.0.16
50 | ordered-dict@1.1.0
51 | practicalmeteor:mocha-core@1.0.1
52 | promise@0.11.1
53 | random@1.1.0
54 | reactive-var@1.0.11
55 | reload@1.2.0
56 | retry@1.1.0
57 | routepolicy@1.1.0
58 | socket-stream-client@0.2.2
59 | spacebars@1.0.15
60 | spacebars-compiler@1.1.2
61 | templating@1.3.2
62 | templating-compiler@1.3.3
63 | templating-runtime@1.3.2
64 | templating-tools@1.1.2
65 | tracker@1.2.0
66 | underscore@1.0.10
67 | webapp@1.7.1
68 | webapp-hashing@1.0.9
69 |
--------------------------------------------------------------------------------
/polyfill.js:
--------------------------------------------------------------------------------
1 | /*! https://mths.be/fromcodepoint v0.2.1 by @mathias */
2 | if (!String.fromCodePoint) {
3 | (function() {
4 | var defineProperty = (function() {
5 | // IE 8 only supports `Object.defineProperty` on DOM elements
6 | try {
7 | var object = {};
8 | var $defineProperty = Object.defineProperty;
9 | var result = $defineProperty(object, object, object) && $defineProperty;
10 | } catch(error) {}
11 | return result;
12 | }());
13 | var stringFromCharCode = String.fromCharCode;
14 | var floor = Math.floor;
15 | var fromCodePoint = function(_) {
16 | var MAX_SIZE = 0x4000;
17 | var codeUnits = [];
18 | var highSurrogate;
19 | var lowSurrogate;
20 | var index = -1;
21 | var length = arguments.length;
22 | if (!length) {
23 | return '';
24 | }
25 | var result = '';
26 | while (++index < length) {
27 | var codePoint = Number(arguments[index]);
28 | if (
29 | !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`
30 | codePoint < 0 || // not a valid Unicode code point
31 | codePoint > 0x10FFFF || // not a valid Unicode code point
32 | floor(codePoint) != codePoint // not an integer
33 | ) {
34 | throw RangeError('Invalid code point: ' + codePoint);
35 | }
36 | if (codePoint <= 0xFFFF) { // BMP code point
37 | codeUnits.push(codePoint);
38 | } else { // Astral code point; split in surrogate halves
39 | // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
40 | codePoint -= 0x10000;
41 | highSurrogate = (codePoint >> 10) + 0xD800;
42 | lowSurrogate = (codePoint % 0x400) + 0xDC00;
43 | codeUnits.push(highSurrogate, lowSurrogate);
44 | }
45 | if (index + 1 == length || codeUnits.length > MAX_SIZE) {
46 | result += stringFromCharCode.apply(null, codeUnits);
47 | codeUnits.length = 0;
48 | }
49 | }
50 | return result;
51 | };
52 | if (defineProperty) {
53 | defineProperty(String, 'fromCodePoint', {
54 | 'value': fromCodePoint,
55 | 'configurable': true,
56 | 'writable': true
57 | });
58 | } else {
59 | String.fromCodePoint = fromCodePoint;
60 | }
61 | }());
62 | }
63 |
--------------------------------------------------------------------------------
/spec/emojis-transforms-spec.coffee:
--------------------------------------------------------------------------------
1 | chai = Npm.require 'chai'
2 |
3 | chai.should()
4 |
5 | describe 'Emojis', ->
6 |
7 | before ->
8 | Emojis.isSupported = true
9 |
10 | if Meteor.isClient
11 | before (done) ->
12 | Meteor.subscribe 'emojis', -> done()
13 |
14 | describe 'Transforms', ->
15 |
16 | beforeEach ->
17 | Emojis._basePath = '/images/emojis'
18 |
19 | describe '#path', ->
20 |
21 | it 'should be the full path to the emoji image', ->
22 | emoji = Emojis.findOne(alias: 'smile')
23 | custom = Emojis.findOne(alias: 'trollface')
24 |
25 | emoji.path.should.equal '/images/emojis/1f604.png'
26 | custom.path.should.equal '/images/emojis/trollface.png'
27 |
28 | it 'should be based on the base path', ->
29 | Emojis.setBasePath '/images/smileys'
30 |
31 | emoji = Emojis.findOne(alias: 'smile')
32 |
33 | emoji.path.should.equal '/images/smileys/1f604.png'
34 |
35 | describe '#toHex', ->
36 |
37 | it 'should return the hexadecimal representation of the emoji unicode', ->
38 | emoji = Emojis.findOne(alias: 'smile')
39 | emoji.toHex().should.equal '1f604'
40 |
41 | it 'should return empty string for custom emojis', ->
42 | emoji = Emojis.findOne(alias: 'trollface')
43 | emoji.toHex().should.equal ''
44 |
45 | describe '#toHTML', ->
46 |
47 | beforeEach ->
48 | Emojis.isSupported = true
49 | Emojis.useImages = false
50 |
51 | it 'should return the template string for the emoji', ->
52 | emoji = Emojis.findOne(alias: 'smile')
53 | emoji.toHTML().should.equal "😄"
54 |
55 | it 'should return the template string with images for the emoji if useImages is true', ->
56 | Emojis.useImages = true
57 |
58 | emoji = Emojis.findOne(alias: 'smile')
59 | emoji.toHTML().should.equal "
"
60 |
61 | it 'should return the template string with images for the emoji if the emoji is custom', ->
62 | emoji = Emojis.findOne(alias: 'trollface')
63 | emoji.toHTML().should.equal "
"
64 |
65 | it 'should return the template string with images for the emoji if emojis are not supported', ->
66 | Emojis.isSupported = false
67 |
68 | emoji = Emojis.findOne(alias: 'smile')
69 | emoji.toHTML().should.equal "
"
70 |
71 | it 'should be be able to override the template function', ->
72 | org = Emojis.template
73 | Emojis.template = (emoji) -> 'foo'
74 |
75 | emoji = Emojis.findOne()
76 | emoji.toHTML().should.equal 'foo'
77 |
78 | Emojis.template = org
79 |
80 | it 'should be be able to override the image template function', ->
81 | org = Emojis.imageTemplate
82 | Emojis.useImages = true
83 | Emojis.imageTemplate = (emoji) -> 'foo'
84 |
85 | emoji = Emojis.findOne()
86 | emoji.toHTML().should.equal 'foo'
87 |
88 | Emojis.imageTemplate = org
89 |
--------------------------------------------------------------------------------
/spec/emojis-spec.coffee:
--------------------------------------------------------------------------------
1 | chai = Npm.require 'chai'
2 |
3 | chai.should()
4 |
5 | describe 'Emojis', ->
6 |
7 | before ->
8 | if Emojis.find().count() is 0
9 | Emojis.seed()
10 |
11 | Emojis.isSupported = true
12 | Emojis.useImages = false
13 |
14 | if Meteor.isClient
15 | before (done) ->
16 | Meteor.subscribe 'emojis', -> done()
17 |
18 | beforeEach ->
19 | Emojis._basePath = '/images/emojis'
20 |
21 | @emoji =
22 | emoji: '😄'
23 | description: 'smiling face with open mouth and smiling eyes'
24 | alias: 'smile'
25 | tags: ['happy', 'joy', 'pleased']
26 |
27 | @customEmoji =
28 | alias: ['trollface']
29 | tags: []
30 |
31 | it 'should be exported as "Emojis"', ->
32 | Emojis.should.be.an 'Object'
33 |
34 | describe '#setBasePath', ->
35 |
36 | it 'should be able to set a new image base path', ->
37 | Emojis.setBasePath '/some/other/path'
38 | Emojis._basePath.should.equal '/some/other/path'
39 |
40 | it 'should strip trailing slashes', ->
41 | Emojis.setBasePath '/some/path/'
42 | Emojis._basePath.should.equal '/some/path'
43 |
44 | describe '#toUnicode', ->
45 |
46 | it 'should convert shortnames in a text to unicode emojis', ->
47 | text = 'Hello there :boom:'
48 | result = Emojis.toUnicode(text)
49 | result.should.contain('💥').and.not.contain ':boom:'
50 |
51 | it 'should not try to convert custom emojis', ->
52 | text = 'Hello there :trollface:'
53 | result = Emojis.toUnicode(text)
54 | result.should.equal 'Hello there '
55 |
56 | describe '#getAllTokens', ->
57 |
58 | it 'should return all raw smiley and emoji tokens from a text', ->
59 | text = 'Hey there :D This is a random text :boom: with a couple of smileys:) :)'
60 | tokens = Emojis.getAllTokens(text)
61 |
62 | tokens.total.should.equal(3)
63 |
64 | tokens.smileys.length.should.equal(2)
65 | tokens.emojis.length.should.equal(1)
66 |
67 | tokens.smileys[0].should.equal(':D')
68 | tokens.smileys[1].should.equal(':)')
69 |
70 | tokens.emojis[0].should.equal(':boom:')
71 |
72 | it 'should work on non matching texts', ->
73 | text = 'Hey there'
74 | tokens = Emojis.getAllTokens(text)
75 |
76 | tokens.total.should.equal(0)
77 | tokens.smileys.length.should.equal(0)
78 | tokens.emojis.length.should.equal(0)
79 |
80 | describe '#parse', ->
81 |
82 | text = "Hello :boom: I am a :D and :') This is no a smiley:) and this is not an emoji:+1:"
83 |
84 | beforeEach ->
85 | Emojis.useImages = false
86 | Emojis.isSupported = true
87 |
88 | it 'should parse text to emoji', ->
89 | result = Emojis.parse(text)
90 |
91 | result.should
92 | .contain "💥"
93 | .contain "😃"
94 | .and.contain ':+1:'
95 | .and.contain ":')"
96 | .and.not.contain "😊"
97 | .and.not.contain ':boom:'
98 | .and.not.contain ':D'
99 |
100 | it 'should be able to parse smileys in the beginning of a string', ->
101 | results = [':D', ':D hey'].map((str) -> Emojis.parse(str))
102 |
103 | results.forEach((res) ->
104 | res.should.contain "😃"
105 | )
106 |
107 | it 'should not mess up the whitespace in the input', ->
108 | smileys = Emojis.parse('Hey :D there')
109 | smileys.should.equal "Hey 😃 there"
110 |
111 | it 'should parse text to emoji images', ->
112 | Emojis.useImages = true
113 | result = Emojis.parse(text)
114 |
115 | result.should
116 | .contain "
"
117 | .and.contain "
"
118 | .and.contain ':+1:'
119 | .and.not.contain ':boom:'
120 | .and.not.contain ':D'
121 |
--------------------------------------------------------------------------------
/emojis.coffee:
--------------------------------------------------------------------------------
1 | # Force whitespace between text and emoji/smiley, for safety. Otherwise
2 | # this guy will collide with URLs like http://lolol.com (see the ':/' in there? :D).
3 | shortnameRegexp = /\B:([\w+-]+):/g
4 | smileyRegexp = /(^|\s)(\<[\/\\]?3|[\(\)\\\D|\*\$][\-\^]?[\;\=]|[\:\;\=B8][\-\^]?[3DOPp\@\$\*\\\)\(\/\|])(?=\s|[\!\.\?]|$)/g
5 |
6 | # Emulation of Ruby's String#codepoints. Takes Javascript's flawed
7 | # unicode implementation into consideration regarding surrogate pairs.
8 | toCodePoints = (str) ->
9 | chars = []
10 | i = 0
11 |
12 | while i < str.length
13 | c1 = str.charCodeAt(i)
14 |
15 | if c1 >= 0xD800 and c1 < 0xDC00 and i+1 < str.length
16 | c2 = str.charCodeAt(i+1)
17 | if c2 >= 0xDC00 && c2 < 0xE000
18 | chars.push(0x10000 + ((c1-0xD800)<<10) + (c2-0xDC00))
19 | i += 2
20 | continue
21 |
22 | chars.push(c1)
23 | i++
24 |
25 | return chars
26 |
27 | isCustom = (emoji) ->
28 | emoji and typeof emoji.emoji is 'undefined'
29 |
30 | toHex = (str) ->
31 | return '' if not str
32 |
33 | toCodePoints(str).map (char) ->
34 | char.toString(16)
35 | .join('-')
36 |
37 | imagePath = (emoji) ->
38 | if isCustom(emoji)
39 | "#{emoji.alias}.png"
40 | else
41 | "#{toHex(emoji.emoji).replace(/-fe0f\b/, '')}.png"
42 |
43 | toImage = (emoji) ->
44 | "
"
45 |
46 | wrap = (emoji) ->
47 | "#{emoji.emoji}"
48 |
49 | Emojis = new Mongo.Collection 'emojis',
50 | transform: (emoji) ->
51 |
52 | # Shortcut helpers
53 |
54 | emoji.path = Emojis.basePath() + '/' + imagePath(emoji)
55 |
56 | emoji.toHTML = ->
57 | if !Emojis.isSupported or isCustom(this) or Emojis.useImages then Emojis.imageTemplate(this) else Emojis.template(this)
58 |
59 | emoji.toHex = ->
60 | toHex(@emoji)
61 |
62 | return emoji
63 |
64 | # General parse function.
65 | #
66 | # Parses `text` and returns emoji objects from :shortnames: and ASCII
67 | # smileys (:D).
68 | #
69 | # Optionally takes a function which can transform the return value.
70 | parse = (text, fn) ->
71 | check text, String
72 | check fn, Match.Optional(Function)
73 |
74 | text
75 | .replace smileyRegexp, (match, space, smiley, nose) ->
76 | smiley = smiley.toUpperCase()
77 | smiley = if nose then smiley.replace(/:-/g, ':') else smiley
78 |
79 | emoji = Emojis.findOne(ascii: smiley)
80 |
81 | if emoji
82 | return "#{space}#{if fn then fn(emoji) else emoji}"
83 | else
84 | return "#{space}#{match}"
85 |
86 | .replace shortnameRegexp, (match, alias) ->
87 | emoji = Emojis.findOne(alias: alias)
88 |
89 | if emoji
90 | return if fn then fn(emoji) else emoji
91 | else
92 | return match
93 |
94 | Emojis._basePath = '/images/emojis'
95 |
96 | Emojis.setBasePath = (path) ->
97 | check path, String
98 |
99 | # Remove trailing slashes.
100 | Emojis._basePath = path.replace(/\/+$/, '')
101 |
102 | Emojis.basePath = ->
103 | Emojis._basePath
104 |
105 | # Overridable
106 |
107 | Emojis.template = wrap
108 | Emojis.imageTemplate = toImage
109 |
110 | # Replace emoji shortnames with their unicode version.
111 | Emojis.toUnicode = (text) ->
112 | parse text, (emoji) -> emoji.emoji || ''
113 |
114 | Emojis.getAllTokens = (text) ->
115 | smileys = (text.match(smileyRegexp) || []).map((s) -> s.trim())
116 | emojis = (text.match(shortnameRegexp) || []).map((s) -> s.trim())
117 |
118 | return {
119 | total: smileys.concat(emojis).length,
120 | smileys: smileys,
121 | emojis: emojis
122 | }
123 |
124 | Emojis.parse = (text) ->
125 | parse text, (emoji) -> emoji.toHTML()
126 |
127 | # From https://gist.github.com/mwunsch/4710561
128 | Emojis.isSupported = do ->
129 | if Meteor.isServer
130 | return true
131 |
132 | canvas = document.createElement('canvas')
133 | if !canvas.getContext
134 | return
135 |
136 | context = canvas.getContext('2d')
137 |
138 | if typeof context.fillText isnt 'function'
139 | return
140 |
141 | # :smile: String.fromCharCode(55357) + String.fromCharCode(56835)
142 | smile = String.fromCodePoint(0x1F604)
143 |
144 | context.textBaseline = "top"
145 | context.font = "32px Arial"
146 | context.fillText(smile, 0, 0)
147 |
148 | context.getImageData(16, 16, 1, 1).data[0] isnt 0
149 |
150 | if Meteor.isClient
151 | Emojis.useImages ||= !Emojis.isSupported
152 | else
153 | Emojis.useImages ||= false
154 |
--------------------------------------------------------------------------------
/.npm/package/npm-shrinkwrap.json:
--------------------------------------------------------------------------------
1 | {
2 | "lockfileVersion": 1,
3 | "dependencies": {
4 | "@sinonjs/commons": {
5 | "version": "1.3.0",
6 | "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.3.0.tgz",
7 | "integrity": "sha512-j4ZwhaHmwsCb4DlDOIWnI5YyKDNMoNThsmwEpfHx6a1EpsGZ9qYLxP++LMlmBRjtGptGHFsGItJ768snllFWpA=="
8 | },
9 | "@sinonjs/formatio": {
10 | "version": "3.1.0",
11 | "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.1.0.tgz",
12 | "integrity": "sha512-ZAR2bPHOl4Xg6eklUGpsdiIJ4+J1SNag1DHHrG/73Uz/nVwXqjgUtRPLoS+aVyieN9cSbc0E4LsU984tWcDyNg=="
13 | },
14 | "@sinonjs/samsam": {
15 | "version": "3.0.2",
16 | "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.0.2.tgz",
17 | "integrity": "sha512-m08g4CS3J6lwRQk1pj1EO+KEVWbrbXsmi9Pw0ySmrIbcVxVaedoFgLvFsV8wHLwh01EpROVz3KvVcD1Jmks9FQ=="
18 | },
19 | "array-from": {
20 | "version": "2.1.1",
21 | "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz",
22 | "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU="
23 | },
24 | "assertion-error": {
25 | "version": "1.1.0",
26 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
27 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw=="
28 | },
29 | "chai": {
30 | "version": "4.1.2",
31 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz",
32 | "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw="
33 | },
34 | "check-error": {
35 | "version": "1.0.2",
36 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
37 | "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII="
38 | },
39 | "deep-eql": {
40 | "version": "3.0.1",
41 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
42 | "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw=="
43 | },
44 | "diff": {
45 | "version": "3.5.0",
46 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
47 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA=="
48 | },
49 | "formatio": {
50 | "version": "1.2.0",
51 | "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz",
52 | "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs="
53 | },
54 | "get-func-name": {
55 | "version": "2.0.0",
56 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
57 | "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE="
58 | },
59 | "has-flag": {
60 | "version": "3.0.0",
61 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
62 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
63 | },
64 | "isarray": {
65 | "version": "0.0.1",
66 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
67 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
68 | },
69 | "just-extend": {
70 | "version": "4.0.2",
71 | "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.0.2.tgz",
72 | "integrity": "sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw=="
73 | },
74 | "lodash.get": {
75 | "version": "4.4.2",
76 | "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
77 | "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
78 | },
79 | "lolex": {
80 | "version": "2.7.5",
81 | "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz",
82 | "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q=="
83 | },
84 | "nise": {
85 | "version": "1.4.8",
86 | "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.8.tgz",
87 | "integrity": "sha512-kGASVhuL4tlAV0tvA34yJYZIVihrUt/5bDwpp4tTluigxUr2bBlJeDXmivb6NuEdFkqvdv/Ybb9dm16PSKUhtw=="
88 | },
89 | "path-to-regexp": {
90 | "version": "1.7.0",
91 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz",
92 | "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30="
93 | },
94 | "pathval": {
95 | "version": "1.1.0",
96 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz",
97 | "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA="
98 | },
99 | "samsam": {
100 | "version": "1.3.0",
101 | "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz",
102 | "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg=="
103 | },
104 | "sinon": {
105 | "version": "4.2.2",
106 | "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.2.2.tgz",
107 | "integrity": "sha512-BEa593xl+IkIc94nKo0O0LauQC/gQy8Gyv4DkzPwF/9DweC5phr1y+42zibCpn9abfkdHxt9r8AhD0R6u9DE/Q=="
108 | },
109 | "supports-color": {
110 | "version": "5.5.0",
111 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
112 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="
113 | },
114 | "text-encoding": {
115 | "version": "0.6.4",
116 | "resolved": "http://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz",
117 | "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk="
118 | },
119 | "type-detect": {
120 | "version": "4.0.8",
121 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
122 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g=="
123 | }
124 | }
125 | }
126 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Emojis for Meteor 😄
2 |
3 | This package makes it easier to manage 💖💥🌈 in your Meteor app.
4 |
5 | ## Features
6 |
7 | - ✅ Renders unicode emojis from shortnames (:smile:).
8 | - ✅ Adds an `Emoji` collection to the client filled with over 800 emojis. Suitable for autocompletions and similar.
9 | - ✅ Includes `emoji` template helpers for easy rendering of emojis inside your Meteor templates.
10 | - ✅ Parses arbitrary strings and replaces any emoji shortnames with emoji unicode representations.
11 | - ✅ Parses common ASCII smileys and maps to corresponding emoji.
12 | - ✅ Detects unicode emojis support and fallbacks to images.
13 | - ✅ Customizable base directory for the emoji images. Suitable for CDN usage.
14 |
15 | ## Installation
16 |
17 | ```
18 | meteor add lookback:emoji
19 | ```
20 |
21 | You're not done yet! Continue reading ...
22 |
23 | ## Get up and running
24 |
25 | This package exports a single namespace: `Emojis`. It's a `Mongo.Collection`, and includes some custom methods (see *API* below).
26 |
27 | ### Emoji images
28 |
29 | Some browsers on some systems still don't support native unicode emojis. Read more here: [caniemoji.com](http://caniemoji.com). So we need to fallback to image representations in that case.
30 |
31 | This package **does not** include the actual images for the emojis. You can however checkout the images in these emoji projects:
32 |
33 | - [Twemoji by Twitter](https://github.com/twitter/twemoji/)
34 | - [Emojione](https://github.com/Ranks/emojione)
35 | - [Gemoji by GitHub](https://github.com/github/gemoji) *(beware: emoji images in here are copyrighted by Apple)*
36 |
37 | This package assumes the images are in PNG format and named with their hexadecimal unicode name (like `1f604.png` for the `smile` emoji).
38 |
39 | You would typically put the emoji images in the `public/images` directory, in an `emojis` folder. If not, be sure to call `Emojis.setBasePath()` with the custom path (see the API functions below).
40 |
41 | ### Using the collection
42 |
43 | Having all emojis in the collection lets you implement things like autocompletions for emojis, where you can query the `alias` and `tags` fields for the given keyboard input.
44 |
45 | Now you can run arbitrary queries for any emoji on both the server and the client.
46 |
47 | ```js
48 | Emojis.findOne({
49 | alias: 'smile'
50 | });
51 | ```
52 |
53 | That call returns an emoji object with this structure:
54 |
55 | ```js
56 | {
57 | // This is the canonical shortname
58 | alias: "smile",
59 | description: "smiling face with open mouth and smiling eyes",
60 | // Unicode symbol
61 | emoji: "😄",
62 | tags: ["happy", "joy", "pleased"],
63 | // Path to emoji image
64 | path: '/images/emojis/1f604.png'
65 | // Creates an `img` element for this emoji
66 | toHTML: function() {...},
67 | // The Hex representation of this emoji
68 | toHex: function() {...}
69 | }
70 | ```
71 |
72 | This package always assumes this data structure when reasoning about an *emoji object*.
73 |
74 | ### Parsing text
75 |
76 | The `Emojis.parse` function takes this:
77 |
78 | ```
79 | A text with some emojis or smileys :D :boom: :smile:
80 | ```
81 |
82 | and outputs this:
83 |
84 | ```html
85 | A text with some emojis or smileys 😃 💥 😄
86 | ```
87 |
88 | ### Template helpers
89 |
90 | For everyday usage, you would use the built-in Blaze templates instead of calling `Emojis.parse` manually:
91 |
92 | ```html
93 | {{ ! A block of text. Works similar to the built-in Markdown block helper. }}
94 | {{#emoji}}
95 | A text with some emojis: :boom: :smile:
96 | {{/emoji}}
97 | ```
98 |
99 | or
100 |
101 | ```html
102 | {{ ! Or inline helper }}
103 | {{ > emoji ':speech_balloon:'}}
104 | ```
105 |
106 | ## Full API
107 |
108 | ### Emoji object methods
109 |
110 | Called on an emoji object fetched from the database.
111 |
112 | #### `emoji.path`
113 |
114 | The full path for this emoji:
115 |
116 | ```js
117 | var emoji = Emojis.findOne({alias: 'smile'});
118 | console.log(emoji.path);
119 | // => "/images/emojis/1f604.png"
120 | ```
121 |
122 | #### `emoji.toHTML() -> String`
123 |
124 | Shortcut function that returns the HTML representation of the emoji.
125 |
126 | This depends on these parameters:
127 |
128 | - `Emojis.useImages` - force use of image emojis.
129 | - `Emojis.isSupported` - if unicode emojis is supported in the browser or not.
130 | - if the emoji is custom (not in standard unicode).
131 |
132 | If emojis aren't supported, `toHTML()` will fallback to images.
133 |
134 | ```js
135 | // Default behavior.
136 | var emoji = Emojis.findOne({alias: 'smile'});
137 | console.log(emoji.toHTML());
138 | // => 😄
139 |
140 | var custom = Emojis.findOne({alias: 'trollface'});
141 | console.log(emoji.toHTML());
142 | // =>
143 | ```
144 |
145 | You can use `Emojis.useImages` (defaults to the inverse of `Emojis.isSupported`) to force use of images.
146 |
147 | #### `emoji.toHex() -> String`
148 |
149 | Returns the hexadecimal representation of the unicode emoji:
150 |
151 | ```js
152 | var emoji = Emojis.findOne({alias: 'smile'});
153 | console.log(emoji.toHex());
154 |
155 | // => "1f604"
156 | ```
157 |
158 | ### Static properties
159 |
160 | #### `Emojis.useImages`
161 |
162 | Defaults to the inverse of `Emojis.isSupported`. Set to `true` to force use of images.
163 |
164 | #### `Emojis.isSupported`
165 |
166 | Checks browser support for unicode emojis.
167 |
168 | ### Static functions
169 |
170 | Exposed directly in the `Emojis` namespace.
171 |
172 | #### `Emojis.parse(text:String) -> String`
173 |
174 | *Client and server.*
175 |
176 | Takes a string and returns the string with any **emoji shortnames** and **ASCII smileys** replaced with their image representations.
177 |
178 | The emoji images will be on this format:
179 |
180 | ```html
181 |
182 |
183 |
184 | ```
185 |
186 | #### `Emojis.toUnicode(text:String) -> String`
187 |
188 | Parses a text and converts any shortcodes to unicode emojis.
189 |
190 | #### `Emojis.template(emoji:Object) -> String`
191 |
192 | Takes an *emoji object* and returns its HTML representation.
193 |
194 | ```js
195 | var emoji = Emojis.findOne({alias: 'smile'});
196 | console.log(Emojis.template(emoji));
197 | // => 😄
198 | ```
199 |
200 | You can override this function with your own template function if you want to. The default one looks like this:
201 |
202 | ```js
203 | /*
204 | The `emoji` parameter is an emoji object from the collection.
205 | */
206 | Emojis.template = function(emoji) {
207 | return '' + emoji.emoji + '';
208 | };
209 | ```
210 |
211 | #### `Emojis.imageTemplate(emoji:Object) -> String`
212 |
213 | Same as `Emojis.template`, but for images.
214 |
215 | ```js
216 | var emoji = Emojis.findOne({alias: 'smile'});
217 | console.log(Emojis.imageTemplate(emoji));
218 | // =>
219 | ```
220 |
221 | #### `Emojis.setBasePath(path:String)`
222 |
223 | *Client and server.*
224 |
225 | The *base path* is where the package shall put in front of the image name. Defaults to `/images/emojis`. Set this in some init routine of yours.
226 |
227 | If you're using a CDN network like CloudFront or similar, you should call this function with the root CDN path in order to use the CDN niceties.
228 |
229 | Sample usage:
230 |
231 | ```js
232 | // Assume:
233 | Meteor.settings.public.cdnUrl = 'https://foobar.cloudfront.net';
234 |
235 | // ...
236 |
237 | if(Meteor.settings.public.cdnUrl) {
238 | Emojis.setBasePath(Meteor.settings.public.cdnUrl + '/images/emojis');
239 | }
240 | ```
241 |
242 | #### `Emojis.basePath() -> String`
243 |
244 | *Client and server.*
245 |
246 | Returns the current base path.
247 |
248 | #### `Emojis.seed() -> Number`
249 |
250 | Wipes the `emojis` collection, and re-populates it. Returns the number of emojis inserted.
251 |
252 | ## Suggested styling
253 |
254 | Style the `.emoji` class like this with CSS to achieve a nice vertical aligned position for the emoji images:
255 |
256 | ```css
257 | img.emoji {
258 | font-size: inherit;
259 | height: 2.7ex;
260 | /* prevent img stretch */
261 | width: auto;
262 | min-width: 15px;
263 | min-height: 15px;
264 |
265 | /* Inline alignment adjust the margins */
266 | display: inline-block;
267 | margin: -0.4ex .15em 0;
268 | line-height: normal;
269 | vertical-align: middle;
270 | }
271 | ```
272 |
273 | ## Tests
274 |
275 | Run tests with
276 |
277 | ```
278 | make test
279 | ```
280 |
281 | Watch mode:
282 |
283 | ```
284 | make runner
285 | ```
286 |
287 | ## Version history
288 |
289 | - `0.5.0` - Move all emojis from the server to the client (see [#6](https://github.com/lookback/meteor-emoji/pull/6)).
290 | - `0.4.1` - Let `Emojis.getAllTokens` return an object with `total`, `smileys`, and `emojis` props.
291 | - `0.4.0` - Add `Emojis.getAllTokens` method for getting all raw matched tokens from a text.
292 | - `0.3.4` - Fix spacing issues when parsing smileys.
293 | - `0.3.3` - Fix `testBD` being parsed to `test😎`.
294 | - `0.3.2` - Fix `testBDfoo` being parsed to `test😎`. I.e. require whitespace between ASCII smileys.
295 | - `0.3.1` - Add polyfill for `String.fromCodePoint`.
296 | - `0.3.0`
297 | This release moves to using native unicode emojis as default. If native emojis are not supported in the browser, it'll fallback to the previous image solution.
298 |
299 | - Add `Emojis.isSupported` variable for checking for native unicode support.
300 | - Add `Emojis.useImages` for forcing use of images over unicode.
301 | - `0.2.0` - Add `Emojis.toUnicode` function.
302 | - `0.1.0` - Initial publish.
303 |
304 | ***
305 |
306 | Made by [Lookback](http://github.com/lookback).
307 |
--------------------------------------------------------------------------------
/seed/seed.coffee:
--------------------------------------------------------------------------------
1 | emojis = [{
2 | "emoji": "😄",
3 | "description": "smiling face with open mouth and smiling eyes",
4 | "aliases": ["smile"],
5 | "tags": ["happy", "joy", "pleased"]
6 | }, {
7 | "emoji": "😃",
8 | "description": "smiling face with open mouth",
9 | "aliases": ["smiley"],
10 | "tags": ["happy", "joy", "haha"],
11 | "ascii": ":D"
12 | }, {
13 | "emoji": "😀",
14 | "description": "grinning face",
15 | "aliases": ["grinning"],
16 | "tags": ["smile", "happy"]
17 | }, {
18 | "emoji": "😊",
19 | "description": "smiling face with smiling eyes",
20 | "aliases": ["blush"],
21 | "tags": ["proud"],
22 | "ascii": ":)"
23 | }, {
24 | "emoji": "☺️",
25 | "description": "white smiling face",
26 | "aliases": ["relaxed"],
27 | "tags": ["blush", "pleased"]
28 | }, {
29 | "emoji": "😉",
30 | "description": "winking face",
31 | "aliases": ["wink"],
32 | "tags": ["flirt"],
33 | "ascii": ";)"
34 | }, {
35 | "emoji": "😍",
36 | "description": "smiling face with heart-shaped eyes",
37 | "aliases": ["heart_eyes"],
38 | "tags": ["love", "crush"]
39 | }, {
40 | "emoji": "😘",
41 | "description": "face throwing a kiss",
42 | "aliases": ["kissing_heart"],
43 | "tags": ["flirt"],
44 | "ascii": ":*"
45 | }, {
46 | "emoji": "😚",
47 | "description": "kissing face with closed eyes",
48 | "aliases": ["kissing_closed_eyes"],
49 | "tags": []
50 | }, {
51 | "emoji": "😗",
52 | "description": "kissing face",
53 | "aliases": ["kissing"],
54 | "tags": []
55 | }, {
56 | "emoji": "😙",
57 | "description": "kissing face with smiling eyes",
58 | "aliases": ["kissing_smiling_eyes"],
59 | "tags": []
60 | }, {
61 | "emoji": "😜",
62 | "description": "face with stuck-out tongue and winking eye",
63 | "aliases": ["stuck_out_tongue_winking_eye"],
64 | "tags": ["prank", "silly"],
65 | "ascii": ";P"
66 | }, {
67 | "emoji": "😝",
68 | "description": "face with stuck-out tongue and tightly-closed eyes",
69 | "aliases": ["stuck_out_tongue_closed_eyes"],
70 | "tags": ["prank"],
71 | "ascii": "xP"
72 | }, {
73 | "emoji": "😛",
74 | "description": "face with stuck-out tongue",
75 | "aliases": ["stuck_out_tongue"],
76 | "tags": [],
77 | "ascii": ":P"
78 | }, {
79 | "emoji": "😳",
80 | "description": "flushed face",
81 | "aliases": ["flushed"],
82 | "tags": [],
83 | "ascii": ":$"
84 | }, {
85 | "emoji": "😁",
86 | "description": "grinning face with smiling eyes",
87 | "aliases": ["grin"],
88 | "tags": [],
89 | "ascii": ":E"
90 | }, {
91 | "emoji": "😔",
92 | "description": "pensive face",
93 | "aliases": ["pensive"],
94 | "tags": []
95 | }, {
96 | "emoji": "😌",
97 | "description": "relieved face",
98 | "aliases": ["relieved"],
99 | "tags": ["whew"],
100 | "ascii": ":3"
101 | }, {
102 | "emoji": "😒",
103 | "description": "unamused face",
104 | "aliases": ["unamused"],
105 | "tags": ["meh"],
106 | "ascii": ":<"
107 | }, {
108 | "emoji": "😞",
109 | "description": "disappointed face",
110 | "aliases": ["disappointed"],
111 | "tags": ["sad"],
112 | "ascii": [":(", ":[", "=("]
113 | }, {
114 | "emoji": "😣",
115 | "description": "persevering face",
116 | "aliases": ["persevere"],
117 | "tags": ["struggling"],
118 | "ascii": ">.<"
119 | }, {
120 | "emoji": "😢",
121 | "description": "crying face",
122 | "aliases": ["cry"],
123 | "tags": ["sad", "tear"],
124 | "ascii": [":'(", ";("]
125 | }, {
126 | "emoji": "😂",
127 | "description": "face with tears of joy",
128 | "aliases": ["joy"],
129 | "tags": ["tears"],
130 | "ascii": ":')"
131 | }, {
132 | "emoji": "😭",
133 | "description": "loudly crying face",
134 | "aliases": ["sob"],
135 | "tags": ["sad", "cry", "bawling"]
136 | }, {
137 | "emoji": "😪",
138 | "description": "sleepy face",
139 | "aliases": ["sleepy"],
140 | "tags": ["tired"]
141 | }, {
142 | "emoji": "😥",
143 | "description": "disappointed but relieved face",
144 | "aliases": ["disappointed_relieved"],
145 | "tags": ["phew", "sweat", "nervous"],
146 | "ascii": "':("
147 | }, {
148 | "emoji": "😰",
149 | "description": "face with open mouth and cold sweat",
150 | "aliases": ["cold_sweat"],
151 | "tags": ["nervous"]
152 | }, {
153 | "emoji": "😅",
154 | "description": "smiling face with open mouth and cold sweat",
155 | "aliases": ["sweat_smile"],
156 | "tags": ["hot"],
157 | "ascii": "':D"
158 | }, {
159 | "emoji": "😓",
160 | "description": "face with cold sweat",
161 | "aliases": ["sweat"],
162 | "tags": []
163 | }, {
164 | "emoji": "😩",
165 | "description": "weary face",
166 | "aliases": ["weary"],
167 | "tags": ["tired"]
168 | }, {
169 | "emoji": "😫",
170 | "description": "tired face",
171 | "aliases": ["tired_face"],
172 | "tags": ["upset", "whine"]
173 | }, {
174 | "emoji": "😨",
175 | "description": "fearful face",
176 | "aliases": ["fearful"],
177 | "tags": ["scared", "shocked", "oops"]
178 | }, {
179 | "emoji": "😱",
180 | "description": "face screaming in fear",
181 | "aliases": ["scream"],
182 | "tags": ["horror", "shocked"]
183 | }, {
184 | "emoji": "😠",
185 | "description": "angry face",
186 | "aliases": ["angry"],
187 | "tags": ["mad", "annoyed"],
188 | "ascii": ">:("
189 | }, {
190 | "emoji": "😡",
191 | "description": "pouting face",
192 | "aliases": ["rage"],
193 | "tags": ["angry"]
194 | }, {
195 | "emoji": "😤",
196 | "description": "face with look of triumph",
197 | "aliases": ["triumph"],
198 | "tags": ["smug"]
199 | }, {
200 | "emoji": "😖",
201 | "description": "confounded face",
202 | "aliases": ["confounded"],
203 | "tags": []
204 | }, {
205 | "emoji": "😆",
206 | "description": "smiling face with open mouth and tightly-closed eyes",
207 | "aliases": ["laughing", "satisfied"],
208 | "tags": ["happy", "haha"],
209 | "ascii": [">:)", ">;)"]
210 | }, {
211 | "emoji": "😋",
212 | "description": "face savouring delicious food",
213 | "aliases": ["yum"],
214 | "tags": ["tongue", "lick"]
215 | }, {
216 | "emoji": "😷",
217 | "description": "face with medical mask",
218 | "aliases": ["mask"],
219 | "tags": ["sick", "ill"]
220 | }, {
221 | "emoji": "😎",
222 | "description": "smiling face with sunglasses",
223 | "aliases": ["sunglasses"],
224 | "tags": ["cool"],
225 | "ascii": ["8)", "B)", "8D", "BD"]
226 | }, {
227 | "emoji": "😴",
228 | "description": "sleeping face",
229 | "aliases": ["sleeping"],
230 | "tags": ["zzz"]
231 | }, {
232 | "emoji": "😵",
233 | "description": "dizzy face",
234 | "aliases": ["dizzy_face"],
235 | "tags": [],
236 | "ascii": ["#)", "%)", "X)"]
237 | }, {
238 | "emoji": "😲",
239 | "description": "astonished face",
240 | "aliases": ["astonished"],
241 | "tags": ["amazed", "gasp"]
242 | }, {
243 | "emoji": "😟",
244 | "description": "worried face",
245 | "aliases": ["worried"],
246 | "tags": ["nervous"],
247 | "ascii": ":S"
248 | }, {
249 | "emoji": "😦",
250 | "description": "frowning face with open mouth",
251 | "aliases": ["frowning"],
252 | "tags": []
253 | }, {
254 | "emoji": "😧",
255 | "description": "anguished face",
256 | "aliases": ["anguished"],
257 | "tags": ["stunned"]
258 | }, {
259 | "emoji": "😈",
260 | "description": "smiling face with horns",
261 | "aliases": ["smiling_imp"],
262 | "tags": ["devil", "evil", "horns"]
263 | }, {
264 | "emoji": "👿",
265 | "description": "imp",
266 | "aliases": ["imp"],
267 | "tags": ["angry", "devil", "evil", "horns"]
268 | }, {
269 | "emoji": "😮",
270 | "description": "face with open mouth",
271 | "aliases": ["open_mouth"],
272 | "tags": ["surprise", "impressed", "wow"],
273 | "ascii": ":O"
274 | }, {
275 | "emoji": "😬",
276 | "description": "grimacing face",
277 | "aliases": ["grimacing"],
278 | "tags": []
279 | }, {
280 | "emoji": "😐",
281 | "description": "neutral face",
282 | "aliases": ["neutral_face"],
283 | "tags": ["meh"],
284 | "ascii": ":|"
285 | }, {
286 | "emoji": "😕",
287 | "description": "confused face",
288 | "aliases": ["confused"],
289 | "tags": [],
290 | "ascii": [":/", ":\\"]
291 | }, {
292 | "emoji": "😯",
293 | "description": "hushed face",
294 | "aliases": ["hushed"],
295 | "tags": ["silence", "speechless"]
296 | }, {
297 | "emoji": "😶",
298 | "description": "face without mouth",
299 | "aliases": ["no_mouth"],
300 | "tags": ["mute", "silence"],
301 | "ascii": ":X"
302 | }, {
303 | "emoji": "😇",
304 | "description": "smiling face with halo",
305 | "aliases": ["innocent"],
306 | "tags": ["angel"],
307 | "ascii": "(A)"
308 | }, {
309 | "emoji": "😏",
310 | "description": "smirking face",
311 | "aliases": ["smirk"],
312 | "tags": ["smug"]
313 | }, {
314 | "emoji": "😑",
315 | "description": "expressionless face",
316 | "aliases": ["expressionless"],
317 | "tags": [],
318 | "ascii": ["-.-", "-_-"]
319 | }, {
320 | "emoji": "👲",
321 | "description": "man with gua pi mao",
322 | "aliases": ["man_with_gua_pi_mao"],
323 | "tags": []
324 | }, {
325 | "emoji": "👳",
326 | "description": "man with turban",
327 | "aliases": ["man_with_turban"],
328 | "tags": [],
329 | "ascii": "@:)"
330 | }, {
331 | "emoji": "👮",
332 | "description": "police officer",
333 | "aliases": ["cop"],
334 | "tags": ["police", "law"]
335 | }, {
336 | "emoji": "👷",
337 | "description": "construction worker",
338 | "aliases": ["construction_worker"],
339 | "tags": ["helmet"]
340 | }, {
341 | "emoji": "💂",
342 | "description": "guardsman",
343 | "aliases": ["guardsman"],
344 | "tags": []
345 | }, {
346 | "emoji": "👶",
347 | "description": "baby",
348 | "aliases": ["baby"],
349 | "tags": ["child", "newborn"]
350 | }, {
351 | "emoji": "👦",
352 | "description": "boy",
353 | "aliases": ["boy"],
354 | "tags": ["child"]
355 | }, {
356 | "emoji": "👧",
357 | "description": "girl",
358 | "aliases": ["girl"],
359 | "tags": ["child"]
360 | }, {
361 | "emoji": "👨",
362 | "description": "man",
363 | "aliases": ["man"],
364 | "tags": ["mustache", "father", "dad"]
365 | }, {
366 | "emoji": "👩",
367 | "description": "woman",
368 | "aliases": ["woman"],
369 | "tags": ["girls"]
370 | }, {
371 | "emoji": "👴",
372 | "description": "older man",
373 | "aliases": ["older_man"],
374 | "tags": []
375 | }, {
376 | "emoji": "👵",
377 | "description": "older woman",
378 | "aliases": ["older_woman"],
379 | "tags": []
380 | }, {
381 | "emoji": "👱",
382 | "description": "person with blond hair",
383 | "aliases": ["person_with_blond_hair"],
384 | "tags": ["boy"]
385 | }, {
386 | "emoji": "👼",
387 | "description": "baby angel",
388 | "aliases": ["angel"],
389 | "tags": []
390 | }, {
391 | "emoji": "👸",
392 | "description": "princess",
393 | "aliases": ["princess"],
394 | "tags": ["blonde", "crown", "royal"]
395 | }, {
396 | "emoji": "😺",
397 | "description": "smiling cat face with open mouth",
398 | "aliases": ["smiley_cat"],
399 | "tags": []
400 | }, {
401 | "emoji": "😸",
402 | "description": "grinning cat face with smiling eyes",
403 | "aliases": ["smile_cat"],
404 | "tags": []
405 | }, {
406 | "emoji": "😻",
407 | "description": "smiling cat face with heart-shaped eyes",
408 | "aliases": ["heart_eyes_cat"],
409 | "tags": []
410 | }, {
411 | "emoji": "😽",
412 | "description": "kissing cat face with closed eyes",
413 | "aliases": ["kissing_cat"],
414 | "tags": []
415 | }, {
416 | "emoji": "😼",
417 | "description": "cat face with wry smile",
418 | "aliases": ["smirk_cat"],
419 | "tags": []
420 | }, {
421 | "emoji": "🙀",
422 | "description": "weary cat face",
423 | "aliases": ["scream_cat"],
424 | "tags": ["horror"]
425 | }, {
426 | "emoji": "😿",
427 | "description": "crying cat face",
428 | "aliases": ["crying_cat_face"],
429 | "tags": ["sad", "tear"]
430 | }, {
431 | "emoji": "😹",
432 | "description": "cat face with tears of joy",
433 | "aliases": ["joy_cat"],
434 | "tags": []
435 | }, {
436 | "emoji": "😾",
437 | "description": "pouting cat face",
438 | "aliases": ["pouting_cat"],
439 | "tags": []
440 | }, {
441 | "emoji": "👹",
442 | "description": "japanese ogre",
443 | "aliases": ["japanese_ogre"],
444 | "tags": ["monster"]
445 | }, {
446 | "emoji": "👺",
447 | "description": "japanese goblin",
448 | "aliases": ["japanese_goblin"],
449 | "tags": []
450 | }, {
451 | "emoji": "🙈",
452 | "description": "see-no-evil monkey",
453 | "aliases": ["see_no_evil"],
454 | "tags": ["monkey", "blind", "ignore"]
455 | }, {
456 | "emoji": "🙉",
457 | "description": "hear-no-evil monkey",
458 | "aliases": ["hear_no_evil"],
459 | "tags": ["monkey", "deaf"]
460 | }, {
461 | "emoji": "🙊",
462 | "description": "speak-no-evil monkey",
463 | "aliases": ["speak_no_evil"],
464 | "tags": ["monkey", "mute", "hush"]
465 | }, {
466 | "emoji": "💀",
467 | "description": "skull",
468 | "aliases": ["skull"],
469 | "tags": ["dead", "danger", "poison"]
470 | }, {
471 | "emoji": "👽",
472 | "description": "extraterrestrial alien",
473 | "aliases": ["alien"],
474 | "tags": ["ufo"]
475 | }, {
476 | "emoji": "💩",
477 | "description": "pile of poo",
478 | "aliases": ["hankey", "poop", "shit"],
479 | "tags": ["crap"]
480 | }, {
481 | "emoji": "🔥",
482 | "description": "fire",
483 | "aliases": ["fire"],
484 | "tags": ["burn"]
485 | }, {
486 | "emoji": "✨",
487 | "description": "sparkles",
488 | "aliases": ["sparkles"],
489 | "tags": ["shiny"]
490 | }, {
491 | "emoji": "🌟",
492 | "description": "glowing star",
493 | "aliases": ["star2"],
494 | "tags": []
495 | }, {
496 | "emoji": "💫",
497 | "description": "dizzy symbol",
498 | "aliases": ["dizzy"],
499 | "tags": ["star"]
500 | }, {
501 | "emoji": "💥",
502 | "description": "collision symbol",
503 | "aliases": ["boom", "collision"],
504 | "tags": ["explode"]
505 | }, {
506 | "emoji": "💢",
507 | "description": "anger symbol",
508 | "aliases": ["anger"],
509 | "tags": ["angry"]
510 | }, {
511 | "emoji": "💦",
512 | "description": "splashing sweat symbol",
513 | "aliases": ["sweat_drops"],
514 | "tags": ["water", "workout"]
515 | }, {
516 | "emoji": "💧",
517 | "description": "droplet",
518 | "aliases": ["droplet"],
519 | "tags": ["water"]
520 | }, {
521 | "emoji": "💤",
522 | "description": "sleeping symbol",
523 | "aliases": ["zzz"],
524 | "tags": ["sleeping"]
525 | }, {
526 | "emoji": "💨",
527 | "description": "dash symbol",
528 | "aliases": ["dash"],
529 | "tags": ["wind", "blow", "fast"]
530 | }, {
531 | "emoji": "👂",
532 | "description": "ear",
533 | "aliases": ["ear"],
534 | "tags": ["hear", "sound", "listen"]
535 | }, {
536 | "emoji": "👀",
537 | "description": "eyes",
538 | "aliases": ["eyes"],
539 | "tags": ["look", "see", "watch"]
540 | }, {
541 | "emoji": "👃",
542 | "description": "nose",
543 | "aliases": ["nose"],
544 | "tags": ["smell"]
545 | }, {
546 | "emoji": "👅",
547 | "description": "tongue",
548 | "aliases": ["tongue"],
549 | "tags": ["taste"]
550 | }, {
551 | "emoji": "👄",
552 | "description": "mouth",
553 | "aliases": ["lips"],
554 | "tags": ["kiss"]
555 | }, {
556 | "emoji": "👍",
557 | "description": "thumbs up sign",
558 | "aliases": ["+1", "thumbsup"],
559 | "tags": ["approve", "ok"]
560 | }, {
561 | "emoji": "👎",
562 | "description": "thumbs down sign",
563 | "aliases": ["-1", "thumbsdown"],
564 | "tags": ["disapprove", "bury"]
565 | }, {
566 | "emoji": "👌",
567 | "description": "ok hand sign",
568 | "aliases": ["ok_hand"],
569 | "tags": []
570 | }, {
571 | "emoji": "👊",
572 | "description": "fisted hand sign",
573 | "aliases": ["facepunch", "punch"],
574 | "tags": ["attack"]
575 | }, {
576 | "emoji": "✊",
577 | "description": "raised fist",
578 | "aliases": ["fist"],
579 | "tags": ["power"]
580 | }, {
581 | "emoji": "✌️",
582 | "description": "victory hand",
583 | "aliases": ["v"],
584 | "tags": ["victory", "peace"]
585 | }, {
586 | "emoji": "👋",
587 | "description": "waving hand sign",
588 | "aliases": ["wave"],
589 | "tags": ["goodbye"]
590 | }, {
591 | "emoji": "✋",
592 | "description": "raised hand",
593 | "aliases": ["hand", "raised_hand"],
594 | "tags": ["highfive", "stop"]
595 | }, {
596 | "emoji": "👐",
597 | "description": "open hands sign",
598 | "aliases": ["open_hands"],
599 | "tags": []
600 | }, {
601 | "emoji": "👆",
602 | "description": "white up pointing backhand index",
603 | "aliases": ["point_up_2"],
604 | "tags": []
605 | }, {
606 | "emoji": "👇",
607 | "description": "white down pointing backhand index",
608 | "aliases": ["point_down"],
609 | "tags": []
610 | }, {
611 | "emoji": "👉",
612 | "description": "white right pointing backhand index",
613 | "aliases": ["point_right"],
614 | "tags": []
615 | }, {
616 | "emoji": "👈",
617 | "description": "white left pointing backhand index",
618 | "aliases": ["point_left"],
619 | "tags": []
620 | }, {
621 | "emoji": "🙌",
622 | "description": "person raising both hands in celebration",
623 | "aliases": ["raised_hands"],
624 | "tags": ["hooray"]
625 | }, {
626 | "emoji": "🙏",
627 | "description": "person with folded hands",
628 | "aliases": ["pray"],
629 | "tags": ["please", "hope", "wish"]
630 | }, {
631 | "emoji": "☝️",
632 | "description": "white up pointing index",
633 | "aliases": ["point_up"],
634 | "tags": []
635 | }, {
636 | "emoji": "👏",
637 | "description": "clapping hands sign",
638 | "aliases": ["clap"],
639 | "tags": ["praise", "applause"]
640 | }, {
641 | "emoji": "💪",
642 | "description": "flexed biceps",
643 | "aliases": ["muscle"],
644 | "tags": ["flex", "bicep", "strong", "workout"]
645 | }, {
646 | "emoji": "🚶",
647 | "description": "pedestrian",
648 | "aliases": ["walking"],
649 | "tags": []
650 | }, {
651 | "emoji": "🏃",
652 | "description": "runner",
653 | "aliases": ["runner", "running"],
654 | "tags": ["exercise", "workout", "marathon"]
655 | }, {
656 | "emoji": "💃",
657 | "description": "dancer",
658 | "aliases": ["dancer"],
659 | "tags": ["dress"]
660 | }, {
661 | "emoji": "👫",
662 | "description": "man and woman holding hands",
663 | "aliases": ["couple"],
664 | "tags": ["date"]
665 | }, {
666 | "emoji": "👪",
667 | "description": "family",
668 | "aliases": ["family"],
669 | "tags": ["home", "parents", "child"]
670 | }, {
671 | "emoji": "👬",
672 | "description": "two men holding hands",
673 | "aliases": ["two_men_holding_hands"],
674 | "tags": ["couple", "date"]
675 | }, {
676 | "emoji": "👭",
677 | "description": "two women holding hands",
678 | "aliases": ["two_women_holding_hands"],
679 | "tags": ["couple", "date"]
680 | }, {
681 | "emoji": "💏",
682 | "description": "kiss",
683 | "aliases": ["couplekiss"],
684 | "tags": []
685 | }, {
686 | "emoji": "💑",
687 | "description": "couple with heart",
688 | "aliases": ["couple_with_heart"],
689 | "tags": []
690 | }, {
691 | "emoji": "👯",
692 | "description": "woman with bunny ears",
693 | "aliases": ["dancers"],
694 | "tags": ["bunny"]
695 | }, {
696 | "emoji": "🙆",
697 | "description": "face with ok gesture",
698 | "aliases": ["ok_woman"],
699 | "tags": []
700 | }, {
701 | "emoji": "🙅",
702 | "description": "face with no good gesture",
703 | "aliases": ["no_good"],
704 | "tags": ["stop", "halt"]
705 | }, {
706 | "emoji": "💁",
707 | "description": "information desk person",
708 | "aliases": ["information_desk_person"],
709 | "tags": []
710 | }, {
711 | "emoji": "🙋",
712 | "description": "happy person raising one hand",
713 | "aliases": ["raising_hand"],
714 | "tags": []
715 | }, {
716 | "emoji": "💆",
717 | "description": "face massage",
718 | "aliases": ["massage"],
719 | "tags": ["spa"]
720 | }, {
721 | "emoji": "💇",
722 | "description": "haircut",
723 | "aliases": ["haircut"],
724 | "tags": ["beauty"]
725 | }, {
726 | "emoji": "💅",
727 | "description": "nail polish",
728 | "aliases": ["nail_care"],
729 | "tags": ["beauty", "manicure"]
730 | }, {
731 | "emoji": "👰",
732 | "description": "bride with veil",
733 | "aliases": ["bride_with_veil"],
734 | "tags": ["marriage", "wedding"]
735 | }, {
736 | "emoji": "🙎",
737 | "description": "person with pouting face",
738 | "aliases": ["person_with_pouting_face"],
739 | "tags": []
740 | }, {
741 | "emoji": "🙍",
742 | "description": "person frowning",
743 | "aliases": ["person_frowning"],
744 | "tags": ["sad"]
745 | }, {
746 | "emoji": "🙇",
747 | "description": "person bowing deeply",
748 | "aliases": ["bow"],
749 | "tags": ["respect", "thanks"]
750 | }, {
751 | "emoji": "🎩",
752 | "description": "top hat",
753 | "aliases": ["tophat"],
754 | "tags": ["hat", "classy"]
755 | }, {
756 | "emoji": "👑",
757 | "description": "crown",
758 | "aliases": ["crown"],
759 | "tags": ["king", "queen", "royal"]
760 | }, {
761 | "emoji": "👒",
762 | "description": "womans hat",
763 | "aliases": ["womans_hat"],
764 | "tags": []
765 | }, {
766 | "emoji": "👟",
767 | "description": "athletic shoe",
768 | "aliases": ["athletic_shoe"],
769 | "tags": ["sneaker", "sport", "running"]
770 | }, {
771 | "emoji": "👞",
772 | "description": "mans shoe",
773 | "aliases": ["mans_shoe", "shoe"],
774 | "tags": []
775 | }, {
776 | "emoji": "👡",
777 | "description": "womans sandal",
778 | "aliases": ["sandal"],
779 | "tags": ["shoe"]
780 | }, {
781 | "emoji": "👠",
782 | "description": "high-heeled shoe",
783 | "aliases": ["high_heel"],
784 | "tags": ["shoe"]
785 | }, {
786 | "emoji": "👢",
787 | "description": "womans boots",
788 | "aliases": ["boot"],
789 | "tags": []
790 | }, {
791 | "emoji": "👕",
792 | "description": "t-shirt",
793 | "aliases": ["shirt", "tshirt"],
794 | "tags": []
795 | }, {
796 | "emoji": "👔",
797 | "description": "necktie",
798 | "aliases": ["necktie"],
799 | "tags": ["shirt", "formal"]
800 | }, {
801 | "emoji": "👚",
802 | "description": "womans clothes",
803 | "aliases": ["womans_clothes"],
804 | "tags": []
805 | }, {
806 | "emoji": "👗",
807 | "description": "dress",
808 | "aliases": ["dress"],
809 | "tags": []
810 | }, {
811 | "emoji": "🎽",
812 | "description": "running shirt with sash",
813 | "aliases": ["running_shirt_with_sash"],
814 | "tags": ["marathon"]
815 | }, {
816 | "emoji": "👖",
817 | "description": "jeans",
818 | "aliases": ["jeans"],
819 | "tags": ["pants"]
820 | }, {
821 | "emoji": "👘",
822 | "description": "kimono",
823 | "aliases": ["kimono"],
824 | "tags": []
825 | }, {
826 | "emoji": "👙",
827 | "description": "bikini",
828 | "aliases": ["bikini"],
829 | "tags": ["beach"]
830 | }, {
831 | "emoji": "💼",
832 | "description": "briefcase",
833 | "aliases": ["briefcase"],
834 | "tags": ["business"]
835 | }, {
836 | "emoji": "👜",
837 | "description": "handbag",
838 | "aliases": ["handbag"],
839 | "tags": ["bag"]
840 | }, {
841 | "emoji": "👝",
842 | "description": "pouch",
843 | "aliases": ["pouch"],
844 | "tags": ["bag"]
845 | }, {
846 | "emoji": "👛",
847 | "description": "purse",
848 | "aliases": ["purse"],
849 | "tags": []
850 | }, {
851 | "emoji": "👓",
852 | "description": "eyeglasses",
853 | "aliases": ["eyeglasses"],
854 | "tags": ["glasses"]
855 | }, {
856 | "emoji": "🎀",
857 | "description": "ribbon",
858 | "aliases": ["ribbon"],
859 | "tags": []
860 | }, {
861 | "emoji": "🌂",
862 | "description": "closed umbrella",
863 | "aliases": ["closed_umbrella"],
864 | "tags": ["weather", "rain"]
865 | }, {
866 | "emoji": "💄",
867 | "description": "lipstick",
868 | "aliases": ["lipstick"],
869 | "tags": ["makeup"]
870 | }, {
871 | "emoji": "💛",
872 | "description": "yellow heart",
873 | "aliases": ["yellow_heart"],
874 | "tags": []
875 | }, {
876 | "emoji": "💙",
877 | "description": "blue heart",
878 | "aliases": ["blue_heart"],
879 | "tags": []
880 | }, {
881 | "emoji": "💜",
882 | "description": "purple heart",
883 | "aliases": ["purple_heart"],
884 | "tags": []
885 | }, {
886 | "emoji": "💚",
887 | "description": "green heart",
888 | "aliases": ["green_heart"],
889 | "tags": []
890 | }, {
891 | "emoji": "❤️",
892 | "description": "heavy black heart",
893 | "aliases": ["heart"],
894 | "tags": ["love"],
895 | "ascii": "<3"
896 | }, {
897 | "emoji": "💔",
898 | "description": "broken heart",
899 | "aliases": ["broken_heart"],
900 | "tags": []
901 | }, {
902 | "emoji": "💗",
903 | "description": "growing heart",
904 | "aliases": ["heartpulse"],
905 | "tags": []
906 | }, {
907 | "emoji": "💓",
908 | "description": "beating heart",
909 | "aliases": ["heartbeat"],
910 | "tags": []
911 | }, {
912 | "emoji": "💕",
913 | "description": "two hearts",
914 | "aliases": ["two_hearts"],
915 | "tags": []
916 | }, {
917 | "emoji": "💖",
918 | "description": "sparkling heart",
919 | "aliases": ["sparkling_heart"],
920 | "tags": []
921 | }, {
922 | "emoji": "💞",
923 | "description": "revolving hearts",
924 | "aliases": ["revolving_hearts"],
925 | "tags": []
926 | }, {
927 | "emoji": "💘",
928 | "description": "heart with arrow",
929 | "aliases": ["cupid"],
930 | "tags": ["love", "heart"]
931 | }, {
932 | "emoji": "💌",
933 | "description": "love letter",
934 | "aliases": ["love_letter"],
935 | "tags": ["email", "envelope"]
936 | }, {
937 | "emoji": "💋",
938 | "description": "kiss mark",
939 | "aliases": ["kiss"],
940 | "tags": ["lipstick"]
941 | }, {
942 | "emoji": "💍",
943 | "description": "ring",
944 | "aliases": ["ring"],
945 | "tags": ["wedding", "marriage", "engaged"]
946 | }, {
947 | "emoji": "💎",
948 | "description": "gem stone",
949 | "aliases": ["gem"],
950 | "tags": ["diamond"]
951 | }, {
952 | "emoji": "👤",
953 | "description": "bust in silhouette",
954 | "aliases": ["bust_in_silhouette"],
955 | "tags": ["user"]
956 | }, {
957 | "emoji": "👥",
958 | "description": "busts in silhouette",
959 | "aliases": ["busts_in_silhouette"],
960 | "tags": ["users", "group", "team"]
961 | }, {
962 | "emoji": "💬",
963 | "description": "speech balloon",
964 | "aliases": ["speech_balloon"],
965 | "tags": ["comment"]
966 | }, {
967 | "emoji": "👣",
968 | "description": "footprints",
969 | "aliases": ["footprints"],
970 | "tags": ["feet", "tracks"]
971 | }, {
972 | "emoji": "💭",
973 | "description": "thought balloon",
974 | "aliases": ["thought_balloon"],
975 | "tags": ["thinking"]
976 | }, {
977 | "emoji": "🐶",
978 | "description": "dog face",
979 | "aliases": ["dog"],
980 | "tags": ["pet"]
981 | }, {
982 | "emoji": "🐺",
983 | "description": "wolf face",
984 | "aliases": ["wolf"],
985 | "tags": []
986 | }, {
987 | "emoji": "🐱",
988 | "description": "cat face",
989 | "aliases": ["cat"],
990 | "tags": ["pet"]
991 | }, {
992 | "emoji": "🐭",
993 | "description": "mouse face",
994 | "aliases": ["mouse"],
995 | "tags": []
996 | }, {
997 | "emoji": "🐹",
998 | "description": "hamster face",
999 | "aliases": ["hamster"],
1000 | "tags": ["pet"]
1001 | }, {
1002 | "emoji": "🐰",
1003 | "description": "rabbit face",
1004 | "aliases": ["rabbit"],
1005 | "tags": ["bunny"]
1006 | }, {
1007 | "emoji": "🐸",
1008 | "description": "frog face",
1009 | "aliases": ["frog"],
1010 | "tags": []
1011 | }, {
1012 | "emoji": "🐯",
1013 | "description": "tiger face",
1014 | "aliases": ["tiger"],
1015 | "tags": []
1016 | }, {
1017 | "emoji": "🐨",
1018 | "description": "koala",
1019 | "aliases": ["koala"],
1020 | "tags": []
1021 | }, {
1022 | "emoji": "🐻",
1023 | "description": "bear face",
1024 | "aliases": ["bear"],
1025 | "tags": []
1026 | }, {
1027 | "emoji": "🐷",
1028 | "description": "pig face",
1029 | "aliases": ["pig"],
1030 | "tags": []
1031 | }, {
1032 | "emoji": "🐽",
1033 | "description": "pig nose",
1034 | "aliases": ["pig_nose"],
1035 | "tags": []
1036 | }, {
1037 | "emoji": "🐮",
1038 | "description": "cow face",
1039 | "aliases": ["cow"],
1040 | "tags": []
1041 | }, {
1042 | "emoji": "🐗",
1043 | "description": "boar",
1044 | "aliases": ["boar"],
1045 | "tags": []
1046 | }, {
1047 | "emoji": "🐵",
1048 | "description": "monkey face",
1049 | "aliases": ["monkey_face"],
1050 | "tags": []
1051 | }, {
1052 | "emoji": "🐒",
1053 | "description": "monkey",
1054 | "aliases": ["monkey"],
1055 | "tags": []
1056 | }, {
1057 | "emoji": "🐴",
1058 | "description": "horse face",
1059 | "aliases": ["horse"],
1060 | "tags": []
1061 | }, {
1062 | "emoji": "🐑",
1063 | "description": "sheep",
1064 | "aliases": ["sheep"],
1065 | "tags": []
1066 | }, {
1067 | "emoji": "🐘",
1068 | "description": "elephant",
1069 | "aliases": ["elephant"],
1070 | "tags": []
1071 | }, {
1072 | "emoji": "🐼",
1073 | "description": "panda face",
1074 | "aliases": ["panda_face"],
1075 | "tags": []
1076 | }, {
1077 | "emoji": "🐧",
1078 | "description": "penguin",
1079 | "aliases": ["penguin"],
1080 | "tags": []
1081 | }, {
1082 | "emoji": "🐦",
1083 | "description": "bird",
1084 | "aliases": ["bird"],
1085 | "tags": []
1086 | }, {
1087 | "emoji": "🐤",
1088 | "description": "baby chick",
1089 | "aliases": ["baby_chick"],
1090 | "tags": []
1091 | }, {
1092 | "emoji": "🐥",
1093 | "description": "front-facing baby chick",
1094 | "aliases": ["hatched_chick"],
1095 | "tags": []
1096 | }, {
1097 | "emoji": "🐣",
1098 | "description": "hatching chick",
1099 | "aliases": ["hatching_chick"],
1100 | "tags": []
1101 | }, {
1102 | "emoji": "🐔",
1103 | "description": "chicken",
1104 | "aliases": ["chicken"],
1105 | "tags": []
1106 | }, {
1107 | "emoji": "🐍",
1108 | "description": "snake",
1109 | "aliases": ["snake"],
1110 | "tags": []
1111 | }, {
1112 | "emoji": "🐢",
1113 | "description": "turtle",
1114 | "aliases": ["turtle"],
1115 | "tags": ["slow"]
1116 | }, {
1117 | "emoji": "🐛",
1118 | "description": "bug",
1119 | "aliases": ["bug"],
1120 | "tags": []
1121 | }, {
1122 | "emoji": "🐝",
1123 | "description": "honeybee",
1124 | "aliases": ["bee", "honeybee"],
1125 | "tags": []
1126 | }, {
1127 | "emoji": "🐜",
1128 | "description": "ant",
1129 | "aliases": ["ant"],
1130 | "tags": []
1131 | }, {
1132 | "emoji": "🐞",
1133 | "description": "lady beetle",
1134 | "aliases": ["beetle"],
1135 | "tags": ["bug"]
1136 | }, {
1137 | "emoji": "🐌",
1138 | "description": "snail",
1139 | "aliases": ["snail"],
1140 | "tags": ["slow"]
1141 | }, {
1142 | "emoji": "🐙",
1143 | "description": "octopus",
1144 | "aliases": ["octopus"],
1145 | "tags": []
1146 | }, {
1147 | "emoji": "🐚",
1148 | "description": "spiral shell",
1149 | "aliases": ["shell"],
1150 | "tags": ["sea", "beach"]
1151 | }, {
1152 | "emoji": "🐠",
1153 | "description": "tropical fish",
1154 | "aliases": ["tropical_fish"],
1155 | "tags": []
1156 | }, {
1157 | "emoji": "🐟",
1158 | "description": "fish",
1159 | "aliases": ["fish"],
1160 | "tags": []
1161 | }, {
1162 | "emoji": "🐬",
1163 | "description": "dolphin",
1164 | "aliases": ["dolphin", "flipper"],
1165 | "tags": []
1166 | }, {
1167 | "emoji": "🐳",
1168 | "description": "spouting whale",
1169 | "aliases": ["whale"],
1170 | "tags": ["sea"]
1171 | }, {
1172 | "emoji": "🐋",
1173 | "description": "whale",
1174 | "aliases": ["whale2"],
1175 | "tags": []
1176 | }, {
1177 | "emoji": "🐄",
1178 | "description": "cow",
1179 | "aliases": ["cow2"],
1180 | "tags": []
1181 | }, {
1182 | "emoji": "🐏",
1183 | "description": "ram",
1184 | "aliases": ["ram"],
1185 | "tags": []
1186 | }, {
1187 | "emoji": "🐀",
1188 | "description": "rat",
1189 | "aliases": ["rat"],
1190 | "tags": []
1191 | }, {
1192 | "emoji": "🐃",
1193 | "description": "water buffalo",
1194 | "aliases": ["water_buffalo"],
1195 | "tags": []
1196 | }, {
1197 | "emoji": "🐅",
1198 | "description": "tiger",
1199 | "aliases": ["tiger2"],
1200 | "tags": []
1201 | }, {
1202 | "emoji": "🐇",
1203 | "description": "rabbit",
1204 | "aliases": ["rabbit2"],
1205 | "tags": []
1206 | }, {
1207 | "emoji": "🐉",
1208 | "description": "dragon",
1209 | "aliases": ["dragon"],
1210 | "tags": []
1211 | }, {
1212 | "emoji": "🐎",
1213 | "description": "horse",
1214 | "aliases": ["racehorse"],
1215 | "tags": ["speed"]
1216 | }, {
1217 | "emoji": "🐐",
1218 | "description": "goat",
1219 | "aliases": ["goat"],
1220 | "tags": []
1221 | }, {
1222 | "emoji": "🐓",
1223 | "description": "rooster",
1224 | "aliases": ["rooster"],
1225 | "tags": []
1226 | }, {
1227 | "emoji": "🐕",
1228 | "description": "dog",
1229 | "aliases": ["dog2"],
1230 | "tags": []
1231 | }, {
1232 | "emoji": "🐖",
1233 | "description": "pig",
1234 | "aliases": ["pig2"],
1235 | "tags": []
1236 | }, {
1237 | "emoji": "🐁",
1238 | "description": "mouse",
1239 | "aliases": ["mouse2"],
1240 | "tags": []
1241 | }, {
1242 | "emoji": "🐂",
1243 | "description": "ox",
1244 | "aliases": ["ox"],
1245 | "tags": []
1246 | }, {
1247 | "emoji": "🐲",
1248 | "description": "dragon face",
1249 | "aliases": ["dragon_face"],
1250 | "tags": []
1251 | }, {
1252 | "emoji": "🐡",
1253 | "description": "blowfish",
1254 | "aliases": ["blowfish"],
1255 | "tags": []
1256 | }, {
1257 | "emoji": "🐊",
1258 | "description": "crocodile",
1259 | "aliases": ["crocodile"],
1260 | "tags": []
1261 | }, {
1262 | "emoji": "🐫",
1263 | "description": "bactrian camel",
1264 | "aliases": ["camel"],
1265 | "tags": []
1266 | }, {
1267 | "emoji": "🐪",
1268 | "description": "dromedary camel",
1269 | "aliases": ["dromedary_camel"],
1270 | "tags": ["desert"]
1271 | }, {
1272 | "emoji": "🐆",
1273 | "description": "leopard",
1274 | "aliases": ["leopard"],
1275 | "tags": []
1276 | }, {
1277 | "emoji": "🐈",
1278 | "description": "cat",
1279 | "aliases": ["cat2"],
1280 | "tags": []
1281 | }, {
1282 | "emoji": "🐩",
1283 | "description": "poodle",
1284 | "aliases": ["poodle"],
1285 | "tags": ["dog"]
1286 | }, {
1287 | "emoji": "🐾",
1288 | "description": "paw prints",
1289 | "aliases": ["feet", "paw_prints"],
1290 | "tags": []
1291 | }, {
1292 | "emoji": "💐",
1293 | "description": "bouquet",
1294 | "aliases": ["bouquet"],
1295 | "tags": ["flowers"]
1296 | }, {
1297 | "emoji": "🌸",
1298 | "description": "cherry blossom",
1299 | "aliases": ["cherry_blossom"],
1300 | "tags": ["flower", "spring"]
1301 | }, {
1302 | "emoji": "🌷",
1303 | "description": "tulip",
1304 | "aliases": ["tulip"],
1305 | "tags": ["flower"]
1306 | }, {
1307 | "emoji": "🍀",
1308 | "description": "four leaf clover",
1309 | "aliases": ["four_leaf_clover"],
1310 | "tags": ["luck"]
1311 | }, {
1312 | "emoji": "🌹",
1313 | "description": "rose",
1314 | "aliases": ["rose"],
1315 | "tags": ["flower"]
1316 | }, {
1317 | "emoji": "🌻",
1318 | "description": "sunflower",
1319 | "aliases": ["sunflower"],
1320 | "tags": []
1321 | }, {
1322 | "emoji": "🌺",
1323 | "description": "hibiscus",
1324 | "aliases": ["hibiscus"],
1325 | "tags": []
1326 | }, {
1327 | "emoji": "🍁",
1328 | "description": "maple leaf",
1329 | "aliases": ["maple_leaf"],
1330 | "tags": ["canada"]
1331 | }, {
1332 | "emoji": "🍃",
1333 | "description": "leaf fluttering in wind",
1334 | "aliases": ["leaves"],
1335 | "tags": ["leaf"]
1336 | }, {
1337 | "emoji": "🍂",
1338 | "description": "fallen leaf",
1339 | "aliases": ["fallen_leaf"],
1340 | "tags": ["autumn"]
1341 | }, {
1342 | "emoji": "🌿",
1343 | "description": "herb",
1344 | "aliases": ["herb"],
1345 | "tags": []
1346 | }, {
1347 | "emoji": "🌾",
1348 | "description": "ear of rice",
1349 | "aliases": ["ear_of_rice"],
1350 | "tags": []
1351 | }, {
1352 | "emoji": "🍄",
1353 | "description": "mushroom",
1354 | "aliases": ["mushroom"],
1355 | "tags": []
1356 | }, {
1357 | "emoji": "🌵",
1358 | "description": "cactus",
1359 | "aliases": ["cactus"],
1360 | "tags": []
1361 | }, {
1362 | "emoji": "🌴",
1363 | "description": "palm tree",
1364 | "aliases": ["palm_tree"],
1365 | "tags": []
1366 | }, {
1367 | "emoji": "🌲",
1368 | "description": "evergreen tree",
1369 | "aliases": ["evergreen_tree"],
1370 | "tags": ["wood"]
1371 | }, {
1372 | "emoji": "🌳",
1373 | "description": "deciduous tree",
1374 | "aliases": ["deciduous_tree"],
1375 | "tags": ["wood"]
1376 | }, {
1377 | "emoji": "🌰",
1378 | "description": "chestnut",
1379 | "aliases": ["chestnut"],
1380 | "tags": []
1381 | }, {
1382 | "emoji": "🌱",
1383 | "description": "seedling",
1384 | "aliases": ["seedling"],
1385 | "tags": ["plant"]
1386 | }, {
1387 | "emoji": "🌼",
1388 | "description": "blossom",
1389 | "aliases": ["blossom"],
1390 | "tags": []
1391 | }, {
1392 | "emoji": "🌐",
1393 | "description": "globe with meridians",
1394 | "aliases": ["globe_with_meridians"],
1395 | "tags": ["world", "global", "international"]
1396 | }, {
1397 | "emoji": "🌞",
1398 | "description": "sun with face",
1399 | "aliases": ["sun_with_face"],
1400 | "tags": ["summer"]
1401 | }, {
1402 | "emoji": "🌝",
1403 | "description": "full moon with face",
1404 | "aliases": ["full_moon_with_face"],
1405 | "tags": []
1406 | }, {
1407 | "emoji": "🌚",
1408 | "description": "new moon with face",
1409 | "aliases": ["new_moon_with_face"],
1410 | "tags": []
1411 | }, {
1412 | "emoji": "🌑",
1413 | "description": "new moon symbol",
1414 | "aliases": ["new_moon"],
1415 | "tags": []
1416 | }, {
1417 | "emoji": "🌒",
1418 | "description": "waxing crescent moon symbol",
1419 | "aliases": ["waxing_crescent_moon"],
1420 | "tags": []
1421 | }, {
1422 | "emoji": "🌓",
1423 | "description": "first quarter moon symbol",
1424 | "aliases": ["first_quarter_moon"],
1425 | "tags": []
1426 | }, {
1427 | "emoji": "🌔",
1428 | "description": "waxing gibbous moon symbol",
1429 | "aliases": ["moon", "waxing_gibbous_moon"],
1430 | "tags": []
1431 | }, {
1432 | "emoji": "🌕",
1433 | "description": "full moon symbol",
1434 | "aliases": ["full_moon"],
1435 | "tags": []
1436 | }, {
1437 | "emoji": "🌖",
1438 | "description": "waning gibbous moon symbol",
1439 | "aliases": ["waning_gibbous_moon"],
1440 | "tags": []
1441 | }, {
1442 | "emoji": "🌗",
1443 | "description": "last quarter moon symbol",
1444 | "aliases": ["last_quarter_moon"],
1445 | "tags": []
1446 | }, {
1447 | "emoji": "🌘",
1448 | "description": "waning crescent moon symbol",
1449 | "aliases": ["waning_crescent_moon"],
1450 | "tags": []
1451 | }, {
1452 | "emoji": "🌜",
1453 | "description": "last quarter moon with face",
1454 | "aliases": ["last_quarter_moon_with_face"],
1455 | "tags": []
1456 | }, {
1457 | "emoji": "🌛",
1458 | "description": "first quarter moon with face",
1459 | "aliases": ["first_quarter_moon_with_face"],
1460 | "tags": []
1461 | }, {
1462 | "emoji": "🌙",
1463 | "description": "crescent moon",
1464 | "aliases": ["crescent_moon"],
1465 | "tags": ["night"]
1466 | }, {
1467 | "emoji": "🌍",
1468 | "description": "earth globe europe-africa",
1469 | "aliases": ["earth_africa"],
1470 | "tags": ["globe", "world", "international"]
1471 | }, {
1472 | "emoji": "🌎",
1473 | "description": "earth globe americas",
1474 | "aliases": ["earth_americas"],
1475 | "tags": ["globe", "world", "international"]
1476 | }, {
1477 | "emoji": "🌏",
1478 | "description": "earth globe asia-australia",
1479 | "aliases": ["earth_asia"],
1480 | "tags": ["globe", "world", "international"]
1481 | }, {
1482 | "emoji": "🌋",
1483 | "description": "volcano",
1484 | "aliases": ["volcano"],
1485 | "tags": []
1486 | }, {
1487 | "emoji": "🌌",
1488 | "description": "milky way",
1489 | "aliases": ["milky_way"],
1490 | "tags": []
1491 | }, {
1492 | "emoji": "🌠",
1493 | "description": "shooting star",
1494 | "aliases": ["stars"],
1495 | "tags": []
1496 | }, {
1497 | "emoji": "⭐",
1498 | "description": "white medium star",
1499 | "aliases": ["star"],
1500 | "tags": []
1501 | }, {
1502 | "emoji": "☀️",
1503 | "description": "black sun with rays",
1504 | "aliases": ["sunny"],
1505 | "tags": ["weather"]
1506 | }, {
1507 | "emoji": "⛅",
1508 | "description": "sun behind cloud",
1509 | "aliases": ["partly_sunny"],
1510 | "tags": ["weather", "cloud"]
1511 | }, {
1512 | "emoji": "☁️",
1513 | "description": "cloud",
1514 | "aliases": ["cloud"],
1515 | "tags": []
1516 | }, {
1517 | "emoji": "⚡",
1518 | "description": "high voltage sign",
1519 | "aliases": ["zap"],
1520 | "tags": ["lightning", "thunder"]
1521 | }, {
1522 | "emoji": "☔",
1523 | "description": "umbrella with rain drops",
1524 | "aliases": ["umbrella"],
1525 | "tags": ["rain", "weather"]
1526 | }, {
1527 | "emoji": "❄️",
1528 | "description": "snowflake",
1529 | "aliases": ["snowflake"],
1530 | "tags": ["winter", "cold", "weather"]
1531 | }, {
1532 | "emoji": "⛄",
1533 | "description": "snowman without snow",
1534 | "aliases": ["snowman"],
1535 | "tags": ["winter", "christmas"]
1536 | }, {
1537 | "emoji": "🌀",
1538 | "description": "cyclone",
1539 | "aliases": ["cyclone"],
1540 | "tags": ["swirl"]
1541 | }, {
1542 | "emoji": "🌁",
1543 | "description": "foggy",
1544 | "aliases": ["foggy"],
1545 | "tags": ["karl"]
1546 | }, {
1547 | "emoji": "🌈",
1548 | "description": "rainbow",
1549 | "aliases": ["rainbow"],
1550 | "tags": ["pride"]
1551 | }, {
1552 | "emoji": "🌊",
1553 | "description": "water wave",
1554 | "aliases": ["ocean"],
1555 | "tags": ["sea"]
1556 | }, {
1557 | "emoji": "🎍",
1558 | "description": "pine decoration",
1559 | "aliases": ["bamboo"],
1560 | "tags": []
1561 | }, {
1562 | "emoji": "💝",
1563 | "description": "heart with ribbon",
1564 | "aliases": ["gift_heart"],
1565 | "tags": ["chocolates"]
1566 | }, {
1567 | "emoji": "🎎",
1568 | "description": "japanese dolls",
1569 | "aliases": ["dolls"],
1570 | "tags": []
1571 | }, {
1572 | "emoji": "🎒",
1573 | "description": "school satchel",
1574 | "aliases": ["school_satchel"],
1575 | "tags": []
1576 | }, {
1577 | "emoji": "🎓",
1578 | "description": "graduation cap",
1579 | "aliases": ["mortar_board"],
1580 | "tags": ["education", "college", "university", "graduation"]
1581 | }, {
1582 | "emoji": "🎏",
1583 | "description": "carp streamer",
1584 | "aliases": ["flags"],
1585 | "tags": []
1586 | }, {
1587 | "emoji": "🎆",
1588 | "description": "fireworks",
1589 | "aliases": ["fireworks"],
1590 | "tags": ["festival", "celebration"]
1591 | }, {
1592 | "emoji": "🎇",
1593 | "description": "firework sparkler",
1594 | "aliases": ["sparkler"],
1595 | "tags": []
1596 | }, {
1597 | "emoji": "🎐",
1598 | "description": "wind chime",
1599 | "aliases": ["wind_chime"],
1600 | "tags": []
1601 | }, {
1602 | "emoji": "🎑",
1603 | "description": "moon viewing ceremony",
1604 | "aliases": ["rice_scene"],
1605 | "tags": []
1606 | }, {
1607 | "emoji": "🎃",
1608 | "description": "jack-o-lantern",
1609 | "aliases": ["jack_o_lantern"],
1610 | "tags": ["halloween"]
1611 | }, {
1612 | "emoji": "👻",
1613 | "description": "ghost",
1614 | "aliases": ["ghost"],
1615 | "tags": ["halloween"]
1616 | }, {
1617 | "emoji": "🎅",
1618 | "description": "father christmas",
1619 | "aliases": ["santa"],
1620 | "tags": ["christmas"]
1621 | }, {
1622 | "emoji": "🎄",
1623 | "description": "christmas tree",
1624 | "aliases": ["christmas_tree"],
1625 | "tags": []
1626 | }, {
1627 | "emoji": "🎁",
1628 | "description": "wrapped present",
1629 | "aliases": ["gift"],
1630 | "tags": ["present", "birthday", "christmas"]
1631 | }, {
1632 | "emoji": "🎋",
1633 | "description": "tanabata tree",
1634 | "aliases": ["tanabata_tree"],
1635 | "tags": []
1636 | }, {
1637 | "emoji": "🎉",
1638 | "description": "party popper",
1639 | "aliases": ["tada"],
1640 | "tags": ["party"]
1641 | }, {
1642 | "emoji": "🎊",
1643 | "description": "confetti ball",
1644 | "aliases": ["confetti_ball"],
1645 | "tags": []
1646 | }, {
1647 | "emoji": "🎈",
1648 | "description": "balloon",
1649 | "aliases": ["balloon"],
1650 | "tags": ["party", "birthday"]
1651 | }, {
1652 | "emoji": "🎌",
1653 | "description": "crossed flags",
1654 | "aliases": ["crossed_flags"],
1655 | "tags": []
1656 | }, {
1657 | "emoji": "🔮",
1658 | "description": "crystal ball",
1659 | "aliases": ["crystal_ball"],
1660 | "tags": ["fortune"]
1661 | }, {
1662 | "emoji": "🎥",
1663 | "description": "movie camera",
1664 | "aliases": ["movie_camera"],
1665 | "tags": ["film", "video"]
1666 | }, {
1667 | "emoji": "📷",
1668 | "description": "camera",
1669 | "aliases": ["camera"],
1670 | "tags": ["photo"]
1671 | }, {
1672 | "emoji": "📹",
1673 | "description": "video camera",
1674 | "aliases": ["video_camera"],
1675 | "tags": []
1676 | }, {
1677 | "emoji": "📼",
1678 | "description": "videocassette",
1679 | "aliases": ["vhs"],
1680 | "tags": []
1681 | }, {
1682 | "emoji": "💿",
1683 | "description": "optical disc",
1684 | "aliases": ["cd"],
1685 | "tags": []
1686 | }, {
1687 | "emoji": "📀",
1688 | "description": "dvd",
1689 | "aliases": ["dvd"],
1690 | "tags": []
1691 | }, {
1692 | "emoji": "💽",
1693 | "description": "minidisc",
1694 | "aliases": ["minidisc"],
1695 | "tags": []
1696 | }, {
1697 | "emoji": "💾",
1698 | "description": "floppy disk",
1699 | "aliases": ["floppy_disk"],
1700 | "tags": ["save"]
1701 | }, {
1702 | "emoji": "💻",
1703 | "description": "personal computer",
1704 | "aliases": ["computer"],
1705 | "tags": ["desktop", "screen"]
1706 | }, {
1707 | "emoji": "📱",
1708 | "description": "mobile phone",
1709 | "aliases": ["iphone"],
1710 | "tags": ["smartphone", "mobile"]
1711 | }, {
1712 | "emoji": "☎️",
1713 | "description": "black telephone",
1714 | "aliases": ["phone", "telephone"],
1715 | "tags": []
1716 | }, {
1717 | "emoji": "📞",
1718 | "description": "telephone receiver",
1719 | "aliases": ["telephone_receiver"],
1720 | "tags": ["phone", "call"]
1721 | }, {
1722 | "emoji": "📟",
1723 | "description": "pager",
1724 | "aliases": ["pager"],
1725 | "tags": []
1726 | }, {
1727 | "emoji": "📠",
1728 | "description": "fax machine",
1729 | "aliases": ["fax"],
1730 | "tags": []
1731 | }, {
1732 | "emoji": "📡",
1733 | "description": "satellite antenna",
1734 | "aliases": ["satellite"],
1735 | "tags": ["signal"]
1736 | }, {
1737 | "emoji": "📺",
1738 | "description": "television",
1739 | "aliases": ["tv"],
1740 | "tags": []
1741 | }, {
1742 | "emoji": "📻",
1743 | "description": "radio",
1744 | "aliases": ["radio"],
1745 | "tags": ["podcast"]
1746 | }, {
1747 | "emoji": "🔊",
1748 | "description": "speaker with three sound waves",
1749 | "aliases": ["loud_sound"],
1750 | "tags": ["volume"]
1751 | }, {
1752 | "emoji": "🔉",
1753 | "description": "speaker with one sound wave",
1754 | "aliases": ["sound"],
1755 | "tags": ["volume"]
1756 | }, {
1757 | "emoji": "🔈",
1758 | "description": "speaker",
1759 | "aliases": ["speaker"],
1760 | "tags": []
1761 | }, {
1762 | "emoji": "🔇",
1763 | "description": "speaker with cancellation stroke",
1764 | "aliases": ["mute"],
1765 | "tags": ["sound", "volume"]
1766 | }, {
1767 | "emoji": "🔔",
1768 | "description": "bell",
1769 | "aliases": ["bell"],
1770 | "tags": ["sound", "notification"]
1771 | }, {
1772 | "emoji": "🔕",
1773 | "description": "bell with cancellation stroke",
1774 | "aliases": ["no_bell"],
1775 | "tags": ["volume", "off"]
1776 | }, {
1777 | "emoji": "📢",
1778 | "description": "public address loudspeaker",
1779 | "aliases": ["loudspeaker"],
1780 | "tags": ["announcement"]
1781 | }, {
1782 | "emoji": "📣",
1783 | "description": "cheering megaphone",
1784 | "aliases": ["mega"],
1785 | "tags": []
1786 | }, {
1787 | "emoji": "⏳",
1788 | "description": "hourglass with flowing sand",
1789 | "aliases": ["hourglass_flowing_sand"],
1790 | "tags": ["time"]
1791 | }, {
1792 | "emoji": "⌛",
1793 | "description": "hourglass",
1794 | "aliases": ["hourglass"],
1795 | "tags": ["time"]
1796 | }, {
1797 | "emoji": "⏰",
1798 | "description": "alarm clock",
1799 | "aliases": ["alarm_clock"],
1800 | "tags": ["morning"]
1801 | }, {
1802 | "emoji": "⌚",
1803 | "description": "watch",
1804 | "aliases": ["watch"],
1805 | "tags": ["time"]
1806 | }, {
1807 | "emoji": "🔓",
1808 | "description": "open lock",
1809 | "aliases": ["unlock"],
1810 | "tags": ["security"]
1811 | }, {
1812 | "emoji": "🔒",
1813 | "description": "lock",
1814 | "aliases": ["lock"],
1815 | "tags": ["security", "private"]
1816 | }, {
1817 | "emoji": "🔏",
1818 | "description": "lock with ink pen",
1819 | "aliases": ["lock_with_ink_pen"],
1820 | "tags": []
1821 | }, {
1822 | "emoji": "🔐",
1823 | "description": "closed lock with key",
1824 | "aliases": ["closed_lock_with_key"],
1825 | "tags": ["security"]
1826 | }, {
1827 | "emoji": "🔑",
1828 | "description": "key",
1829 | "aliases": ["key"],
1830 | "tags": ["lock", "password"]
1831 | }, {
1832 | "emoji": "🔎",
1833 | "description": "right-pointing magnifying glass",
1834 | "aliases": ["mag_right"],
1835 | "tags": []
1836 | }, {
1837 | "emoji": "💡",
1838 | "description": "electric light bulb",
1839 | "aliases": ["bulb"],
1840 | "tags": ["idea", "light"]
1841 | }, {
1842 | "emoji": "🔦",
1843 | "description": "electric torch",
1844 | "aliases": ["flashlight"],
1845 | "tags": []
1846 | }, {
1847 | "emoji": "🔆",
1848 | "description": "high brightness symbol",
1849 | "aliases": ["high_brightness"],
1850 | "tags": []
1851 | }, {
1852 | "emoji": "🔅",
1853 | "description": "low brightness symbol",
1854 | "aliases": ["low_brightness"],
1855 | "tags": []
1856 | }, {
1857 | "emoji": "🔌",
1858 | "description": "electric plug",
1859 | "aliases": ["electric_plug"],
1860 | "tags": []
1861 | }, {
1862 | "emoji": "🔋",
1863 | "description": "battery",
1864 | "aliases": ["battery"],
1865 | "tags": ["power"]
1866 | }, {
1867 | "emoji": "🔍",
1868 | "description": "left-pointing magnifying glass",
1869 | "aliases": ["mag"],
1870 | "tags": ["search", "zoom"]
1871 | }, {
1872 | "emoji": "🛁",
1873 | "description": "bathtub",
1874 | "aliases": ["bathtub"],
1875 | "tags": []
1876 | }, {
1877 | "emoji": "🛀",
1878 | "description": "bath",
1879 | "aliases": ["bath"],
1880 | "tags": ["shower"]
1881 | }, {
1882 | "emoji": "🚿",
1883 | "description": "shower",
1884 | "aliases": ["shower"],
1885 | "tags": ["bath"]
1886 | }, {
1887 | "emoji": "🚽",
1888 | "description": "toilet",
1889 | "aliases": ["toilet"],
1890 | "tags": ["wc"]
1891 | }, {
1892 | "emoji": "🔧",
1893 | "description": "wrench",
1894 | "aliases": ["wrench"],
1895 | "tags": ["tool"]
1896 | }, {
1897 | "emoji": "🔩",
1898 | "description": "nut and bolt",
1899 | "aliases": ["nut_and_bolt"],
1900 | "tags": []
1901 | }, {
1902 | "emoji": "🔨",
1903 | "description": "hammer",
1904 | "aliases": ["hammer"],
1905 | "tags": ["tool"]
1906 | }, {
1907 | "emoji": "🚪",
1908 | "description": "door",
1909 | "aliases": ["door"],
1910 | "tags": []
1911 | }, {
1912 | "emoji": "🚬",
1913 | "description": "smoking symbol",
1914 | "aliases": ["smoking"],
1915 | "tags": ["cigarette"]
1916 | }, {
1917 | "emoji": "💣",
1918 | "description": "bomb",
1919 | "aliases": ["bomb"],
1920 | "tags": ["boom"]
1921 | }, {
1922 | "emoji": "🔫",
1923 | "description": "pistol",
1924 | "aliases": ["gun"],
1925 | "tags": ["shoot", "weapon"]
1926 | }, {
1927 | "emoji": "🔪",
1928 | "description": "hocho",
1929 | "aliases": ["hocho", "knife"],
1930 | "tags": ["cut", "chop"]
1931 | }, {
1932 | "emoji": "💊",
1933 | "description": "pill",
1934 | "aliases": ["pill"],
1935 | "tags": ["health", "medicine"]
1936 | }, {
1937 | "emoji": "💉",
1938 | "description": "syringe",
1939 | "aliases": ["syringe"],
1940 | "tags": ["health", "hospital", "needle"]
1941 | }, {
1942 | "emoji": "💰",
1943 | "description": "money bag",
1944 | "aliases": ["moneybag"],
1945 | "tags": ["dollar", "cream"]
1946 | }, {
1947 | "emoji": "💴",
1948 | "description": "banknote with yen sign",
1949 | "aliases": ["yen"],
1950 | "tags": []
1951 | }, {
1952 | "emoji": "💵",
1953 | "description": "banknote with dollar sign",
1954 | "aliases": ["dollar"],
1955 | "tags": ["money"]
1956 | }, {
1957 | "emoji": "💷",
1958 | "description": "banknote with pound sign",
1959 | "aliases": ["pound"],
1960 | "tags": []
1961 | }, {
1962 | "emoji": "💶",
1963 | "description": "banknote with euro sign",
1964 | "aliases": ["euro"],
1965 | "tags": []
1966 | }, {
1967 | "emoji": "💳",
1968 | "description": "credit card",
1969 | "aliases": ["credit_card"],
1970 | "tags": ["subscription"]
1971 | }, {
1972 | "emoji": "💸",
1973 | "description": "money with wings",
1974 | "aliases": ["money_with_wings"],
1975 | "tags": ["dollar"]
1976 | }, {
1977 | "emoji": "📲",
1978 | "description": "mobile phone with rightwards arrow at left",
1979 | "aliases": ["calling"],
1980 | "tags": ["call", "incoming"]
1981 | }, {
1982 | "emoji": "📧",
1983 | "description": "e-mail symbol",
1984 | "aliases": ["e-mail"],
1985 | "tags": []
1986 | }, {
1987 | "emoji": "📥",
1988 | "description": "inbox tray",
1989 | "aliases": ["inbox_tray"],
1990 | "tags": []
1991 | }, {
1992 | "emoji": "📤",
1993 | "description": "outbox tray",
1994 | "aliases": ["outbox_tray"],
1995 | "tags": []
1996 | }, {
1997 | "emoji": "✉️",
1998 | "description": "envelope",
1999 | "aliases": ["email", "envelope"],
2000 | "tags": ["letter"]
2001 | }, {
2002 | "emoji": "📩",
2003 | "description": "envelope with downwards arrow above",
2004 | "aliases": ["envelope_with_arrow"],
2005 | "tags": []
2006 | }, {
2007 | "emoji": "📨",
2008 | "description": "incoming envelope",
2009 | "aliases": ["incoming_envelope"],
2010 | "tags": []
2011 | }, {
2012 | "emoji": "📯",
2013 | "description": "postal horn",
2014 | "aliases": ["postal_horn"],
2015 | "tags": []
2016 | }, {
2017 | "emoji": "📫",
2018 | "description": "closed mailbox with raised flag",
2019 | "aliases": ["mailbox"],
2020 | "tags": []
2021 | }, {
2022 | "emoji": "📪",
2023 | "description": "closed mailbox with lowered flag",
2024 | "aliases": ["mailbox_closed"],
2025 | "tags": []
2026 | }, {
2027 | "emoji": "📬",
2028 | "description": "open mailbox with raised flag",
2029 | "aliases": ["mailbox_with_mail"],
2030 | "tags": []
2031 | }, {
2032 | "emoji": "📭",
2033 | "description": "open mailbox with lowered flag",
2034 | "aliases": ["mailbox_with_no_mail"],
2035 | "tags": []
2036 | }, {
2037 | "emoji": "📮",
2038 | "description": "postbox",
2039 | "aliases": ["postbox"],
2040 | "tags": []
2041 | }, {
2042 | "emoji": "📦",
2043 | "description": "package",
2044 | "aliases": ["package"],
2045 | "tags": ["shipping"]
2046 | }, {
2047 | "emoji": "📝",
2048 | "description": "memo",
2049 | "aliases": ["memo", "pencil"],
2050 | "tags": ["document", "note"]
2051 | }, {
2052 | "emoji": "📄",
2053 | "description": "page facing up",
2054 | "aliases": ["page_facing_up"],
2055 | "tags": ["document"]
2056 | }, {
2057 | "emoji": "📃",
2058 | "description": "page with curl",
2059 | "aliases": ["page_with_curl"],
2060 | "tags": []
2061 | }, {
2062 | "emoji": "📑",
2063 | "description": "bookmark tabs",
2064 | "aliases": ["bookmark_tabs"],
2065 | "tags": []
2066 | }, {
2067 | "emoji": "📊",
2068 | "description": "bar chart",
2069 | "aliases": ["bar_chart"],
2070 | "tags": ["stats", "metrics"]
2071 | }, {
2072 | "emoji": "📈",
2073 | "description": "chart with upwards trend",
2074 | "aliases": ["chart_with_upwards_trend"],
2075 | "tags": ["graph", "metrics"]
2076 | }, {
2077 | "emoji": "📉",
2078 | "description": "chart with downwards trend",
2079 | "aliases": ["chart_with_downwards_trend"],
2080 | "tags": ["graph", "metrics"]
2081 | }, {
2082 | "emoji": "📜",
2083 | "description": "scroll",
2084 | "aliases": ["scroll"],
2085 | "tags": ["document"]
2086 | }, {
2087 | "emoji": "📋",
2088 | "description": "clipboard",
2089 | "aliases": ["clipboard"],
2090 | "tags": []
2091 | }, {
2092 | "emoji": "📅",
2093 | "description": "calendar",
2094 | "aliases": ["date"],
2095 | "tags": ["calendar", "schedule"]
2096 | }, {
2097 | "emoji": "📆",
2098 | "description": "tear-off calendar",
2099 | "aliases": ["calendar"],
2100 | "tags": ["schedule"]
2101 | }, {
2102 | "emoji": "📇",
2103 | "description": "card index",
2104 | "aliases": ["card_index"],
2105 | "tags": []
2106 | }, {
2107 | "emoji": "📁",
2108 | "description": "file folder",
2109 | "aliases": ["file_folder"],
2110 | "tags": ["directory"]
2111 | }, {
2112 | "emoji": "📂",
2113 | "description": "open file folder",
2114 | "aliases": ["open_file_folder"],
2115 | "tags": []
2116 | }, {
2117 | "emoji": "✂️",
2118 | "description": "black scissors",
2119 | "aliases": ["scissors"],
2120 | "tags": ["cut"]
2121 | }, {
2122 | "emoji": "📌",
2123 | "description": "pushpin",
2124 | "aliases": ["pushpin"],
2125 | "tags": ["location"]
2126 | }, {
2127 | "emoji": "📎",
2128 | "description": "paperclip",
2129 | "aliases": ["paperclip"],
2130 | "tags": []
2131 | }, {
2132 | "emoji": "✒️",
2133 | "description": "black nib",
2134 | "aliases": ["black_nib"],
2135 | "tags": []
2136 | }, {
2137 | "emoji": "✏️",
2138 | "description": "pencil",
2139 | "aliases": ["pencil2"],
2140 | "tags": []
2141 | }, {
2142 | "emoji": "📏",
2143 | "description": "straight ruler",
2144 | "aliases": ["straight_ruler"],
2145 | "tags": []
2146 | }, {
2147 | "emoji": "📐",
2148 | "description": "triangular ruler",
2149 | "aliases": ["triangular_ruler"],
2150 | "tags": []
2151 | }, {
2152 | "emoji": "📕",
2153 | "description": "closed book",
2154 | "aliases": ["closed_book"],
2155 | "tags": []
2156 | }, {
2157 | "emoji": "📗",
2158 | "description": "green book",
2159 | "aliases": ["green_book"],
2160 | "tags": []
2161 | }, {
2162 | "emoji": "📘",
2163 | "description": "blue book",
2164 | "aliases": ["blue_book"],
2165 | "tags": []
2166 | }, {
2167 | "emoji": "📙",
2168 | "description": "orange book",
2169 | "aliases": ["orange_book"],
2170 | "tags": []
2171 | }, {
2172 | "emoji": "📓",
2173 | "description": "notebook",
2174 | "aliases": ["notebook"],
2175 | "tags": []
2176 | }, {
2177 | "emoji": "📔",
2178 | "description": "notebook with decorative cover",
2179 | "aliases": ["notebook_with_decorative_cover"],
2180 | "tags": []
2181 | }, {
2182 | "emoji": "📒",
2183 | "description": "ledger",
2184 | "aliases": ["ledger"],
2185 | "tags": []
2186 | }, {
2187 | "emoji": "📚",
2188 | "description": "books",
2189 | "aliases": ["books"],
2190 | "tags": ["library"]
2191 | }, {
2192 | "emoji": "📖",
2193 | "description": "open book",
2194 | "aliases": ["book", "open_book"],
2195 | "tags": []
2196 | }, {
2197 | "emoji": "🔖",
2198 | "description": "bookmark",
2199 | "aliases": ["bookmark"],
2200 | "tags": []
2201 | }, {
2202 | "emoji": "📛",
2203 | "description": "name badge",
2204 | "aliases": ["name_badge"],
2205 | "tags": []
2206 | }, {
2207 | "emoji": "🔬",
2208 | "description": "microscope",
2209 | "aliases": ["microscope"],
2210 | "tags": ["science", "laboratory", "investigate"]
2211 | }, {
2212 | "emoji": "🔭",
2213 | "description": "telescope",
2214 | "aliases": ["telescope"],
2215 | "tags": []
2216 | }, {
2217 | "emoji": "📰",
2218 | "description": "newspaper",
2219 | "aliases": ["newspaper"],
2220 | "tags": ["press"]
2221 | }, {
2222 | "emoji": "🎨",
2223 | "description": "artist palette",
2224 | "aliases": ["art"],
2225 | "tags": ["design", "paint"]
2226 | }, {
2227 | "emoji": "🎬",
2228 | "description": "clapper board",
2229 | "aliases": ["clapper"],
2230 | "tags": ["film"]
2231 | }, {
2232 | "emoji": "🎤",
2233 | "description": "microphone",
2234 | "aliases": ["microphone"],
2235 | "tags": ["sing"]
2236 | }, {
2237 | "emoji": "🎧",
2238 | "description": "headphone",
2239 | "aliases": ["headphones"],
2240 | "tags": ["music", "earphones"]
2241 | }, {
2242 | "emoji": "🎼",
2243 | "description": "musical score",
2244 | "aliases": ["musical_score"],
2245 | "tags": []
2246 | }, {
2247 | "emoji": "🎵",
2248 | "description": "musical note",
2249 | "aliases": ["musical_note"],
2250 | "tags": []
2251 | }, {
2252 | "emoji": "🎶",
2253 | "description": "multiple musical notes",
2254 | "aliases": ["notes"],
2255 | "tags": ["music"]
2256 | }, {
2257 | "emoji": "🎹",
2258 | "description": "musical keyboard",
2259 | "aliases": ["musical_keyboard"],
2260 | "tags": ["piano"]
2261 | }, {
2262 | "emoji": "🎻",
2263 | "description": "violin",
2264 | "aliases": ["violin"],
2265 | "tags": []
2266 | }, {
2267 | "emoji": "🎺",
2268 | "description": "trumpet",
2269 | "aliases": ["trumpet"],
2270 | "tags": []
2271 | }, {
2272 | "emoji": "🎷",
2273 | "description": "saxophone",
2274 | "aliases": ["saxophone"],
2275 | "tags": []
2276 | }, {
2277 | "emoji": "🎸",
2278 | "description": "guitar",
2279 | "aliases": ["guitar"],
2280 | "tags": ["rock"]
2281 | }, {
2282 | "emoji": "👾",
2283 | "description": "alien monster",
2284 | "aliases": ["space_invader"],
2285 | "tags": ["game", "retro"]
2286 | }, {
2287 | "emoji": "🎮",
2288 | "description": "video game",
2289 | "aliases": ["video_game"],
2290 | "tags": ["play", "controller", "console"]
2291 | }, {
2292 | "emoji": "🃏",
2293 | "description": "playing card black joker",
2294 | "aliases": ["black_joker"],
2295 | "tags": []
2296 | }, {
2297 | "emoji": "🎴",
2298 | "description": "flower playing cards",
2299 | "aliases": ["flower_playing_cards"],
2300 | "tags": []
2301 | }, {
2302 | "emoji": "🀄",
2303 | "description": "mahjong tile red dragon",
2304 | "aliases": ["mahjong"],
2305 | "tags": []
2306 | }, {
2307 | "emoji": "🎲",
2308 | "description": "game die",
2309 | "aliases": ["game_die"],
2310 | "tags": ["dice", "gambling"]
2311 | }, {
2312 | "emoji": "🎯",
2313 | "description": "direct hit",
2314 | "aliases": ["dart"],
2315 | "tags": ["target"]
2316 | }, {
2317 | "emoji": "🏈",
2318 | "description": "american football",
2319 | "aliases": ["football"],
2320 | "tags": ["sports"]
2321 | }, {
2322 | "emoji": "🏀",
2323 | "description": "basketball and hoop",
2324 | "aliases": ["basketball"],
2325 | "tags": ["sports"]
2326 | }, {
2327 | "emoji": "⚽",
2328 | "description": "soccer ball",
2329 | "aliases": ["soccer"],
2330 | "tags": ["sports"]
2331 | }, {
2332 | "emoji": "⚾️",
2333 | "description": "baseball",
2334 | "aliases": ["baseball"],
2335 | "tags": ["sports"]
2336 | }, {
2337 | "emoji": "🎾",
2338 | "description": "tennis racquet and ball",
2339 | "aliases": ["tennis"],
2340 | "tags": ["sports"]
2341 | }, {
2342 | "emoji": "🎱",
2343 | "description": "billiards",
2344 | "aliases": ["8ball"],
2345 | "tags": ["pool", "billiards"]
2346 | }, {
2347 | "emoji": "🏉",
2348 | "description": "rugby football",
2349 | "aliases": ["rugby_football"],
2350 | "tags": []
2351 | }, {
2352 | "emoji": "🎳",
2353 | "description": "bowling",
2354 | "aliases": ["bowling"],
2355 | "tags": []
2356 | }, {
2357 | "emoji": "⛳",
2358 | "description": "flag in hole",
2359 | "aliases": ["golf"],
2360 | "tags": []
2361 | }, {
2362 | "emoji": "🚵",
2363 | "description": "mountain bicyclist",
2364 | "aliases": ["mountain_bicyclist"],
2365 | "tags": []
2366 | }, {
2367 | "emoji": "🚴",
2368 | "description": "bicyclist",
2369 | "aliases": ["bicyclist"],
2370 | "tags": []
2371 | }, {
2372 | "emoji": "🏁",
2373 | "description": "chequered flag",
2374 | "aliases": ["checkered_flag"],
2375 | "tags": ["milestone", "finish"]
2376 | }, {
2377 | "emoji": "🏇",
2378 | "description": "horse racing",
2379 | "aliases": ["horse_racing"],
2380 | "tags": []
2381 | }, {
2382 | "emoji": "🏆",
2383 | "description": "trophy",
2384 | "aliases": ["trophy"],
2385 | "tags": ["award", "contest", "winner"]
2386 | }, {
2387 | "emoji": "🎿",
2388 | "description": "ski and ski boot",
2389 | "aliases": ["ski"],
2390 | "tags": []
2391 | }, {
2392 | "emoji": "🏂",
2393 | "description": "snowboarder",
2394 | "aliases": ["snowboarder"],
2395 | "tags": []
2396 | }, {
2397 | "emoji": "🏊",
2398 | "description": "swimmer",
2399 | "aliases": ["swimmer"],
2400 | "tags": []
2401 | }, {
2402 | "emoji": "🏄",
2403 | "description": "surfer",
2404 | "aliases": ["surfer"],
2405 | "tags": []
2406 | }, {
2407 | "emoji": "🎣",
2408 | "description": "fishing pole and fish",
2409 | "aliases": ["fishing_pole_and_fish"],
2410 | "tags": []
2411 | }, {
2412 | "emoji": "☕",
2413 | "description": "hot beverage",
2414 | "aliases": ["coffee"],
2415 | "tags": ["cafe", "espresso"]
2416 | }, {
2417 | "emoji": "🍵",
2418 | "description": "teacup without handle",
2419 | "aliases": ["tea"],
2420 | "tags": ["green", "breakfast"]
2421 | }, {
2422 | "emoji": "🍶",
2423 | "description": "sake bottle and cup",
2424 | "aliases": ["sake"],
2425 | "tags": []
2426 | }, {
2427 | "emoji": "🍼",
2428 | "description": "baby bottle",
2429 | "aliases": ["baby_bottle"],
2430 | "tags": ["milk"]
2431 | }, {
2432 | "emoji": "🍺",
2433 | "description": "beer mug",
2434 | "aliases": ["beer"],
2435 | "tags": ["drink"]
2436 | }, {
2437 | "emoji": "🍻",
2438 | "description": "clinking beer mugs",
2439 | "aliases": ["beers"],
2440 | "tags": ["drinks"]
2441 | }, {
2442 | "emoji": "🍸",
2443 | "description": "cocktail glass",
2444 | "aliases": ["cocktail"],
2445 | "tags": ["drink"]
2446 | }, {
2447 | "emoji": "🍹",
2448 | "description": "tropical drink",
2449 | "aliases": ["tropical_drink"],
2450 | "tags": ["summer", "vacation"]
2451 | }, {
2452 | "emoji": "🍷",
2453 | "description": "wine glass",
2454 | "aliases": ["wine_glass"],
2455 | "tags": []
2456 | }, {
2457 | "emoji": "🍴",
2458 | "description": "fork and knife",
2459 | "aliases": ["fork_and_knife"],
2460 | "tags": ["cutlery"]
2461 | }, {
2462 | "emoji": "🍕",
2463 | "description": "slice of pizza",
2464 | "aliases": ["pizza"],
2465 | "tags": []
2466 | }, {
2467 | "emoji": "🍔",
2468 | "description": "hamburger",
2469 | "aliases": ["hamburger"],
2470 | "tags": ["burger"]
2471 | }, {
2472 | "emoji": "🍟",
2473 | "description": "french fries",
2474 | "aliases": ["fries"],
2475 | "tags": []
2476 | }, {
2477 | "emoji": "🍗",
2478 | "description": "poultry leg",
2479 | "aliases": ["poultry_leg"],
2480 | "tags": ["meat", "chicken"]
2481 | }, {
2482 | "emoji": "🍖",
2483 | "description": "meat on bone",
2484 | "aliases": ["meat_on_bone"],
2485 | "tags": []
2486 | }, {
2487 | "emoji": "🍝",
2488 | "description": "spaghetti",
2489 | "aliases": ["spaghetti"],
2490 | "tags": ["pasta"]
2491 | }, {
2492 | "emoji": "🍛",
2493 | "description": "curry and rice",
2494 | "aliases": ["curry"],
2495 | "tags": []
2496 | }, {
2497 | "emoji": "🍤",
2498 | "description": "fried shrimp",
2499 | "aliases": ["fried_shrimp"],
2500 | "tags": ["tempura"]
2501 | }, {
2502 | "emoji": "🍱",
2503 | "description": "bento box",
2504 | "aliases": ["bento"],
2505 | "tags": []
2506 | }, {
2507 | "emoji": "🍣",
2508 | "description": "sushi",
2509 | "aliases": ["sushi"],
2510 | "tags": []
2511 | }, {
2512 | "emoji": "🍥",
2513 | "description": "fish cake with swirl design",
2514 | "aliases": ["fish_cake"],
2515 | "tags": []
2516 | }, {
2517 | "emoji": "🍙",
2518 | "description": "rice ball",
2519 | "aliases": ["rice_ball"],
2520 | "tags": []
2521 | }, {
2522 | "emoji": "🍘",
2523 | "description": "rice cracker",
2524 | "aliases": ["rice_cracker"],
2525 | "tags": []
2526 | }, {
2527 | "emoji": "🍚",
2528 | "description": "cooked rice",
2529 | "aliases": ["rice"],
2530 | "tags": []
2531 | }, {
2532 | "emoji": "🍜",
2533 | "description": "steaming bowl",
2534 | "aliases": ["ramen"],
2535 | "tags": ["noodle"]
2536 | }, {
2537 | "emoji": "🍲",
2538 | "description": "pot of food",
2539 | "aliases": ["stew"],
2540 | "tags": []
2541 | }, {
2542 | "emoji": "🍢",
2543 | "description": "oden",
2544 | "aliases": ["oden"],
2545 | "tags": []
2546 | }, {
2547 | "emoji": "🍡",
2548 | "description": "dango",
2549 | "aliases": ["dango"],
2550 | "tags": []
2551 | }, {
2552 | "emoji": "🍳",
2553 | "description": "cooking",
2554 | "aliases": ["egg"],
2555 | "tags": ["breakfast"]
2556 | }, {
2557 | "emoji": "🍞",
2558 | "description": "bread",
2559 | "aliases": ["bread"],
2560 | "tags": ["toast"]
2561 | }, {
2562 | "emoji": "🍩",
2563 | "description": "doughnut",
2564 | "aliases": ["doughnut"],
2565 | "tags": []
2566 | }, {
2567 | "emoji": "🍮",
2568 | "description": "custard",
2569 | "aliases": ["custard"],
2570 | "tags": []
2571 | }, {
2572 | "emoji": "🍦",
2573 | "description": "soft ice cream",
2574 | "aliases": ["icecream"],
2575 | "tags": []
2576 | }, {
2577 | "emoji": "🍨",
2578 | "description": "ice cream",
2579 | "aliases": ["ice_cream"],
2580 | "tags": []
2581 | }, {
2582 | "emoji": "🍧",
2583 | "description": "shaved ice",
2584 | "aliases": ["shaved_ice"],
2585 | "tags": []
2586 | }, {
2587 | "emoji": "🎂",
2588 | "description": "birthday cake",
2589 | "aliases": ["birthday"],
2590 | "tags": ["party"]
2591 | }, {
2592 | "emoji": "🍰",
2593 | "description": "shortcake",
2594 | "aliases": ["cake"],
2595 | "tags": ["dessert"]
2596 | }, {
2597 | "emoji": "🍪",
2598 | "description": "cookie",
2599 | "aliases": ["cookie"],
2600 | "tags": []
2601 | }, {
2602 | "emoji": "🍫",
2603 | "description": "chocolate bar",
2604 | "aliases": ["chocolate_bar"],
2605 | "tags": []
2606 | }, {
2607 | "emoji": "🍬",
2608 | "description": "candy",
2609 | "aliases": ["candy"],
2610 | "tags": ["sweet"]
2611 | }, {
2612 | "emoji": "🍭",
2613 | "description": "lollipop",
2614 | "aliases": ["lollipop"],
2615 | "tags": []
2616 | }, {
2617 | "emoji": "🍯",
2618 | "description": "honey pot",
2619 | "aliases": ["honey_pot"],
2620 | "tags": []
2621 | }, {
2622 | "emoji": "🍎",
2623 | "description": "red apple",
2624 | "aliases": ["apple"],
2625 | "tags": []
2626 | }, {
2627 | "emoji": "🍏",
2628 | "description": "green apple",
2629 | "aliases": ["green_apple"],
2630 | "tags": ["fruit"]
2631 | }, {
2632 | "emoji": "🍊",
2633 | "description": "tangerine",
2634 | "aliases": ["tangerine"],
2635 | "tags": []
2636 | }, {
2637 | "emoji": "🍋",
2638 | "description": "lemon",
2639 | "aliases": ["lemon"],
2640 | "tags": []
2641 | }, {
2642 | "emoji": "🍒",
2643 | "description": "cherries",
2644 | "aliases": ["cherries"],
2645 | "tags": ["fruit"]
2646 | }, {
2647 | "emoji": "🍇",
2648 | "description": "grapes",
2649 | "aliases": ["grapes"],
2650 | "tags": []
2651 | }, {
2652 | "emoji": "🍉",
2653 | "description": "watermelon",
2654 | "aliases": ["watermelon"],
2655 | "tags": []
2656 | }, {
2657 | "emoji": "🍓",
2658 | "description": "strawberry",
2659 | "aliases": ["strawberry"],
2660 | "tags": ["fruit"]
2661 | }, {
2662 | "emoji": "🍑",
2663 | "description": "peach",
2664 | "aliases": ["peach"],
2665 | "tags": []
2666 | }, {
2667 | "emoji": "🍈",
2668 | "description": "melon",
2669 | "aliases": ["melon"],
2670 | "tags": []
2671 | }, {
2672 | "emoji": "🍌",
2673 | "description": "banana",
2674 | "aliases": ["banana"],
2675 | "tags": ["fruit"]
2676 | }, {
2677 | "emoji": "🍐",
2678 | "description": "pear",
2679 | "aliases": ["pear"],
2680 | "tags": []
2681 | }, {
2682 | "emoji": "🍍",
2683 | "description": "pineapple",
2684 | "aliases": ["pineapple"],
2685 | "tags": []
2686 | }, {
2687 | "emoji": "🍠",
2688 | "description": "roasted sweet potato",
2689 | "aliases": ["sweet_potato"],
2690 | "tags": []
2691 | }, {
2692 | "emoji": "🍆",
2693 | "description": "aubergine",
2694 | "aliases": ["eggplant"],
2695 | "tags": ["aubergine"]
2696 | }, {
2697 | "emoji": "🍅",
2698 | "description": "tomato",
2699 | "aliases": ["tomato"],
2700 | "tags": []
2701 | }, {
2702 | "emoji": "🌽",
2703 | "description": "ear of maize",
2704 | "aliases": ["corn"],
2705 | "tags": []
2706 | }, {
2707 | "emoji": "🏠",
2708 | "description": "house building",
2709 | "aliases": ["house"],
2710 | "tags": []
2711 | }, {
2712 | "emoji": "🏡",
2713 | "description": "house with garden",
2714 | "aliases": ["house_with_garden"],
2715 | "tags": []
2716 | }, {
2717 | "emoji": "🏫",
2718 | "description": "school",
2719 | "aliases": ["school"],
2720 | "tags": []
2721 | }, {
2722 | "emoji": "🏢",
2723 | "description": "office building",
2724 | "aliases": ["office"],
2725 | "tags": []
2726 | }, {
2727 | "emoji": "🏣",
2728 | "description": "japanese post office",
2729 | "aliases": ["post_office"],
2730 | "tags": []
2731 | }, {
2732 | "emoji": "🏥",
2733 | "description": "hospital",
2734 | "aliases": ["hospital"],
2735 | "tags": []
2736 | }, {
2737 | "emoji": "🏦",
2738 | "description": "bank",
2739 | "aliases": ["bank"],
2740 | "tags": []
2741 | }, {
2742 | "emoji": "🏪",
2743 | "description": "convenience store",
2744 | "aliases": ["convenience_store"],
2745 | "tags": []
2746 | }, {
2747 | "emoji": "🏩",
2748 | "description": "love hotel",
2749 | "aliases": ["love_hotel"],
2750 | "tags": []
2751 | }, {
2752 | "emoji": "🏨",
2753 | "description": "hotel",
2754 | "aliases": ["hotel"],
2755 | "tags": []
2756 | }, {
2757 | "emoji": "💒",
2758 | "description": "wedding",
2759 | "aliases": ["wedding"],
2760 | "tags": ["marriage"]
2761 | }, {
2762 | "emoji": "⛪",
2763 | "description": "church",
2764 | "aliases": ["church"],
2765 | "tags": []
2766 | }, {
2767 | "emoji": "🏬",
2768 | "description": "department store",
2769 | "aliases": ["department_store"],
2770 | "tags": []
2771 | }, {
2772 | "emoji": "🏤",
2773 | "description": "european post office",
2774 | "aliases": ["european_post_office"],
2775 | "tags": []
2776 | }, {
2777 | "emoji": "🌇",
2778 | "description": "sunset over buildings",
2779 | "aliases": ["city_sunrise"],
2780 | "tags": []
2781 | }, {
2782 | "emoji": "🌆",
2783 | "description": "cityscape at dusk",
2784 | "aliases": ["city_sunset"],
2785 | "tags": []
2786 | }, {
2787 | "emoji": "🏯",
2788 | "description": "japanese castle",
2789 | "aliases": ["japanese_castle"],
2790 | "tags": []
2791 | }, {
2792 | "emoji": "🏰",
2793 | "description": "european castle",
2794 | "aliases": ["european_castle"],
2795 | "tags": []
2796 | }, {
2797 | "emoji": "⛺",
2798 | "description": "tent",
2799 | "aliases": ["tent"],
2800 | "tags": ["camping"]
2801 | }, {
2802 | "emoji": "🏭",
2803 | "description": "factory",
2804 | "aliases": ["factory"],
2805 | "tags": []
2806 | }, {
2807 | "emoji": "🗼",
2808 | "description": "tokyo tower",
2809 | "aliases": ["tokyo_tower"],
2810 | "tags": []
2811 | }, {
2812 | "emoji": "🗾",
2813 | "description": "silhouette of japan",
2814 | "aliases": ["japan"],
2815 | "tags": []
2816 | }, {
2817 | "emoji": "🗻",
2818 | "description": "mount fuji",
2819 | "aliases": ["mount_fuji"],
2820 | "tags": []
2821 | }, {
2822 | "emoji": "🌄",
2823 | "description": "sunrise over mountains",
2824 | "aliases": ["sunrise_over_mountains"],
2825 | "tags": []
2826 | }, {
2827 | "emoji": "🌅",
2828 | "description": "sunrise",
2829 | "aliases": ["sunrise"],
2830 | "tags": []
2831 | }, {
2832 | "emoji": "🌃",
2833 | "description": "night with stars",
2834 | "aliases": ["night_with_stars"],
2835 | "tags": []
2836 | }, {
2837 | "emoji": "🗽",
2838 | "description": "statue of liberty",
2839 | "aliases": ["statue_of_liberty"],
2840 | "tags": []
2841 | }, {
2842 | "emoji": "🌉",
2843 | "description": "bridge at night",
2844 | "aliases": ["bridge_at_night"],
2845 | "tags": []
2846 | }, {
2847 | "emoji": "🎠",
2848 | "description": "carousel horse",
2849 | "aliases": ["carousel_horse"],
2850 | "tags": []
2851 | }, {
2852 | "emoji": "🎡",
2853 | "description": "ferris wheel",
2854 | "aliases": ["ferris_wheel"],
2855 | "tags": []
2856 | }, {
2857 | "emoji": "⛲",
2858 | "description": "fountain",
2859 | "aliases": ["fountain"],
2860 | "tags": []
2861 | }, {
2862 | "emoji": "🎢",
2863 | "description": "roller coaster",
2864 | "aliases": ["roller_coaster"],
2865 | "tags": []
2866 | }, {
2867 | "emoji": "🚢",
2868 | "description": "ship",
2869 | "aliases": ["ship"],
2870 | "tags": []
2871 | }, {
2872 | "emoji": "⛵",
2873 | "description": "sailboat",
2874 | "aliases": ["boat", "sailboat"],
2875 | "tags": []
2876 | }, {
2877 | "emoji": "🚤",
2878 | "description": "speedboat",
2879 | "aliases": ["speedboat"],
2880 | "tags": ["ship"]
2881 | }, {
2882 | "emoji": "🚣",
2883 | "description": "rowboat",
2884 | "aliases": ["rowboat"],
2885 | "tags": []
2886 | }, {
2887 | "emoji": "⚓",
2888 | "description": "anchor",
2889 | "aliases": ["anchor"],
2890 | "tags": ["ship"]
2891 | }, {
2892 | "emoji": "🚀",
2893 | "description": "rocket",
2894 | "aliases": ["rocket"],
2895 | "tags": ["ship", "launch"]
2896 | }, {
2897 | "emoji": "✈️",
2898 | "description": "airplane",
2899 | "aliases": ["airplane"],
2900 | "tags": ["flight"]
2901 | }, {
2902 | "emoji": "💺",
2903 | "description": "seat",
2904 | "aliases": ["seat"],
2905 | "tags": []
2906 | }, {
2907 | "emoji": "🚁",
2908 | "description": "helicopter",
2909 | "aliases": ["helicopter"],
2910 | "tags": []
2911 | }, {
2912 | "emoji": "🚂",
2913 | "description": "steam locomotive",
2914 | "aliases": ["steam_locomotive"],
2915 | "tags": ["train"]
2916 | }, {
2917 | "emoji": "🚊",
2918 | "description": "tram",
2919 | "aliases": ["tram"],
2920 | "tags": []
2921 | }, {
2922 | "emoji": "🚉",
2923 | "description": "station",
2924 | "aliases": ["station"],
2925 | "tags": []
2926 | }, {
2927 | "emoji": "🚞",
2928 | "description": "mountain railway",
2929 | "aliases": ["mountain_railway"],
2930 | "tags": []
2931 | }, {
2932 | "emoji": "🚆",
2933 | "description": "train",
2934 | "aliases": ["train2"],
2935 | "tags": []
2936 | }, {
2937 | "emoji": "🚄",
2938 | "description": "high-speed train",
2939 | "aliases": ["bullettrain_side"],
2940 | "tags": ["train"]
2941 | }, {
2942 | "emoji": "🚅",
2943 | "description": "high-speed train with bullet nose",
2944 | "aliases": ["bullettrain_front"],
2945 | "tags": ["train"]
2946 | }, {
2947 | "emoji": "🚈",
2948 | "description": "light rail",
2949 | "aliases": ["light_rail"],
2950 | "tags": []
2951 | }, {
2952 | "emoji": "🚇",
2953 | "description": "metro",
2954 | "aliases": ["metro"],
2955 | "tags": []
2956 | }, {
2957 | "emoji": "🚝",
2958 | "description": "monorail",
2959 | "aliases": ["monorail"],
2960 | "tags": []
2961 | }, {
2962 | "emoji": "🚋",
2963 | "description": "tram car",
2964 | "aliases": ["train"],
2965 | "tags": []
2966 | }, {
2967 | "emoji": "🚃",
2968 | "description": "railway car",
2969 | "aliases": ["railway_car"],
2970 | "tags": []
2971 | }, {
2972 | "emoji": "🚎",
2973 | "description": "trolleybus",
2974 | "aliases": ["trolleybus"],
2975 | "tags": []
2976 | }, {
2977 | "emoji": "🚌",
2978 | "description": "bus",
2979 | "aliases": ["bus"],
2980 | "tags": []
2981 | }, {
2982 | "emoji": "🚍",
2983 | "description": "oncoming bus",
2984 | "aliases": ["oncoming_bus"],
2985 | "tags": []
2986 | }, {
2987 | "emoji": "🚙",
2988 | "description": "recreational vehicle",
2989 | "aliases": ["blue_car"],
2990 | "tags": []
2991 | }, {
2992 | "emoji": "🚘",
2993 | "description": "oncoming automobile",
2994 | "aliases": ["oncoming_automobile"],
2995 | "tags": []
2996 | }, {
2997 | "emoji": "🚗",
2998 | "description": "automobile",
2999 | "aliases": ["car", "red_car"],
3000 | "tags": []
3001 | }, {
3002 | "emoji": "🚕",
3003 | "description": "taxi",
3004 | "aliases": ["taxi"],
3005 | "tags": []
3006 | }, {
3007 | "emoji": "🚖",
3008 | "description": "oncoming taxi",
3009 | "aliases": ["oncoming_taxi"],
3010 | "tags": []
3011 | }, {
3012 | "emoji": "🚛",
3013 | "description": "articulated lorry",
3014 | "aliases": ["articulated_lorry"],
3015 | "tags": []
3016 | }, {
3017 | "emoji": "🚚",
3018 | "description": "delivery truck",
3019 | "aliases": ["truck"],
3020 | "tags": []
3021 | }, {
3022 | "emoji": "🚨",
3023 | "description": "police cars revolving light",
3024 | "aliases": ["rotating_light"],
3025 | "tags": ["911", "emergency"]
3026 | }, {
3027 | "emoji": "🚓",
3028 | "description": "police car",
3029 | "aliases": ["police_car"],
3030 | "tags": []
3031 | }, {
3032 | "emoji": "🚔",
3033 | "description": "oncoming police car",
3034 | "aliases": ["oncoming_police_car"],
3035 | "tags": []
3036 | }, {
3037 | "emoji": "🚒",
3038 | "description": "fire engine",
3039 | "aliases": ["fire_engine"],
3040 | "tags": []
3041 | }, {
3042 | "emoji": "🚑",
3043 | "description": "ambulance",
3044 | "aliases": ["ambulance"],
3045 | "tags": []
3046 | }, {
3047 | "emoji": "🚐",
3048 | "description": "minibus",
3049 | "aliases": ["minibus"],
3050 | "tags": []
3051 | }, {
3052 | "emoji": "🚲",
3053 | "description": "bicycle",
3054 | "aliases": ["bike"],
3055 | "tags": ["bicycle"]
3056 | }, {
3057 | "emoji": "🚡",
3058 | "description": "aerial tramway",
3059 | "aliases": ["aerial_tramway"],
3060 | "tags": []
3061 | }, {
3062 | "emoji": "🚟",
3063 | "description": "suspension railway",
3064 | "aliases": ["suspension_railway"],
3065 | "tags": []
3066 | }, {
3067 | "emoji": "🚠",
3068 | "description": "mountain cableway",
3069 | "aliases": ["mountain_cableway"],
3070 | "tags": []
3071 | }, {
3072 | "emoji": "🚜",
3073 | "description": "tractor",
3074 | "aliases": ["tractor"],
3075 | "tags": []
3076 | }, {
3077 | "emoji": "💈",
3078 | "description": "barber pole",
3079 | "aliases": ["barber"],
3080 | "tags": []
3081 | }, {
3082 | "emoji": "🚏",
3083 | "description": "bus stop",
3084 | "aliases": ["busstop"],
3085 | "tags": []
3086 | }, {
3087 | "emoji": "🎫",
3088 | "description": "ticket",
3089 | "aliases": ["ticket"],
3090 | "tags": []
3091 | }, {
3092 | "emoji": "🚦",
3093 | "description": "vertical traffic light",
3094 | "aliases": ["vertical_traffic_light"],
3095 | "tags": ["semaphore"]
3096 | }, {
3097 | "emoji": "🚥",
3098 | "description": "horizontal traffic light",
3099 | "aliases": ["traffic_light"],
3100 | "tags": []
3101 | }, {
3102 | "emoji": "⚠️",
3103 | "description": "warning sign",
3104 | "aliases": ["warning"],
3105 | "tags": ["wip"]
3106 | }, {
3107 | "emoji": "🚧",
3108 | "description": "construction sign",
3109 | "aliases": ["construction"],
3110 | "tags": ["wip"]
3111 | }, {
3112 | "emoji": "🔰",
3113 | "description": "japanese symbol for beginner",
3114 | "aliases": ["beginner"],
3115 | "tags": []
3116 | }, {
3117 | "emoji": "⛽",
3118 | "description": "fuel pump",
3119 | "aliases": ["fuelpump"],
3120 | "tags": []
3121 | }, {
3122 | "emoji": "🏮",
3123 | "description": "izakaya lantern",
3124 | "aliases": ["izakaya_lantern", "lantern"],
3125 | "tags": []
3126 | }, {
3127 | "emoji": "🎰",
3128 | "description": "slot machine",
3129 | "aliases": ["slot_machine"],
3130 | "tags": []
3131 | }, {
3132 | "emoji": "♨️",
3133 | "description": "hot springs",
3134 | "aliases": ["hotsprings"],
3135 | "tags": []
3136 | }, {
3137 | "emoji": "🗿",
3138 | "description": "moyai",
3139 | "aliases": ["moyai"],
3140 | "tags": ["stone"]
3141 | }, {
3142 | "emoji": "🎪",
3143 | "description": "circus tent",
3144 | "aliases": ["circus_tent"],
3145 | "tags": []
3146 | }, {
3147 | "emoji": "🎭",
3148 | "description": "performing arts",
3149 | "aliases": ["performing_arts"],
3150 | "tags": ["theater", "drama"]
3151 | }, {
3152 | "emoji": "📍",
3153 | "description": "round pushpin",
3154 | "aliases": ["round_pushpin"],
3155 | "tags": ["location"]
3156 | }, {
3157 | "emoji": "🚩",
3158 | "description": "triangular flag on post",
3159 | "aliases": ["triangular_flag_on_post"],
3160 | "tags": []
3161 | }, {
3162 | "emoji": "🇯🇵",
3163 | "description": "regional indicator symbol letter j + regional indicator symbol letter p",
3164 | "aliases": ["jp"],
3165 | "tags": ["japan"]
3166 | }, {
3167 | "emoji": "🇰🇷",
3168 | "description": "regional indicator symbol letter k + regional indicator symbol letter r",
3169 | "aliases": ["kr"],
3170 | "tags": ["korea"]
3171 | }, {
3172 | "emoji": "🇩🇪",
3173 | "description": "regional indicator symbol letter d + regional indicator symbol letter e",
3174 | "aliases": ["de"],
3175 | "tags": ["flag", "germany"]
3176 | }, {
3177 | "emoji": "🇨🇳",
3178 | "description": "regional indicator symbol letter c + regional indicator symbol letter n",
3179 | "aliases": ["cn"],
3180 | "tags": ["china"]
3181 | }, {
3182 | "emoji": "🇺🇸",
3183 | "description": "regional indicator symbol letter u + regional indicator symbol letter s",
3184 | "aliases": ["us"],
3185 | "tags": ["flag", "united", "america"]
3186 | }, {
3187 | "emoji": "🇫🇷",
3188 | "description": "regional indicator symbol letter f + regional indicator symbol letter r",
3189 | "aliases": ["fr"],
3190 | "tags": ["france", "french"]
3191 | }, {
3192 | "emoji": "🇪🇸",
3193 | "description": "regional indicator symbol letter e + regional indicator symbol letter s",
3194 | "aliases": ["es"],
3195 | "tags": ["spain"]
3196 | }, {
3197 | "emoji": "🇮🇹",
3198 | "description": "regional indicator symbol letter i + regional indicator symbol letter t",
3199 | "aliases": ["it"],
3200 | "tags": ["italy"]
3201 | }, {
3202 | "emoji": "🇷🇺",
3203 | "description": "regional indicator symbol letter r + regional indicator symbol letter u",
3204 | "aliases": ["ru"],
3205 | "tags": ["russia"]
3206 | }, {
3207 | "emoji": "🇬🇧",
3208 | "description": "regional indicator symbol letter g + regional indicator symbol letter b",
3209 | "aliases": ["gb", "uk"],
3210 | "tags": ["flag", "british"]
3211 | }, {
3212 | "emoji": "1️⃣",
3213 | "description": "digit one + combining enclosing keycap",
3214 | "aliases": ["one"],
3215 | "tags": []
3216 | }, {
3217 | "emoji": "2️⃣",
3218 | "description": "digit two + combining enclosing keycap",
3219 | "aliases": ["two"],
3220 | "tags": []
3221 | }, {
3222 | "emoji": "3️⃣",
3223 | "description": "digit three + combining enclosing keycap",
3224 | "aliases": ["three"],
3225 | "tags": []
3226 | }, {
3227 | "emoji": "4️⃣",
3228 | "description": "digit four + combining enclosing keycap",
3229 | "aliases": ["four"],
3230 | "tags": []
3231 | }, {
3232 | "emoji": "5️⃣",
3233 | "description": "digit five + combining enclosing keycap",
3234 | "aliases": ["five"],
3235 | "tags": []
3236 | }, {
3237 | "emoji": "6️⃣",
3238 | "description": "digit six + combining enclosing keycap",
3239 | "aliases": ["six"],
3240 | "tags": []
3241 | }, {
3242 | "emoji": "7️⃣",
3243 | "description": "digit seven + combining enclosing keycap",
3244 | "aliases": ["seven"],
3245 | "tags": []
3246 | }, {
3247 | "emoji": "8️⃣",
3248 | "description": "digit eight + combining enclosing keycap",
3249 | "aliases": ["eight"],
3250 | "tags": []
3251 | }, {
3252 | "emoji": "9️⃣",
3253 | "description": "digit nine + combining enclosing keycap",
3254 | "aliases": ["nine"],
3255 | "tags": []
3256 | }, {
3257 | "emoji": "0️⃣",
3258 | "description": "digit zero + combining enclosing keycap",
3259 | "aliases": ["zero"],
3260 | "tags": []
3261 | }, {
3262 | "emoji": "🔟",
3263 | "description": "keycap ten",
3264 | "aliases": ["keycap_ten"],
3265 | "tags": []
3266 | }, {
3267 | "emoji": "🔢",
3268 | "description": "input symbol for numbers",
3269 | "aliases": ["1234"],
3270 | "tags": ["numbers"]
3271 | }, {
3272 | "emoji": "#️⃣",
3273 | "description": "number sign + combining enclosing keycap",
3274 | "aliases": ["hash"],
3275 | "tags": ["number"]
3276 | }, {
3277 | "emoji": "🔣",
3278 | "description": "input symbol for symbols",
3279 | "aliases": ["symbols"],
3280 | "tags": []
3281 | }, {
3282 | "emoji": "⬆️",
3283 | "description": "upwards black arrow",
3284 | "aliases": ["arrow_up"],
3285 | "tags": []
3286 | }, {
3287 | "emoji": "⬇️",
3288 | "description": "downwards black arrow",
3289 | "aliases": ["arrow_down"],
3290 | "tags": []
3291 | }, {
3292 | "emoji": "⬅️",
3293 | "description": "leftwards black arrow",
3294 | "aliases": ["arrow_left"],
3295 | "tags": []
3296 | }, {
3297 | "emoji": "➡️",
3298 | "description": "black rightwards arrow",
3299 | "aliases": ["arrow_right"],
3300 | "tags": []
3301 | }, {
3302 | "emoji": "🔠",
3303 | "description": "input symbol for latin capital letters",
3304 | "aliases": ["capital_abcd"],
3305 | "tags": ["letters"]
3306 | }, {
3307 | "emoji": "🔡",
3308 | "description": "input symbol for latin small letters",
3309 | "aliases": ["abcd"],
3310 | "tags": []
3311 | }, {
3312 | "emoji": "🔤",
3313 | "description": "input symbol for latin letters",
3314 | "aliases": ["abc"],
3315 | "tags": ["alphabet"]
3316 | }, {
3317 | "emoji": "↗️",
3318 | "description": "north east arrow",
3319 | "aliases": ["arrow_upper_right"],
3320 | "tags": []
3321 | }, {
3322 | "emoji": "↖️",
3323 | "description": "north west arrow",
3324 | "aliases": ["arrow_upper_left"],
3325 | "tags": []
3326 | }, {
3327 | "emoji": "↘️",
3328 | "description": "south east arrow",
3329 | "aliases": ["arrow_lower_right"],
3330 | "tags": []
3331 | }, {
3332 | "emoji": "↙️",
3333 | "description": "south west arrow",
3334 | "aliases": ["arrow_lower_left"],
3335 | "tags": []
3336 | }, {
3337 | "emoji": "↔️",
3338 | "description": "left right arrow",
3339 | "aliases": ["left_right_arrow"],
3340 | "tags": []
3341 | }, {
3342 | "emoji": "↕️",
3343 | "description": "up down arrow",
3344 | "aliases": ["arrow_up_down"],
3345 | "tags": []
3346 | }, {
3347 | "emoji": "🔄",
3348 | "description": "anticlockwise downwards and upwards open circle arrows",
3349 | "aliases": ["arrows_counterclockwise"],
3350 | "tags": ["sync"]
3351 | }, {
3352 | "emoji": "◀️",
3353 | "description": "black left-pointing triangle",
3354 | "aliases": ["arrow_backward"],
3355 | "tags": []
3356 | }, {
3357 | "emoji": "▶️",
3358 | "description": "black right-pointing triangle",
3359 | "aliases": ["arrow_forward"],
3360 | "tags": []
3361 | }, {
3362 | "emoji": "🔼",
3363 | "description": "up-pointing small red triangle",
3364 | "aliases": ["arrow_up_small"],
3365 | "tags": []
3366 | }, {
3367 | "emoji": "🔽",
3368 | "description": "down-pointing small red triangle",
3369 | "aliases": ["arrow_down_small"],
3370 | "tags": []
3371 | }, {
3372 | "emoji": "↩️",
3373 | "description": "leftwards arrow with hook",
3374 | "aliases": ["leftwards_arrow_with_hook"],
3375 | "tags": ["return"]
3376 | }, {
3377 | "emoji": "↪️",
3378 | "description": "rightwards arrow with hook",
3379 | "aliases": ["arrow_right_hook"],
3380 | "tags": []
3381 | }, {
3382 | "emoji": "ℹ️",
3383 | "description": "information source",
3384 | "aliases": ["information_source"],
3385 | "tags": []
3386 | }, {
3387 | "emoji": "⏪",
3388 | "description": "black left-pointing double triangle",
3389 | "aliases": ["rewind"],
3390 | "tags": []
3391 | }, {
3392 | "emoji": "⏩",
3393 | "description": "black right-pointing double triangle",
3394 | "aliases": ["fast_forward"],
3395 | "tags": []
3396 | }, {
3397 | "emoji": "⏫",
3398 | "description": "black up-pointing double triangle",
3399 | "aliases": ["arrow_double_up"],
3400 | "tags": []
3401 | }, {
3402 | "emoji": "⏬",
3403 | "description": "black down-pointing double triangle",
3404 | "aliases": ["arrow_double_down"],
3405 | "tags": []
3406 | }, {
3407 | "emoji": "⤵️",
3408 | "description": "arrow pointing rightwards then curving downwards",
3409 | "aliases": ["arrow_heading_down"],
3410 | "tags": []
3411 | }, {
3412 | "emoji": "⤴️",
3413 | "description": "arrow pointing rightwards then curving upwards",
3414 | "aliases": ["arrow_heading_up"],
3415 | "tags": []
3416 | }, {
3417 | "emoji": "🆗",
3418 | "description": "squared ok",
3419 | "aliases": ["ok"],
3420 | "tags": ["yes"]
3421 | }, {
3422 | "emoji": "🔀",
3423 | "description": "twisted rightwards arrows",
3424 | "aliases": ["twisted_rightwards_arrows"],
3425 | "tags": ["shuffle"]
3426 | }, {
3427 | "emoji": "🔁",
3428 | "description": "clockwise rightwards and leftwards open circle arrows",
3429 | "aliases": ["repeat"],
3430 | "tags": ["loop"]
3431 | }, {
3432 | "emoji": "🔂",
3433 | "description": "clockwise rightwards and leftwards open circle arrows with circled one overlay",
3434 | "aliases": ["repeat_one"],
3435 | "tags": []
3436 | }, {
3437 | "emoji": "🆕",
3438 | "description": "squared new",
3439 | "aliases": ["new"],
3440 | "tags": ["fresh"]
3441 | }, {
3442 | "emoji": "🆙",
3443 | "description": "squared up with exclamation mark",
3444 | "aliases": ["up"],
3445 | "tags": []
3446 | }, {
3447 | "emoji": "🆒",
3448 | "description": "squared cool",
3449 | "aliases": ["cool"],
3450 | "tags": []
3451 | }, {
3452 | "emoji": "🆓",
3453 | "description": "squared free",
3454 | "aliases": ["free"],
3455 | "tags": []
3456 | }, {
3457 | "emoji": "🆖",
3458 | "description": "squared ng",
3459 | "aliases": ["ng"],
3460 | "tags": []
3461 | }, {
3462 | "emoji": "📶",
3463 | "description": "antenna with bars",
3464 | "aliases": ["signal_strength"],
3465 | "tags": ["wifi"]
3466 | }, {
3467 | "emoji": "🎦",
3468 | "description": "cinema",
3469 | "aliases": ["cinema"],
3470 | "tags": ["film", "movie"]
3471 | }, {
3472 | "emoji": "🈁",
3473 | "description": "squared katakana koko",
3474 | "aliases": ["koko"],
3475 | "tags": []
3476 | }, {
3477 | "emoji": "🈯",
3478 | "description": "squared cjk unified ideograph-6307",
3479 | "aliases": ["u6307"],
3480 | "tags": []
3481 | }, {
3482 | "emoji": "🈳",
3483 | "description": "squared cjk unified ideograph-7a7a",
3484 | "aliases": ["u7a7a"],
3485 | "tags": []
3486 | }, {
3487 | "emoji": "🈵",
3488 | "description": "squared cjk unified ideograph-6e80",
3489 | "aliases": ["u6e80"],
3490 | "tags": []
3491 | }, {
3492 | "emoji": "🈴",
3493 | "description": "squared cjk unified ideograph-5408",
3494 | "aliases": ["u5408"],
3495 | "tags": []
3496 | }, {
3497 | "emoji": "🈲",
3498 | "description": "squared cjk unified ideograph-7981",
3499 | "aliases": ["u7981"],
3500 | "tags": []
3501 | }, {
3502 | "emoji": "🉐",
3503 | "description": "circled ideograph advantage",
3504 | "aliases": ["ideograph_advantage"],
3505 | "tags": []
3506 | }, {
3507 | "emoji": "🈹",
3508 | "description": "squared cjk unified ideograph-5272",
3509 | "aliases": ["u5272"],
3510 | "tags": []
3511 | }, {
3512 | "emoji": "🈺",
3513 | "description": "squared cjk unified ideograph-55b6",
3514 | "aliases": ["u55b6"],
3515 | "tags": []
3516 | }, {
3517 | "emoji": "🈶",
3518 | "description": "squared cjk unified ideograph-6709",
3519 | "aliases": ["u6709"],
3520 | "tags": []
3521 | }, {
3522 | "emoji": "🈚",
3523 | "description": "squared cjk unified ideograph-7121",
3524 | "aliases": ["u7121"],
3525 | "tags": []
3526 | }, {
3527 | "emoji": "🚻",
3528 | "description": "restroom",
3529 | "aliases": ["restroom"],
3530 | "tags": ["toilet"]
3531 | }, {
3532 | "emoji": "🚹",
3533 | "description": "mens symbol",
3534 | "aliases": ["mens"],
3535 | "tags": []
3536 | }, {
3537 | "emoji": "🚺",
3538 | "description": "womens symbol",
3539 | "aliases": ["womens"],
3540 | "tags": []
3541 | }, {
3542 | "emoji": "🚼",
3543 | "description": "baby symbol",
3544 | "aliases": ["baby_symbol"],
3545 | "tags": []
3546 | }, {
3547 | "emoji": "🚾",
3548 | "description": "water closet",
3549 | "aliases": ["wc"],
3550 | "tags": ["toilet", "restroom"]
3551 | }, {
3552 | "emoji": "🚰",
3553 | "description": "potable water symbol",
3554 | "aliases": ["potable_water"],
3555 | "tags": []
3556 | }, {
3557 | "emoji": "🚮",
3558 | "description": "put litter in its place symbol",
3559 | "aliases": ["put_litter_in_its_place"],
3560 | "tags": []
3561 | }, {
3562 | "emoji": "🅿️",
3563 | "description": "negative squared latin capital letter p",
3564 | "aliases": ["parking"],
3565 | "tags": []
3566 | }, {
3567 | "emoji": "♿",
3568 | "description": "wheelchair symbol",
3569 | "aliases": ["wheelchair"],
3570 | "tags": ["accessibility"]
3571 | }, {
3572 | "emoji": "🚭",
3573 | "description": "no smoking symbol",
3574 | "aliases": ["no_smoking"],
3575 | "tags": []
3576 | }, {
3577 | "emoji": "🈷️",
3578 | "description": "squared cjk unified ideograph-6708",
3579 | "aliases": ["u6708"],
3580 | "tags": []
3581 | }, {
3582 | "emoji": "🈸",
3583 | "description": "squared cjk unified ideograph-7533",
3584 | "aliases": ["u7533"],
3585 | "tags": []
3586 | }, {
3587 | "emoji": "🈂️",
3588 | "description": "squared katakana sa",
3589 | "aliases": ["sa"],
3590 | "tags": []
3591 | }, {
3592 | "emoji": "Ⓜ️",
3593 | "description": "circled latin capital letter m",
3594 | "aliases": ["m"],
3595 | "tags": []
3596 | }, {
3597 | "emoji": "🛂",
3598 | "description": "passport control",
3599 | "aliases": ["passport_control"],
3600 | "tags": []
3601 | }, {
3602 | "emoji": "🛄",
3603 | "description": "baggage claim",
3604 | "aliases": ["baggage_claim"],
3605 | "tags": ["airport"]
3606 | }, {
3607 | "emoji": "🛅",
3608 | "description": "left luggage",
3609 | "aliases": ["left_luggage"],
3610 | "tags": []
3611 | }, {
3612 | "emoji": "🛃",
3613 | "description": "customs",
3614 | "aliases": ["customs"],
3615 | "tags": []
3616 | }, {
3617 | "emoji": "🉑",
3618 | "description": "circled ideograph accept",
3619 | "aliases": ["accept"],
3620 | "tags": []
3621 | }, {
3622 | "emoji": "㊙️",
3623 | "description": "circled ideograph secret",
3624 | "aliases": ["secret"],
3625 | "tags": []
3626 | }, {
3627 | "emoji": "㊗️",
3628 | "description": "circled ideograph congratulation",
3629 | "aliases": ["congratulations"],
3630 | "tags": []
3631 | }, {
3632 | "emoji": "🆑",
3633 | "description": "squared cl",
3634 | "aliases": ["cl"],
3635 | "tags": []
3636 | }, {
3637 | "emoji": "🆘",
3638 | "description": "squared sos",
3639 | "aliases": ["sos"],
3640 | "tags": ["help", "emergency"]
3641 | }, {
3642 | "emoji": "🆔",
3643 | "description": "squared id",
3644 | "aliases": ["id"],
3645 | "tags": []
3646 | }, {
3647 | "emoji": "🚫",
3648 | "description": "no entry sign",
3649 | "aliases": ["no_entry_sign"],
3650 | "tags": ["block", "forbidden"]
3651 | }, {
3652 | "emoji": "🔞",
3653 | "description": "no one under eighteen symbol",
3654 | "aliases": ["underage"],
3655 | "tags": []
3656 | }, {
3657 | "emoji": "📵",
3658 | "description": "no mobile phones",
3659 | "aliases": ["no_mobile_phones"],
3660 | "tags": []
3661 | }, {
3662 | "emoji": "🚯",
3663 | "description": "do not litter symbol",
3664 | "aliases": ["do_not_litter"],
3665 | "tags": []
3666 | }, {
3667 | "emoji": "🚱",
3668 | "description": "non-potable water symbol",
3669 | "aliases": ["non-potable_water"],
3670 | "tags": []
3671 | }, {
3672 | "emoji": "🚳",
3673 | "description": "no bicycles",
3674 | "aliases": ["no_bicycles"],
3675 | "tags": []
3676 | }, {
3677 | "emoji": "🚷",
3678 | "description": "no pedestrians",
3679 | "aliases": ["no_pedestrians"],
3680 | "tags": []
3681 | }, {
3682 | "emoji": "🚸",
3683 | "description": "children crossing",
3684 | "aliases": ["children_crossing"],
3685 | "tags": []
3686 | }, {
3687 | "emoji": "⛔",
3688 | "description": "no entry",
3689 | "aliases": ["no_entry"],
3690 | "tags": ["limit"]
3691 | }, {
3692 | "emoji": "✳️",
3693 | "description": "eight spoked asterisk",
3694 | "aliases": ["eight_spoked_asterisk"],
3695 | "tags": []
3696 | }, {
3697 | "emoji": "❇️",
3698 | "description": "sparkle",
3699 | "aliases": ["sparkle"],
3700 | "tags": []
3701 | }, {
3702 | "emoji": "❎",
3703 | "description": "negative squared cross mark",
3704 | "aliases": ["negative_squared_cross_mark"],
3705 | "tags": []
3706 | }, {
3707 | "emoji": "✅",
3708 | "description": "white heavy check mark",
3709 | "aliases": ["white_check_mark"],
3710 | "tags": []
3711 | }, {
3712 | "emoji": "✴️",
3713 | "description": "eight pointed black star",
3714 | "aliases": ["eight_pointed_black_star"],
3715 | "tags": []
3716 | }, {
3717 | "emoji": "💟",
3718 | "description": "heart decoration",
3719 | "aliases": ["heart_decoration"],
3720 | "tags": []
3721 | }, {
3722 | "emoji": "🆚",
3723 | "description": "squared vs",
3724 | "aliases": ["vs"],
3725 | "tags": []
3726 | }, {
3727 | "emoji": "📳",
3728 | "description": "vibration mode",
3729 | "aliases": ["vibration_mode"],
3730 | "tags": []
3731 | }, {
3732 | "emoji": "📴",
3733 | "description": "mobile phone off",
3734 | "aliases": ["mobile_phone_off"],
3735 | "tags": ["mute", "off"]
3736 | }, {
3737 | "emoji": "🅰️",
3738 | "description": "negative squared latin capital letter a",
3739 | "aliases": ["a"],
3740 | "tags": []
3741 | }, {
3742 | "emoji": "🅱️",
3743 | "description": "negative squared latin capital letter b",
3744 | "aliases": ["b"],
3745 | "tags": []
3746 | }, {
3747 | "emoji": "🆎",
3748 | "description": "negative squared ab",
3749 | "aliases": ["ab"],
3750 | "tags": []
3751 | }, {
3752 | "emoji": "🅾️",
3753 | "description": "negative squared latin capital letter o",
3754 | "aliases": ["o2"],
3755 | "tags": []
3756 | }, {
3757 | "emoji": "💠",
3758 | "description": "diamond shape with a dot inside",
3759 | "aliases": ["diamond_shape_with_a_dot_inside"],
3760 | "tags": []
3761 | }, {
3762 | "emoji": "➿",
3763 | "description": "double curly loop",
3764 | "aliases": ["loop"],
3765 | "tags": []
3766 | }, {
3767 | "emoji": "♻️",
3768 | "description": "black universal recycling symbol",
3769 | "aliases": ["recycle"],
3770 | "tags": ["environment", "green"]
3771 | }, {
3772 | "emoji": "♈",
3773 | "description": "aries",
3774 | "aliases": ["aries"],
3775 | "tags": []
3776 | }, {
3777 | "emoji": "♉",
3778 | "description": "taurus",
3779 | "aliases": ["taurus"],
3780 | "tags": []
3781 | }, {
3782 | "emoji": "♊",
3783 | "description": "gemini",
3784 | "aliases": ["gemini"],
3785 | "tags": []
3786 | }, {
3787 | "emoji": "♋",
3788 | "description": "cancer",
3789 | "aliases": ["cancer"],
3790 | "tags": []
3791 | }, {
3792 | "emoji": "♌",
3793 | "description": "leo",
3794 | "aliases": ["leo"],
3795 | "tags": []
3796 | }, {
3797 | "emoji": "♍",
3798 | "description": "virgo",
3799 | "aliases": ["virgo"],
3800 | "tags": []
3801 | }, {
3802 | "emoji": "♎",
3803 | "description": "libra",
3804 | "aliases": ["libra"],
3805 | "tags": []
3806 | }, {
3807 | "emoji": "♏",
3808 | "description": "scorpius",
3809 | "aliases": ["scorpius"],
3810 | "tags": []
3811 | }, {
3812 | "emoji": "♐",
3813 | "description": "sagittarius",
3814 | "aliases": ["sagittarius"],
3815 | "tags": []
3816 | }, {
3817 | "emoji": "♑",
3818 | "description": "capricorn",
3819 | "aliases": ["capricorn"],
3820 | "tags": []
3821 | }, {
3822 | "emoji": "♒",
3823 | "description": "aquarius",
3824 | "aliases": ["aquarius"],
3825 | "tags": []
3826 | }, {
3827 | "emoji": "♓",
3828 | "description": "pisces",
3829 | "aliases": ["pisces"],
3830 | "tags": []
3831 | }, {
3832 | "emoji": "⛎",
3833 | "description": "ophiuchus",
3834 | "aliases": ["ophiuchus"],
3835 | "tags": []
3836 | }, {
3837 | "emoji": "🔯",
3838 | "description": "six pointed star with middle dot",
3839 | "aliases": ["six_pointed_star"],
3840 | "tags": []
3841 | }, {
3842 | "emoji": "🏧",
3843 | "description": "automated teller machine",
3844 | "aliases": ["atm"],
3845 | "tags": []
3846 | }, {
3847 | "emoji": "💹",
3848 | "description": "chart with upwards trend and yen sign",
3849 | "aliases": ["chart"],
3850 | "tags": []
3851 | }, {
3852 | "emoji": "💲",
3853 | "description": "heavy dollar sign",
3854 | "aliases": ["heavy_dollar_sign"],
3855 | "tags": []
3856 | }, {
3857 | "emoji": "💱",
3858 | "description": "currency exchange",
3859 | "aliases": ["currency_exchange"],
3860 | "tags": []
3861 | }, {
3862 | "emoji": "©️",
3863 | "description": "copyright sign",
3864 | "aliases": ["copyright"],
3865 | "tags": []
3866 | }, {
3867 | "emoji": "®️",
3868 | "description": "registered sign",
3869 | "aliases": ["registered"],
3870 | "tags": []
3871 | }, {
3872 | "emoji": "™️",
3873 | "description": "trade mark sign",
3874 | "aliases": ["tm"],
3875 | "tags": ["trademark"]
3876 | }, {
3877 | "emoji": "❌",
3878 | "description": "cross mark",
3879 | "aliases": ["x"],
3880 | "tags": []
3881 | }, {
3882 | "emoji": "‼️",
3883 | "description": "double exclamation mark",
3884 | "aliases": ["bangbang"],
3885 | "tags": []
3886 | }, {
3887 | "emoji": "⁉️",
3888 | "description": "exclamation question mark",
3889 | "aliases": ["interrobang"],
3890 | "tags": []
3891 | }, {
3892 | "emoji": "❗",
3893 | "description": "heavy exclamation mark symbol",
3894 | "aliases": ["exclamation", "heavy_exclamation_mark"],
3895 | "tags": ["bang"]
3896 | }, {
3897 | "emoji": "❓",
3898 | "description": "black question mark ornament",
3899 | "aliases": ["question"],
3900 | "tags": ["confused"]
3901 | }, {
3902 | "emoji": "❕",
3903 | "description": "white exclamation mark ornament",
3904 | "aliases": ["grey_exclamation"],
3905 | "tags": []
3906 | }, {
3907 | "emoji": "❔",
3908 | "description": "white question mark ornament",
3909 | "aliases": ["grey_question"],
3910 | "tags": []
3911 | }, {
3912 | "emoji": "⭕",
3913 | "description": "heavy large circle",
3914 | "aliases": ["o"],
3915 | "tags": []
3916 | }, {
3917 | "emoji": "🔝",
3918 | "description": "top with upwards arrow above",
3919 | "aliases": ["top"],
3920 | "tags": []
3921 | }, {
3922 | "emoji": "🔚",
3923 | "description": "end with leftwards arrow above",
3924 | "aliases": ["end"],
3925 | "tags": []
3926 | }, {
3927 | "emoji": "🔙",
3928 | "description": "back with leftwards arrow above",
3929 | "aliases": ["back"],
3930 | "tags": []
3931 | }, {
3932 | "emoji": "🔛",
3933 | "description": "on with exclamation mark with left right arrow above",
3934 | "aliases": ["on"],
3935 | "tags": []
3936 | }, {
3937 | "emoji": "🔜",
3938 | "description": "soon with rightwards arrow above",
3939 | "aliases": ["soon"],
3940 | "tags": []
3941 | }, {
3942 | "emoji": "🔃",
3943 | "description": "clockwise downwards and upwards open circle arrows",
3944 | "aliases": ["arrows_clockwise"],
3945 | "tags": []
3946 | }, {
3947 | "emoji": "🕛",
3948 | "description": "clock face twelve oclock",
3949 | "aliases": ["clock12"],
3950 | "tags": []
3951 | }, {
3952 | "emoji": "🕧",
3953 | "description": "clock face twelve-thirty",
3954 | "aliases": ["clock1230"],
3955 | "tags": []
3956 | }, {
3957 | "emoji": "🕐",
3958 | "description": "clock face one oclock",
3959 | "aliases": ["clock1"],
3960 | "tags": []
3961 | }, {
3962 | "emoji": "🕜",
3963 | "description": "clock face one-thirty",
3964 | "aliases": ["clock130"],
3965 | "tags": []
3966 | }, {
3967 | "emoji": "🕑",
3968 | "description": "clock face two oclock",
3969 | "aliases": ["clock2"],
3970 | "tags": []
3971 | }, {
3972 | "emoji": "🕝",
3973 | "description": "clock face two-thirty",
3974 | "aliases": ["clock230"],
3975 | "tags": []
3976 | }, {
3977 | "emoji": "🕒",
3978 | "description": "clock face three oclock",
3979 | "aliases": ["clock3"],
3980 | "tags": []
3981 | }, {
3982 | "emoji": "🕞",
3983 | "description": "clock face three-thirty",
3984 | "aliases": ["clock330"],
3985 | "tags": []
3986 | }, {
3987 | "emoji": "🕓",
3988 | "description": "clock face four oclock",
3989 | "aliases": ["clock4"],
3990 | "tags": []
3991 | }, {
3992 | "emoji": "🕟",
3993 | "description": "clock face four-thirty",
3994 | "aliases": ["clock430"],
3995 | "tags": []
3996 | }, {
3997 | "emoji": "🕔",
3998 | "description": "clock face five oclock",
3999 | "aliases": ["clock5"],
4000 | "tags": []
4001 | }, {
4002 | "emoji": "🕠",
4003 | "description": "clock face five-thirty",
4004 | "aliases": ["clock530"],
4005 | "tags": []
4006 | }, {
4007 | "emoji": "🕕",
4008 | "description": "clock face six oclock",
4009 | "aliases": ["clock6"],
4010 | "tags": []
4011 | }, {
4012 | "emoji": "🕖",
4013 | "description": "clock face seven oclock",
4014 | "aliases": ["clock7"],
4015 | "tags": []
4016 | }, {
4017 | "emoji": "🕗",
4018 | "description": "clock face eight oclock",
4019 | "aliases": ["clock8"],
4020 | "tags": []
4021 | }, {
4022 | "emoji": "🕘",
4023 | "description": "clock face nine oclock",
4024 | "aliases": ["clock9"],
4025 | "tags": []
4026 | }, {
4027 | "emoji": "🕙",
4028 | "description": "clock face ten oclock",
4029 | "aliases": ["clock10"],
4030 | "tags": []
4031 | }, {
4032 | "emoji": "🕚",
4033 | "description": "clock face eleven oclock",
4034 | "aliases": ["clock11"],
4035 | "tags": []
4036 | }, {
4037 | "emoji": "🕡",
4038 | "description": "clock face six-thirty",
4039 | "aliases": ["clock630"],
4040 | "tags": []
4041 | }, {
4042 | "emoji": "🕢",
4043 | "description": "clock face seven-thirty",
4044 | "aliases": ["clock730"],
4045 | "tags": []
4046 | }, {
4047 | "emoji": "🕣",
4048 | "description": "clock face eight-thirty",
4049 | "aliases": ["clock830"],
4050 | "tags": []
4051 | }, {
4052 | "emoji": "🕤",
4053 | "description": "clock face nine-thirty",
4054 | "aliases": ["clock930"],
4055 | "tags": []
4056 | }, {
4057 | "emoji": "🕥",
4058 | "description": "clock face ten-thirty",
4059 | "aliases": ["clock1030"],
4060 | "tags": []
4061 | }, {
4062 | "emoji": "🕦",
4063 | "description": "clock face eleven-thirty",
4064 | "aliases": ["clock1130"],
4065 | "tags": []
4066 | }, {
4067 | "emoji": "✖️",
4068 | "description": "heavy multiplication x",
4069 | "aliases": ["heavy_multiplication_x"],
4070 | "tags": []
4071 | }, {
4072 | "emoji": "➕",
4073 | "description": "heavy plus sign",
4074 | "aliases": ["heavy_plus_sign"],
4075 | "tags": []
4076 | }, {
4077 | "emoji": "➖",
4078 | "description": "heavy minus sign",
4079 | "aliases": ["heavy_minus_sign"],
4080 | "tags": []
4081 | }, {
4082 | "emoji": "➗",
4083 | "description": "heavy division sign",
4084 | "aliases": ["heavy_division_sign"],
4085 | "tags": []
4086 | }, {
4087 | "emoji": "♠️",
4088 | "description": "black spade suit",
4089 | "aliases": ["spades"],
4090 | "tags": []
4091 | }, {
4092 | "emoji": "♥️",
4093 | "description": "black heart suit",
4094 | "aliases": ["hearts"],
4095 | "tags": []
4096 | }, {
4097 | "emoji": "♣️",
4098 | "description": "black club suit",
4099 | "aliases": ["clubs"],
4100 | "tags": []
4101 | }, {
4102 | "emoji": "♦️",
4103 | "description": "black diamond suit",
4104 | "aliases": ["diamonds"],
4105 | "tags": []
4106 | }, {
4107 | "emoji": "💮",
4108 | "description": "white flower",
4109 | "aliases": ["white_flower"],
4110 | "tags": []
4111 | }, {
4112 | "emoji": "💯",
4113 | "description": "hundred points symbol",
4114 | "aliases": ["100"],
4115 | "tags": ["score", "perfect"]
4116 | }, {
4117 | "emoji": "✔️",
4118 | "description": "heavy check mark",
4119 | "aliases": ["heavy_check_mark"],
4120 | "tags": []
4121 | }, {
4122 | "emoji": "☑️",
4123 | "description": "ballot box with check",
4124 | "aliases": ["ballot_box_with_check"],
4125 | "tags": []
4126 | }, {
4127 | "emoji": "🔘",
4128 | "description": "radio button",
4129 | "aliases": ["radio_button"],
4130 | "tags": []
4131 | }, {
4132 | "emoji": "🔗",
4133 | "description": "link symbol",
4134 | "aliases": ["link"],
4135 | "tags": []
4136 | }, {
4137 | "emoji": "➰",
4138 | "description": "curly loop",
4139 | "aliases": ["curly_loop"],
4140 | "tags": []
4141 | }, {
4142 | "emoji": "〰️",
4143 | "description": "wavy dash",
4144 | "aliases": ["wavy_dash"],
4145 | "tags": []
4146 | }, {
4147 | "emoji": "〽️",
4148 | "description": "part alternation mark",
4149 | "aliases": ["part_alternation_mark"],
4150 | "tags": []
4151 | }, {
4152 | "emoji": "🔱",
4153 | "description": "trident emblem",
4154 | "aliases": ["trident"],
4155 | "tags": []
4156 | }, {
4157 | "emoji": "◼️",
4158 | "description": "black medium square",
4159 | "aliases": ["black_medium_square"],
4160 | "tags": []
4161 | }, {
4162 | "emoji": "◻️",
4163 | "description": "white medium square",
4164 | "aliases": ["white_medium_square"],
4165 | "tags": []
4166 | }, {
4167 | "emoji": "◾",
4168 | "description": "black medium small square",
4169 | "aliases": ["black_medium_small_square"],
4170 | "tags": []
4171 | }, {
4172 | "emoji": "◽",
4173 | "description": "white medium small square",
4174 | "aliases": ["white_medium_small_square"],
4175 | "tags": []
4176 | }, {
4177 | "emoji": "▪️",
4178 | "description": "black small square",
4179 | "aliases": ["black_small_square"],
4180 | "tags": []
4181 | }, {
4182 | "emoji": "▫️",
4183 | "description": "white small square",
4184 | "aliases": ["white_small_square"],
4185 | "tags": []
4186 | }, {
4187 | "emoji": "🔺",
4188 | "description": "up-pointing red triangle",
4189 | "aliases": ["small_red_triangle"],
4190 | "tags": []
4191 | }, {
4192 | "emoji": "🔲",
4193 | "description": "black square button",
4194 | "aliases": ["black_square_button"],
4195 | "tags": []
4196 | }, {
4197 | "emoji": "🔳",
4198 | "description": "white square button",
4199 | "aliases": ["white_square_button"],
4200 | "tags": []
4201 | }, {
4202 | "emoji": "⚫",
4203 | "description": "medium black circle",
4204 | "aliases": ["black_circle"],
4205 | "tags": []
4206 | }, {
4207 | "emoji": "⚪",
4208 | "description": "medium white circle",
4209 | "aliases": ["white_circle"],
4210 | "tags": []
4211 | }, {
4212 | "emoji": "🔴",
4213 | "description": "large red circle",
4214 | "aliases": ["red_circle"],
4215 | "tags": []
4216 | }, {
4217 | "emoji": "🔵",
4218 | "description": "large blue circle",
4219 | "aliases": ["large_blue_circle"],
4220 | "tags": []
4221 | }, {
4222 | "emoji": "🔻",
4223 | "description": "down-pointing red triangle",
4224 | "aliases": ["small_red_triangle_down"],
4225 | "tags": []
4226 | }, {
4227 | "emoji": "⬜",
4228 | "description": "white large square",
4229 | "aliases": ["white_large_square"],
4230 | "tags": []
4231 | }, {
4232 | "emoji": "⬛",
4233 | "description": "black large square",
4234 | "aliases": ["black_large_square"],
4235 | "tags": []
4236 | }, {
4237 | "emoji": "🔶",
4238 | "description": "large orange diamond",
4239 | "aliases": ["large_orange_diamond"],
4240 | "tags": []
4241 | }, {
4242 | "emoji": "🔷",
4243 | "description": "large blue diamond",
4244 | "aliases": ["large_blue_diamond"],
4245 | "tags": []
4246 | }, {
4247 | "emoji": "🔸",
4248 | "description": "small orange diamond",
4249 | "aliases": ["small_orange_diamond"],
4250 | "tags": []
4251 | }, {
4252 | "emoji": "🔹",
4253 | "description": "small blue diamond",
4254 | "aliases": ["small_blue_diamond"],
4255 | "tags": []
4256 | }, {
4257 | "aliases": ["basecamp"],
4258 | "tags": []
4259 | }, {
4260 | "aliases": ["basecampy"],
4261 | "tags": []
4262 | }, {
4263 | "aliases": ["bowtie"],
4264 | "tags": []
4265 | }, {
4266 | "aliases": ["feelsgood"],
4267 | "tags": []
4268 | }, {
4269 | "aliases": ["finnadie"],
4270 | "tags": []
4271 | }, {
4272 | "aliases": ["fu"],
4273 | "tags": []
4274 | }, {
4275 | "aliases": ["goberserk"],
4276 | "tags": []
4277 | }, {
4278 | "aliases": ["godmode"],
4279 | "tags": []
4280 | }, {
4281 | "aliases": ["hurtrealbad"],
4282 | "tags": []
4283 | }, {
4284 | "aliases": ["metal"],
4285 | "tags": []
4286 | }, {
4287 | "aliases": ["neckbeard"],
4288 | "tags": []
4289 | }, {
4290 | "aliases": ["octocat"],
4291 | "tags": []
4292 | }, {
4293 | "aliases": ["rage1"],
4294 | "tags": []
4295 | }, {
4296 | "aliases": ["rage2"],
4297 | "tags": []
4298 | }, {
4299 | "aliases": ["rage3"],
4300 | "tags": []
4301 | }, {
4302 | "aliases": ["rage4"],
4303 | "tags": []
4304 | }, {
4305 | "aliases": ["shipit", "squirrel"],
4306 | "tags": []
4307 | }, {
4308 | "aliases": ["suspect"],
4309 | "tags": []
4310 | }, {
4311 | "aliases": ["taco"],
4312 | "tags": []
4313 | }, {
4314 | "aliases": ["trollface"],
4315 | "tags": []
4316 | }]
4317 |
4318 | Emojis.seed = ->
4319 | Emojis._collection.remove({})
4320 | count = 0
4321 |
4322 | count = emojis.reduce (memo, emoji) ->
4323 |
4324 | # I wanna have a canonical alias, not an array of them.
4325 | # Thus fetch the first alias and put the rest, if exists,
4326 | # in the tags array.
4327 | emoji.alias = emoji.aliases[0]
4328 | emoji.tags = emoji.tags.concat(_.rest(emoji.aliases))
4329 |
4330 | delete emoji.aliases
4331 | Emojis._collection.insert(emoji)
4332 |
4333 | return memo + 1
4334 | , 0
4335 |
4336 | return count
4337 |
4338 | Meteor.startup ->
4339 | if Emojis.find().count() is 0
4340 | Emojis.seed()
4341 |
--------------------------------------------------------------------------------