├── .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 "trollface" 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 | "#{emoji.emoji or emoji.alias}" 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 | // => trollface 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 | <unicode-version> 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 | --------------------------------------------------------------------------------