Permalink
Browse files

Merge pull request #47 from github/no-symlinks

Get emoji list & aliases from data file instead of symlinks
  • Loading branch information...
2 parents 204ace7 + a911209 commit d7b020fd169fbffaac83cb4ad94a7a800c24ace6 @mislav mislav committed Jun 27, 2014
Showing 990 changed files with 8,700 additions and 1,043 deletions.
View
@@ -0,0 +1,2 @@
+.ruby-version
+db/NamesList.txt
View
@@ -39,7 +39,7 @@ Then have them compiled to public on deploy.
``` ruby
# config/application.rb
-config.assets.precompile << "emoji/*.png"
+config.assets.precompile << "emoji/**/*.png"
```
**WARNING** Since there are a ton of images, just adding the path may slow down other lookups if you aren't using it. Compiling all the emojis on deploy will add overhead to your deploy if even the images haven't changed. Theres just so many more superfluous files to iterate over. Also, the urls will be fingerprinted which may not be ideal for referencing from cached content.
@@ -55,9 +55,9 @@ See the [Emoji cheat sheet](http://www.emoji-cheat-sheet.com) for more examples.
```ruby
module EmojiHelper
def emojify(content)
- h(content).to_str.gsub(/:([a-z0-9\+\-_]+):/) do |match|
- if Emoji.names.include?($1)
- '<img alt="' + $1 + '" height="20" src="' + asset_path("emoji/#{$1}.png") + '" style="vertical-align:middle" width="20" />'
+ h(content).to_str.gsub(/:([\w+-]+):/) do |match|
+ if emoji = Emoji.find_by_alias($1) { nil }
+ %(<img alt="#$1" src="#{asset_path("emoji/#{emoji.image_filename}")}" style="vertical-align:middle" width="20" height="20" />)
else
match
end
@@ -72,11 +72,9 @@ Unicode mapping
Translate emoji names to unicode and vice versa.
```ruby
->> Emoji.unicode_for("cat")
+>> Emoji.find_by_alias("cat").raw
=> "๐Ÿฑ" # Don't see a cat? That's U+1F431.
->> Emoji.name_for("\u{1f431}")
+>> Emoji.find_by_unicode("\u{1f431}").name
=> "cat"
```
-
-Note: These will only work if you install gemoji from github. In your Gemfile, for example: `gem 'gemoji', github: 'github/gemoji'`.
View
@@ -8,9 +8,22 @@ Rake::TestTask.new do |t|
end
namespace :db do
- task :generate do
- system "cp /System/Library/Input\\ Methods/CharacterPalette.app/Contents/Resources/Category-Emoji.plist db/"
- system "plutil -convert json db/Category-Emoji.plist"
- system "mv db/Category-Emoji.plist db/Category-Emoji.json"
+ desc %(Generate Emoji data files needed for development)
+ task :generate => ['db/Category-Emoji.json', 'db/NamesList.txt']
+
+ desc %(Dump a list of supported Emoji with Unicode descriptions and aliases)
+ task :dump => :generate do
+ system 'ruby', '-Ilib', 'db/dump.rb'
end
end
+
+emoji_plist = '/System/Library/Input Methods/CharacterPalette.app/Contents/Resources/Category-Emoji.plist'
+nameslist_url = 'http://www.unicode.org/Public/6.3.0/ucd/NamesList.txt'
+
+task 'db/Category-Emoji.json' do |t|
+ system "plutil -convert json -r '#{emoji_plist}' -o '#{t.name}'"
+end
+
+file 'db/NamesList.txt' do |t|
+ system "curl -fsSL '#{nameslist_url}' -o '#{t.name}'"
+end
@@ -1 +1,47 @@
-{"EmojiDataArray":[{"CVDataTitle":"EmojiCategory-People","CVCategoryImage":"Emoji-HumanImage","CVCategoryData":{"CVSkipNullGlyphs":true,"Data":"๐Ÿ˜„,๐Ÿ˜ƒ,๐Ÿ˜€,๐Ÿ˜Š,โ˜บ๏ธ,๐Ÿ˜‰,๐Ÿ˜,๐Ÿ˜˜,๐Ÿ˜š,๐Ÿ˜—,๐Ÿ˜™,๐Ÿ˜œ,๐Ÿ˜,๐Ÿ˜›,๐Ÿ˜ณ,๐Ÿ˜,๐Ÿ˜”,๐Ÿ˜Œ,๐Ÿ˜’,๐Ÿ˜ž,๐Ÿ˜ฃ,๐Ÿ˜ข,๐Ÿ˜‚,๐Ÿ˜ญ,๐Ÿ˜ช,๐Ÿ˜ฅ,๐Ÿ˜ฐ,๐Ÿ˜…,๐Ÿ˜“,๐Ÿ˜ฉ,๐Ÿ˜ซ,๐Ÿ˜จ,๐Ÿ˜ฑ,๐Ÿ˜ ,๐Ÿ˜ก,๐Ÿ˜ค,๐Ÿ˜–,๐Ÿ˜†,๐Ÿ˜‹,๐Ÿ˜ท,๐Ÿ˜Ž,๐Ÿ˜ด,๐Ÿ˜ต,๐Ÿ˜ฒ,๐Ÿ˜Ÿ,๐Ÿ˜ฆ,๐Ÿ˜ง,๐Ÿ˜ˆ,๐Ÿ‘ฟ,๐Ÿ˜ฎ,๐Ÿ˜ฌ,๐Ÿ˜,๐Ÿ˜•,๐Ÿ˜ฏ,๐Ÿ˜ถ,๐Ÿ˜‡,๐Ÿ˜,๐Ÿ˜‘,๐Ÿ‘ฒ,๐Ÿ‘ณ,๐Ÿ‘ฎ,๐Ÿ‘ท,๐Ÿ’‚,๐Ÿ‘ถ,๐Ÿ‘ฆ,๐Ÿ‘ง,๐Ÿ‘จ,๐Ÿ‘ฉ,๐Ÿ‘ด,๐Ÿ‘ต,๐Ÿ‘ฑ,๐Ÿ‘ผ,๐Ÿ‘ธ,๐Ÿ˜บ,๐Ÿ˜ธ,๐Ÿ˜ป,๐Ÿ˜ฝ,๐Ÿ˜ผ,๐Ÿ™€,๐Ÿ˜ฟ,๐Ÿ˜น,๐Ÿ˜พ,๐Ÿ‘น,๐Ÿ‘บ,๐Ÿ™ˆ,๐Ÿ™‰,๐Ÿ™Š,๐Ÿ’€,๐Ÿ‘ฝ,๐Ÿ’ฉ,๐Ÿ”ฅ,โœจ,๐ŸŒŸ,๐Ÿ’ซ,๐Ÿ’ฅ,๐Ÿ’ข,๐Ÿ’ฆ,๐Ÿ’ง,๐Ÿ’ค,๐Ÿ’จ,๐Ÿ‘‚,๐Ÿ‘€,๐Ÿ‘ƒ,๐Ÿ‘…,๐Ÿ‘„,๐Ÿ‘,๐Ÿ‘Ž,๐Ÿ‘Œ,๐Ÿ‘Š,โœŠ,โœŒ๏ธ,๐Ÿ‘‹,โœ‹,๐Ÿ‘,๐Ÿ‘†,๐Ÿ‘‡,๐Ÿ‘‰,๐Ÿ‘ˆ,๐Ÿ™Œ,๐Ÿ™,โ˜๏ธ,๐Ÿ‘,๐Ÿ’ช,๐Ÿšถ,๐Ÿƒ,๐Ÿ’ƒ,๐Ÿ‘ซ,๐Ÿ‘ช,๐Ÿ‘ฌ,๐Ÿ‘ญ,๐Ÿ’,๐Ÿ’‘,๐Ÿ‘ฏ,๐Ÿ™†,๐Ÿ™…,๐Ÿ’,๐Ÿ™‹,๐Ÿ’†,๐Ÿ’‡,๐Ÿ’…,๐Ÿ‘ฐ,๐Ÿ™Ž,๐Ÿ™,๐Ÿ™‡,๐ŸŽฉ,๐Ÿ‘‘,๐Ÿ‘’,๐Ÿ‘Ÿ,๐Ÿ‘ž,๐Ÿ‘ก,๐Ÿ‘ ,๐Ÿ‘ข,๐Ÿ‘•,๐Ÿ‘”,๐Ÿ‘š,๐Ÿ‘—,๐ŸŽฝ,๐Ÿ‘–,๐Ÿ‘˜,๐Ÿ‘™,๐Ÿ’ผ,๐Ÿ‘œ,๐Ÿ‘,๐Ÿ‘›,๐Ÿ‘“,๐ŸŽ€,๐ŸŒ‚,๐Ÿ’„,๐Ÿ’›,๐Ÿ’™,๐Ÿ’œ,๐Ÿ’š,โค๏ธ,๐Ÿ’”,๐Ÿ’—,๐Ÿ’“,๐Ÿ’•,๐Ÿ’–,๐Ÿ’ž,๐Ÿ’˜,๐Ÿ’Œ,๐Ÿ’‹,๐Ÿ’,๐Ÿ’Ž,๐Ÿ‘ค,๐Ÿ‘ฅ,๐Ÿ’ฌ,๐Ÿ‘ฃ,๐Ÿ’ญ"}},{"CVDataTitle":"EmojiCategory-Nature","CVCategoryImage":"Emoji-NatureImage","CVCategoryData":{"CVSkipNullGlyphs":true,"Data":"๐Ÿถ,๐Ÿบ,๐Ÿฑ,๐Ÿญ,๐Ÿน,๐Ÿฐ,๐Ÿธ,๐Ÿฏ,๐Ÿจ,๐Ÿป,๐Ÿท,๐Ÿฝ,๐Ÿฎ,๐Ÿ—,๐Ÿต,๐Ÿ’,๐Ÿด,๐Ÿ‘,๐Ÿ˜,๐Ÿผ,๐Ÿง,๐Ÿฆ,๐Ÿค,๐Ÿฅ,๐Ÿฃ,๐Ÿ”,๐Ÿ,๐Ÿข,๐Ÿ›,๐Ÿ,๐Ÿœ,๐Ÿž,๐ŸŒ,๐Ÿ™,๐Ÿš,๐Ÿ ,๐ŸŸ,๐Ÿฌ,๐Ÿณ,๐Ÿ‹,๐Ÿ„,๐Ÿ,๐Ÿ€,๐Ÿƒ,๐Ÿ…,๐Ÿ‡,๐Ÿ‰,๐ŸŽ,๐Ÿ,๐Ÿ“,๐Ÿ•,๐Ÿ–,๐Ÿ,๐Ÿ‚,๐Ÿฒ,๐Ÿก,๐ŸŠ,๐Ÿซ,๐Ÿช,๐Ÿ†,๐Ÿˆ,๐Ÿฉ,๐Ÿพ,๐Ÿ’,๐ŸŒธ,๐ŸŒท,๐Ÿ€,๐ŸŒน,๐ŸŒป,๐ŸŒบ,๐Ÿ,๐Ÿƒ,๐Ÿ‚,๐ŸŒฟ,๐ŸŒพ,๐Ÿ„,๐ŸŒต,๐ŸŒด,๐ŸŒฒ,๐ŸŒณ,๐ŸŒฐ,๐ŸŒฑ,๐ŸŒผ,๐ŸŒ,๐ŸŒž,๐ŸŒ,๐ŸŒš,๐ŸŒ‘,๐ŸŒ’,๐ŸŒ“,๐ŸŒ”,๐ŸŒ•,๐ŸŒ–,๐ŸŒ—,๐ŸŒ˜,๐ŸŒœ,๐ŸŒ›,๐ŸŒ™,๐ŸŒ,๐ŸŒŽ,๐ŸŒ,๐ŸŒ‹,๐ŸŒŒ,๐ŸŒ ,โญ๏ธ,โ˜€๏ธ,โ›…๏ธ,โ˜๏ธ,โšก๏ธ,โ˜”๏ธ,โ„๏ธ,โ›„๏ธ,๐ŸŒ€,๐ŸŒ,๐ŸŒˆ,๐ŸŒŠ"}},{"CVDataTitle":"EmojiCategory-Objects","CVCategoryImage":"Emoji-ObjectsImage","CVCategoryData":{"CVSkipNullGlyphs":true,"Data":"๐ŸŽ,๐Ÿ’,๐ŸŽŽ,๐ŸŽ’,๐ŸŽ“,๐ŸŽ,๐ŸŽ†,๐ŸŽ‡,๐ŸŽ,๐ŸŽ‘,๐ŸŽƒ,๐Ÿ‘ป,๐ŸŽ…,๐ŸŽ„,๐ŸŽ,๐ŸŽ‹,๐ŸŽ‰,๐ŸŽŠ,๐ŸŽˆ,๐ŸŽŒ,๐Ÿ”ฎ,๐ŸŽฅ,๐Ÿ“ท,๐Ÿ“น,๐Ÿ“ผ,๐Ÿ’ฟ,๐Ÿ“€,๐Ÿ’ฝ,๐Ÿ’พ,๐Ÿ’ป,๐Ÿ“ฑ,โ˜Ž๏ธ,๐Ÿ“ž,๐Ÿ“Ÿ,๐Ÿ“ ,๐Ÿ“ก,๐Ÿ“บ,๐Ÿ“ป,๐Ÿ”Š,๐Ÿ”‰,๐Ÿ”ˆ,๐Ÿ”‡,๐Ÿ””,๐Ÿ”•,๐Ÿ“ข,๐Ÿ“ฃ,โณ,โŒ›๏ธ,โฐ,โŒš๏ธ,๐Ÿ”“,๐Ÿ”’,๐Ÿ”,๐Ÿ”,๐Ÿ”‘,๐Ÿ”Ž,๐Ÿ’ก,๐Ÿ”ฆ,๐Ÿ”†,๐Ÿ”…,๐Ÿ”Œ,๐Ÿ”‹,๐Ÿ”,๐Ÿ›,๐Ÿ›€,๐Ÿšฟ,๐Ÿšฝ,๐Ÿ”ง,๐Ÿ”ฉ,๐Ÿ”จ,๐Ÿšช,๐Ÿšฌ,๐Ÿ’ฃ,๐Ÿ”ซ,๐Ÿ”ช,๐Ÿ’Š,๐Ÿ’‰,๐Ÿ’ฐ,๐Ÿ’ด,๐Ÿ’ต,๐Ÿ’ท,๐Ÿ’ถ,๐Ÿ’ณ,๐Ÿ’ธ,๐Ÿ“ฒ,๐Ÿ“ง,๐Ÿ“ฅ,๐Ÿ“ค,โœ‰๏ธ,๐Ÿ“ฉ,๐Ÿ“จ,๐Ÿ“ฏ,๐Ÿ“ซ,๐Ÿ“ช,๐Ÿ“ฌ,๐Ÿ“ญ,๐Ÿ“ฎ,๐Ÿ“ฆ,๐Ÿ“,๐Ÿ“„,๐Ÿ“ƒ,๐Ÿ“‘,๐Ÿ“Š,๐Ÿ“ˆ,๐Ÿ“‰,๐Ÿ“œ,๐Ÿ“‹,๐Ÿ“…,๐Ÿ“†,๐Ÿ“‡,๐Ÿ“,๐Ÿ“‚,โœ‚๏ธ,๐Ÿ“Œ,๐Ÿ“Ž,โœ’๏ธ,โœ๏ธ,๐Ÿ“,๐Ÿ“,๐Ÿ“•,๐Ÿ“—,๐Ÿ“˜,๐Ÿ“™,๐Ÿ““,๐Ÿ“”,๐Ÿ“’,๐Ÿ“š,๐Ÿ“–,๐Ÿ”–,๐Ÿ“›,๐Ÿ”ฌ,๐Ÿ”ญ,๐Ÿ“ฐ,๐ŸŽจ,๐ŸŽฌ,๐ŸŽค,๐ŸŽง,๐ŸŽผ,๐ŸŽต,๐ŸŽถ,๐ŸŽน,๐ŸŽป,๐ŸŽบ,๐ŸŽท,๐ŸŽธ,๐Ÿ‘พ,๐ŸŽฎ,๐Ÿƒ,๐ŸŽด,๐Ÿ€„๏ธ,๐ŸŽฒ,๐ŸŽฏ,๐Ÿˆ,๐Ÿ€,โšฝ๏ธ,โšพ๏ธ,๐ŸŽพ,๐ŸŽฑ,๐Ÿ‰,๐ŸŽณ,โ›ณ๏ธ,๐Ÿšต,๐Ÿšด,๐Ÿ,๐Ÿ‡,๐Ÿ†,๐ŸŽฟ,๐Ÿ‚,๐ŸŠ,๐Ÿ„,๐ŸŽฃ,โ˜•๏ธ,๐Ÿต,๐Ÿถ,๐Ÿผ,๐Ÿบ,๐Ÿป,๐Ÿธ,๐Ÿน,๐Ÿท,๐Ÿด,๐Ÿ•,๐Ÿ”,๐ŸŸ,๐Ÿ—,๐Ÿ–,๐Ÿ,๐Ÿ›,๐Ÿค,๐Ÿฑ,๐Ÿฃ,๐Ÿฅ,๐Ÿ™,๐Ÿ˜,๐Ÿš,๐Ÿœ,๐Ÿฒ,๐Ÿข,๐Ÿก,๐Ÿณ,๐Ÿž,๐Ÿฉ,๐Ÿฎ,๐Ÿฆ,๐Ÿจ,๐Ÿง,๐ŸŽ‚,๐Ÿฐ,๐Ÿช,๐Ÿซ,๐Ÿฌ,๐Ÿญ,๐Ÿฏ,๐ŸŽ,๐Ÿ,๐ŸŠ,๐Ÿ‹,๐Ÿ’,๐Ÿ‡,๐Ÿ‰,๐Ÿ“,๐Ÿ‘,๐Ÿˆ,๐ŸŒ,๐Ÿ,๐Ÿ,๐Ÿ ,๐Ÿ†,๐Ÿ…,๐ŸŒฝ"}},{"CVDataTitle":"EmojiCategory-Places","CVCategoryImage":"Emoji-PlacesImage","CVCategoryData":{"CVSkipNullGlyphs":true,"Data":"๐Ÿ ,๐Ÿก,๐Ÿซ,๐Ÿข,๐Ÿฃ,๐Ÿฅ,๐Ÿฆ,๐Ÿช,๐Ÿฉ,๐Ÿจ,๐Ÿ’’,โ›ช๏ธ,๐Ÿฌ,๐Ÿค,๐ŸŒ‡,๐ŸŒ†,๐Ÿฏ,๐Ÿฐ,โ›บ๏ธ,๐Ÿญ,๐Ÿ—ผ,๐Ÿ—พ,๐Ÿ—ป,๐ŸŒ„,๐ŸŒ…,๐ŸŒƒ,๐Ÿ—ฝ,๐ŸŒ‰,๐ŸŽ ,๐ŸŽก,โ›ฒ๏ธ,๐ŸŽข,๐Ÿšข,โ›ต๏ธ,๐Ÿšค,๐Ÿšฃ,โš“๏ธ,๐Ÿš€,โœˆ๏ธ,๐Ÿ’บ,๐Ÿš,๐Ÿš‚,๐ŸšŠ,๐Ÿš‰,๐Ÿšž,๐Ÿš†,๐Ÿš„,๐Ÿš…,๐Ÿšˆ,๐Ÿš‡,๐Ÿš,๐Ÿš‹,๐Ÿšƒ,๐ŸšŽ,๐ŸšŒ,๐Ÿš,๐Ÿš™,๐Ÿš˜,๐Ÿš—,๐Ÿš•,๐Ÿš–,๐Ÿš›,๐Ÿšš,๐Ÿšจ,๐Ÿš“,๐Ÿš”,๐Ÿš’,๐Ÿš‘,๐Ÿš,๐Ÿšฒ,๐Ÿšก,๐ŸšŸ,๐Ÿš ,๐Ÿšœ,๐Ÿ’ˆ,๐Ÿš,๐ŸŽซ,๐Ÿšฆ,๐Ÿšฅ,โš ๏ธ,๐Ÿšง,๐Ÿ”ฐ,โ›ฝ๏ธ,๐Ÿฎ,๐ŸŽฐ,โ™จ๏ธ,๐Ÿ—ฟ,๐ŸŽช,๐ŸŽญ,๐Ÿ“,๐Ÿšฉ,๐Ÿ‡ฏ๐Ÿ‡ต,๐Ÿ‡ฐ๐Ÿ‡ท,๐Ÿ‡ฉ๐Ÿ‡ช,๐Ÿ‡จ๐Ÿ‡ณ,๐Ÿ‡บ๐Ÿ‡ธ,๐Ÿ‡ซ๐Ÿ‡ท,๐Ÿ‡ช๐Ÿ‡ธ,๐Ÿ‡ฎ๐Ÿ‡น,๐Ÿ‡ท๐Ÿ‡บ,๐Ÿ‡ฌ๐Ÿ‡ง"}},{"CVDataTitle":"EmojiCategory-Symbols","CVCategoryImage":"Emoji-SymbolImage","CVCategoryData":{"CVSkipNullGlyphs":true,"Data":"1๏ธโƒฃ,2๏ธโƒฃ,3๏ธโƒฃ,4๏ธโƒฃ,5๏ธโƒฃ,6๏ธโƒฃ,7๏ธโƒฃ,8๏ธโƒฃ,9๏ธโƒฃ,0๏ธโƒฃ,๐Ÿ”Ÿ,๐Ÿ”ข,#๏ธโƒฃ,๐Ÿ”ฃ,โฌ†๏ธ,โฌ‡๏ธ,โฌ…๏ธ,โžก๏ธ,๐Ÿ” ,๐Ÿ”ก,๐Ÿ”ค,โ†—๏ธ,โ†–๏ธ,โ†˜๏ธ,โ†™๏ธ,โ†”๏ธ,โ†•๏ธ,๐Ÿ”„,โ—€๏ธ,โ–ถ๏ธ,๐Ÿ”ผ,๐Ÿ”ฝ,โ†ฉ๏ธ,โ†ช๏ธ,โ„น๏ธ,โช,โฉ,โซ,โฌ,โคต๏ธ,โคด๏ธ,๐Ÿ†—,๐Ÿ”€,๐Ÿ”,๐Ÿ”‚,๐Ÿ†•,๐Ÿ†™,๐Ÿ†’,๐Ÿ†“,๐Ÿ†–,๐Ÿ“ถ,๐ŸŽฆ,๐Ÿˆ,๐Ÿˆฏ๏ธ,๐Ÿˆณ,๐Ÿˆต,๐Ÿˆด,๐Ÿˆฒ,๐Ÿ‰,๐Ÿˆน,๐Ÿˆบ,๐Ÿˆถ,๐Ÿˆš๏ธ,๐Ÿšป,๐Ÿšน,๐Ÿšบ,๐Ÿšผ,๐Ÿšพ,๐Ÿšฐ,๐Ÿšฎ,๐Ÿ…ฟ๏ธ,โ™ฟ๏ธ,๐Ÿšญ,๐Ÿˆท,๐Ÿˆธ,๐Ÿˆ‚,โ“‚๏ธ,๐Ÿ›‚,๐Ÿ›„,๐Ÿ›…,๐Ÿ›ƒ,๐Ÿ‰‘,ใŠ™๏ธ,ใŠ—๏ธ,๐Ÿ†‘,๐Ÿ†˜,๐Ÿ†”,๐Ÿšซ,๐Ÿ”ž,๐Ÿ“ต,๐Ÿšฏ,๐Ÿšฑ,๐Ÿšณ,๐Ÿšท,๐Ÿšธ,โ›”๏ธ,โœณ๏ธ,โ‡๏ธ,โŽ,โœ…,โœด๏ธ,๐Ÿ’Ÿ,๐Ÿ†š,๐Ÿ“ณ,๐Ÿ“ด,๐Ÿ…ฐ,๐Ÿ…ฑ,๐Ÿ†Ž,๐Ÿ…พ,๐Ÿ’ ,โžฟ,โ™ป๏ธ,โ™ˆ๏ธ,โ™‰๏ธ,โ™Š๏ธ,โ™‹๏ธ,โ™Œ๏ธ,โ™๏ธ,โ™Ž๏ธ,โ™๏ธ,โ™๏ธ,โ™‘๏ธ,โ™’๏ธ,โ™“๏ธ,โ›Ž,๐Ÿ”ฏ,๐Ÿง,๐Ÿ’น,๐Ÿ’ฒ,๐Ÿ’ฑ,ยฉ,ยฎ,โ„ข,โŒ,โ€ผ๏ธ,โ‰๏ธ,โ—๏ธ,โ“,โ•,โ”,โญ•๏ธ,๐Ÿ”,๐Ÿ”š,๐Ÿ”™,๐Ÿ”›,๐Ÿ”œ,๐Ÿ”ƒ,๐Ÿ•›,๐Ÿ•ง,๐Ÿ•,๐Ÿ•œ,๐Ÿ•‘,๐Ÿ•,๐Ÿ•’,๐Ÿ•ž,๐Ÿ•“,๐Ÿ•Ÿ,๐Ÿ•”,๐Ÿ• ,๐Ÿ••,๐Ÿ•–,๐Ÿ•—,๐Ÿ•˜,๐Ÿ•™,๐Ÿ•š,๐Ÿ•ก,๐Ÿ•ข,๐Ÿ•ฃ,๐Ÿ•ค,๐Ÿ•ฅ,๐Ÿ•ฆ,โœ–๏ธ,โž•,โž–,โž—,โ™ ๏ธ,โ™ฅ๏ธ,โ™ฃ๏ธ,โ™ฆ๏ธ,๐Ÿ’ฎ,๐Ÿ’ฏ,โœ”๏ธ,โ˜‘๏ธ,๐Ÿ”˜,๐Ÿ”—,โžฐ,ใ€ฐ,ใ€ฝ๏ธ,๐Ÿ”ฑ,โ—ผ๏ธ,โ—ป๏ธ,โ—พ๏ธ,โ—ฝ๏ธ,โ–ช๏ธ,โ–ซ๏ธ,๐Ÿ”บ,๐Ÿ”ฒ,๐Ÿ”ณ,โšซ๏ธ,โšช๏ธ,๐Ÿ”ด,๐Ÿ”ต,๐Ÿ”ป,โฌœ๏ธ,โฌ›๏ธ,๐Ÿ”ถ,๐Ÿ”ท,๐Ÿ”ธ,๐Ÿ”น"}}],"CVViewFontList":["AppleColorEmoji"]}
+{
+ "EmojiDataArray" : [
+ {
+ "CVDataTitle" : "EmojiCategory-People",
+ "CVCategoryImage" : "Emoji-HumanImage",
+ "CVCategoryData" : {
+ "CVSkipNullGlyphs" : true,
+ "Data" : "๐Ÿ˜„,๐Ÿ˜ƒ,๐Ÿ˜€,๐Ÿ˜Š,โ˜บ๏ธ,๐Ÿ˜‰,๐Ÿ˜,๐Ÿ˜˜,๐Ÿ˜š,๐Ÿ˜—,๐Ÿ˜™,๐Ÿ˜œ,๐Ÿ˜,๐Ÿ˜›,๐Ÿ˜ณ,๐Ÿ˜,๐Ÿ˜”,๐Ÿ˜Œ,๐Ÿ˜’,๐Ÿ˜ž,๐Ÿ˜ฃ,๐Ÿ˜ข,๐Ÿ˜‚,๐Ÿ˜ญ,๐Ÿ˜ช,๐Ÿ˜ฅ,๐Ÿ˜ฐ,๐Ÿ˜…,๐Ÿ˜“,๐Ÿ˜ฉ,๐Ÿ˜ซ,๐Ÿ˜จ,๐Ÿ˜ฑ,๐Ÿ˜ ,๐Ÿ˜ก,๐Ÿ˜ค,๐Ÿ˜–,๐Ÿ˜†,๐Ÿ˜‹,๐Ÿ˜ท,๐Ÿ˜Ž,๐Ÿ˜ด,๐Ÿ˜ต,๐Ÿ˜ฒ,๐Ÿ˜Ÿ,๐Ÿ˜ฆ,๐Ÿ˜ง,๐Ÿ˜ˆ,๐Ÿ‘ฟ,๐Ÿ˜ฎ,๐Ÿ˜ฌ,๐Ÿ˜,๐Ÿ˜•,๐Ÿ˜ฏ,๐Ÿ˜ถ,๐Ÿ˜‡,๐Ÿ˜,๐Ÿ˜‘,๐Ÿ‘ฒ,๐Ÿ‘ณ,๐Ÿ‘ฎ,๐Ÿ‘ท,๐Ÿ’‚,๐Ÿ‘ถ,๐Ÿ‘ฆ,๐Ÿ‘ง,๐Ÿ‘จ,๐Ÿ‘ฉ,๐Ÿ‘ด,๐Ÿ‘ต,๐Ÿ‘ฑ,๐Ÿ‘ผ,๐Ÿ‘ธ,๐Ÿ˜บ,๐Ÿ˜ธ,๐Ÿ˜ป,๐Ÿ˜ฝ,๐Ÿ˜ผ,๐Ÿ™€,๐Ÿ˜ฟ,๐Ÿ˜น,๐Ÿ˜พ,๐Ÿ‘น,๐Ÿ‘บ,๐Ÿ™ˆ,๐Ÿ™‰,๐Ÿ™Š,๐Ÿ’€,๐Ÿ‘ฝ,๐Ÿ’ฉ,๐Ÿ”ฅ,โœจ,๐ŸŒŸ,๐Ÿ’ซ,๐Ÿ’ฅ,๐Ÿ’ข,๐Ÿ’ฆ,๐Ÿ’ง,๐Ÿ’ค,๐Ÿ’จ,๐Ÿ‘‚,๐Ÿ‘€,๐Ÿ‘ƒ,๐Ÿ‘…,๐Ÿ‘„,๐Ÿ‘,๐Ÿ‘Ž,๐Ÿ‘Œ,๐Ÿ‘Š,โœŠ,โœŒ๏ธ,๐Ÿ‘‹,โœ‹,๐Ÿ‘,๐Ÿ‘†,๐Ÿ‘‡,๐Ÿ‘‰,๐Ÿ‘ˆ,๐Ÿ™Œ,๐Ÿ™,โ˜๏ธ,๐Ÿ‘,๐Ÿ’ช,๐Ÿšถ,๐Ÿƒ,๐Ÿ’ƒ,๐Ÿ‘ซ,๐Ÿ‘ช,๐Ÿ‘ฌ,๐Ÿ‘ญ,๐Ÿ’,๐Ÿ’‘,๐Ÿ‘ฏ,๐Ÿ™†,๐Ÿ™…,๐Ÿ’,๐Ÿ™‹,๐Ÿ’†,๐Ÿ’‡,๐Ÿ’…,๐Ÿ‘ฐ,๐Ÿ™Ž,๐Ÿ™,๐Ÿ™‡,๐ŸŽฉ,๐Ÿ‘‘,๐Ÿ‘’,๐Ÿ‘Ÿ,๐Ÿ‘ž,๐Ÿ‘ก,๐Ÿ‘ ,๐Ÿ‘ข,๐Ÿ‘•,๐Ÿ‘”,๐Ÿ‘š,๐Ÿ‘—,๐ŸŽฝ,๐Ÿ‘–,๐Ÿ‘˜,๐Ÿ‘™,๐Ÿ’ผ,๐Ÿ‘œ,๐Ÿ‘,๐Ÿ‘›,๐Ÿ‘“,๐ŸŽ€,๐ŸŒ‚,๐Ÿ’„,๐Ÿ’›,๐Ÿ’™,๐Ÿ’œ,๐Ÿ’š,โค๏ธ,๐Ÿ’”,๐Ÿ’—,๐Ÿ’“,๐Ÿ’•,๐Ÿ’–,๐Ÿ’ž,๐Ÿ’˜,๐Ÿ’Œ,๐Ÿ’‹,๐Ÿ’,๐Ÿ’Ž,๐Ÿ‘ค,๐Ÿ‘ฅ,๐Ÿ’ฌ,๐Ÿ‘ฃ,๐Ÿ’ญ"
+ }
+ },
+ {
+ "CVDataTitle" : "EmojiCategory-Nature",
+ "CVCategoryImage" : "Emoji-NatureImage",
+ "CVCategoryData" : {
+ "CVSkipNullGlyphs" : true,
+ "Data" : "๐Ÿถ,๐Ÿบ,๐Ÿฑ,๐Ÿญ,๐Ÿน,๐Ÿฐ,๐Ÿธ,๐Ÿฏ,๐Ÿจ,๐Ÿป,๐Ÿท,๐Ÿฝ,๐Ÿฎ,๐Ÿ—,๐Ÿต,๐Ÿ’,๐Ÿด,๐Ÿ‘,๐Ÿ˜,๐Ÿผ,๐Ÿง,๐Ÿฆ,๐Ÿค,๐Ÿฅ,๐Ÿฃ,๐Ÿ”,๐Ÿ,๐Ÿข,๐Ÿ›,๐Ÿ,๐Ÿœ,๐Ÿž,๐ŸŒ,๐Ÿ™,๐Ÿš,๐Ÿ ,๐ŸŸ,๐Ÿฌ,๐Ÿณ,๐Ÿ‹,๐Ÿ„,๐Ÿ,๐Ÿ€,๐Ÿƒ,๐Ÿ…,๐Ÿ‡,๐Ÿ‰,๐ŸŽ,๐Ÿ,๐Ÿ“,๐Ÿ•,๐Ÿ–,๐Ÿ,๐Ÿ‚,๐Ÿฒ,๐Ÿก,๐ŸŠ,๐Ÿซ,๐Ÿช,๐Ÿ†,๐Ÿˆ,๐Ÿฉ,๐Ÿพ,๐Ÿ’,๐ŸŒธ,๐ŸŒท,๐Ÿ€,๐ŸŒน,๐ŸŒป,๐ŸŒบ,๐Ÿ,๐Ÿƒ,๐Ÿ‚,๐ŸŒฟ,๐ŸŒพ,๐Ÿ„,๐ŸŒต,๐ŸŒด,๐ŸŒฒ,๐ŸŒณ,๐ŸŒฐ,๐ŸŒฑ,๐ŸŒผ,๐ŸŒ,๐ŸŒž,๐ŸŒ,๐ŸŒš,๐ŸŒ‘,๐ŸŒ’,๐ŸŒ“,๐ŸŒ”,๐ŸŒ•,๐ŸŒ–,๐ŸŒ—,๐ŸŒ˜,๐ŸŒœ,๐ŸŒ›,๐ŸŒ™,๐ŸŒ,๐ŸŒŽ,๐ŸŒ,๐ŸŒ‹,๐ŸŒŒ,๐ŸŒ ,โญ๏ธ,โ˜€๏ธ,โ›…๏ธ,โ˜๏ธ,โšก๏ธ,โ˜”๏ธ,โ„๏ธ,โ›„๏ธ,๐ŸŒ€,๐ŸŒ,๐ŸŒˆ,๐ŸŒŠ"
+ }
+ },
+ {
+ "CVDataTitle" : "EmojiCategory-Objects",
+ "CVCategoryImage" : "Emoji-ObjectsImage",
+ "CVCategoryData" : {
+ "CVSkipNullGlyphs" : true,
+ "Data" : "๐ŸŽ,๐Ÿ’,๐ŸŽŽ,๐ŸŽ’,๐ŸŽ“,๐ŸŽ,๐ŸŽ†,๐ŸŽ‡,๐ŸŽ,๐ŸŽ‘,๐ŸŽƒ,๐Ÿ‘ป,๐ŸŽ…,๐ŸŽ„,๐ŸŽ,๐ŸŽ‹,๐ŸŽ‰,๐ŸŽŠ,๐ŸŽˆ,๐ŸŽŒ,๐Ÿ”ฎ,๐ŸŽฅ,๐Ÿ“ท,๐Ÿ“น,๐Ÿ“ผ,๐Ÿ’ฟ,๐Ÿ“€,๐Ÿ’ฝ,๐Ÿ’พ,๐Ÿ’ป,๐Ÿ“ฑ,โ˜Ž๏ธ,๐Ÿ“ž,๐Ÿ“Ÿ,๐Ÿ“ ,๐Ÿ“ก,๐Ÿ“บ,๐Ÿ“ป,๐Ÿ”Š,๐Ÿ”‰,๐Ÿ”ˆ,๐Ÿ”‡,๐Ÿ””,๐Ÿ”•,๐Ÿ“ข,๐Ÿ“ฃ,โณ,โŒ›๏ธ,โฐ,โŒš๏ธ,๐Ÿ”“,๐Ÿ”’,๐Ÿ”,๐Ÿ”,๐Ÿ”‘,๐Ÿ”Ž,๐Ÿ’ก,๐Ÿ”ฆ,๐Ÿ”†,๐Ÿ”…,๐Ÿ”Œ,๐Ÿ”‹,๐Ÿ”,๐Ÿ›,๐Ÿ›€,๐Ÿšฟ,๐Ÿšฝ,๐Ÿ”ง,๐Ÿ”ฉ,๐Ÿ”จ,๐Ÿšช,๐Ÿšฌ,๐Ÿ’ฃ,๐Ÿ”ซ,๐Ÿ”ช,๐Ÿ’Š,๐Ÿ’‰,๐Ÿ’ฐ,๐Ÿ’ด,๐Ÿ’ต,๐Ÿ’ท,๐Ÿ’ถ,๐Ÿ’ณ,๐Ÿ’ธ,๐Ÿ“ฒ,๐Ÿ“ง,๐Ÿ“ฅ,๐Ÿ“ค,โœ‰๏ธ,๐Ÿ“ฉ,๐Ÿ“จ,๐Ÿ“ฏ,๐Ÿ“ซ,๐Ÿ“ช,๐Ÿ“ฌ,๐Ÿ“ญ,๐Ÿ“ฎ,๐Ÿ“ฆ,๐Ÿ“,๐Ÿ“„,๐Ÿ“ƒ,๐Ÿ“‘,๐Ÿ“Š,๐Ÿ“ˆ,๐Ÿ“‰,๐Ÿ“œ,๐Ÿ“‹,๐Ÿ“…,๐Ÿ“†,๐Ÿ“‡,๐Ÿ“,๐Ÿ“‚,โœ‚๏ธ,๐Ÿ“Œ,๐Ÿ“Ž,โœ’๏ธ,โœ๏ธ,๐Ÿ“,๐Ÿ“,๐Ÿ“•,๐Ÿ“—,๐Ÿ“˜,๐Ÿ“™,๐Ÿ““,๐Ÿ“”,๐Ÿ“’,๐Ÿ“š,๐Ÿ“–,๐Ÿ”–,๐Ÿ“›,๐Ÿ”ฌ,๐Ÿ”ญ,๐Ÿ“ฐ,๐ŸŽจ,๐ŸŽฌ,๐ŸŽค,๐ŸŽง,๐ŸŽผ,๐ŸŽต,๐ŸŽถ,๐ŸŽน,๐ŸŽป,๐ŸŽบ,๐ŸŽท,๐ŸŽธ,๐Ÿ‘พ,๐ŸŽฎ,๐Ÿƒ,๐ŸŽด,๐Ÿ€„๏ธ,๐ŸŽฒ,๐ŸŽฏ,๐Ÿˆ,๐Ÿ€,โšฝ๏ธ,โšพ๏ธ,๐ŸŽพ,๐ŸŽฑ,๐Ÿ‰,๐ŸŽณ,โ›ณ๏ธ,๐Ÿšต,๐Ÿšด,๐Ÿ,๐Ÿ‡,๐Ÿ†,๐ŸŽฟ,๐Ÿ‚,๐ŸŠ,๐Ÿ„,๐ŸŽฃ,โ˜•๏ธ,๐Ÿต,๐Ÿถ,๐Ÿผ,๐Ÿบ,๐Ÿป,๐Ÿธ,๐Ÿน,๐Ÿท,๐Ÿด,๐Ÿ•,๐Ÿ”,๐ŸŸ,๐Ÿ—,๐Ÿ–,๐Ÿ,๐Ÿ›,๐Ÿค,๐Ÿฑ,๐Ÿฃ,๐Ÿฅ,๐Ÿ™,๐Ÿ˜,๐Ÿš,๐Ÿœ,๐Ÿฒ,๐Ÿข,๐Ÿก,๐Ÿณ,๐Ÿž,๐Ÿฉ,๐Ÿฎ,๐Ÿฆ,๐Ÿจ,๐Ÿง,๐ŸŽ‚,๐Ÿฐ,๐Ÿช,๐Ÿซ,๐Ÿฌ,๐Ÿญ,๐Ÿฏ,๐ŸŽ,๐Ÿ,๐ŸŠ,๐Ÿ‹,๐Ÿ’,๐Ÿ‡,๐Ÿ‰,๐Ÿ“,๐Ÿ‘,๐Ÿˆ,๐ŸŒ,๐Ÿ,๐Ÿ,๐Ÿ ,๐Ÿ†,๐Ÿ…,๐ŸŒฝ"
+ }
+ },
+ {
+ "CVDataTitle" : "EmojiCategory-Places",
+ "CVCategoryImage" : "Emoji-PlacesImage",
+ "CVCategoryData" : {
+ "CVSkipNullGlyphs" : true,
+ "Data" : "๐Ÿ ,๐Ÿก,๐Ÿซ,๐Ÿข,๐Ÿฃ,๐Ÿฅ,๐Ÿฆ,๐Ÿช,๐Ÿฉ,๐Ÿจ,๐Ÿ’’,โ›ช๏ธ,๐Ÿฌ,๐Ÿค,๐ŸŒ‡,๐ŸŒ†,๐Ÿฏ,๐Ÿฐ,โ›บ๏ธ,๐Ÿญ,๐Ÿ—ผ,๐Ÿ—พ,๐Ÿ—ป,๐ŸŒ„,๐ŸŒ…,๐ŸŒƒ,๐Ÿ—ฝ,๐ŸŒ‰,๐ŸŽ ,๐ŸŽก,โ›ฒ๏ธ,๐ŸŽข,๐Ÿšข,โ›ต๏ธ,๐Ÿšค,๐Ÿšฃ,โš“๏ธ,๐Ÿš€,โœˆ๏ธ,๐Ÿ’บ,๐Ÿš,๐Ÿš‚,๐ŸšŠ,๐Ÿš‰,๐Ÿšž,๐Ÿš†,๐Ÿš„,๐Ÿš…,๐Ÿšˆ,๐Ÿš‡,๐Ÿš,๐Ÿš‹,๐Ÿšƒ,๐ŸšŽ,๐ŸšŒ,๐Ÿš,๐Ÿš™,๐Ÿš˜,๐Ÿš—,๐Ÿš•,๐Ÿš–,๐Ÿš›,๐Ÿšš,๐Ÿšจ,๐Ÿš“,๐Ÿš”,๐Ÿš’,๐Ÿš‘,๐Ÿš,๐Ÿšฒ,๐Ÿšก,๐ŸšŸ,๐Ÿš ,๐Ÿšœ,๐Ÿ’ˆ,๐Ÿš,๐ŸŽซ,๐Ÿšฆ,๐Ÿšฅ,โš ๏ธ,๐Ÿšง,๐Ÿ”ฐ,โ›ฝ๏ธ,๐Ÿฎ,๐ŸŽฐ,โ™จ๏ธ,๐Ÿ—ฟ,๐ŸŽช,๐ŸŽญ,๐Ÿ“,๐Ÿšฉ,๐Ÿ‡ฏ๐Ÿ‡ต,๐Ÿ‡ฐ๐Ÿ‡ท,๐Ÿ‡ฉ๐Ÿ‡ช,๐Ÿ‡จ๐Ÿ‡ณ,๐Ÿ‡บ๐Ÿ‡ธ,๐Ÿ‡ซ๐Ÿ‡ท,๐Ÿ‡ช๐Ÿ‡ธ,๐Ÿ‡ฎ๐Ÿ‡น,๐Ÿ‡ท๐Ÿ‡บ,๐Ÿ‡ฌ๐Ÿ‡ง"
+ }
+ },
+ {
+ "CVDataTitle" : "EmojiCategory-Symbols",
+ "CVCategoryImage" : "Emoji-SymbolImage",
+ "CVCategoryData" : {
+ "CVSkipNullGlyphs" : true,
+ "Data" : "1๏ธโƒฃ,2๏ธโƒฃ,3๏ธโƒฃ,4๏ธโƒฃ,5๏ธโƒฃ,6๏ธโƒฃ,7๏ธโƒฃ,8๏ธโƒฃ,9๏ธโƒฃ,0๏ธโƒฃ,๐Ÿ”Ÿ,๐Ÿ”ข,#๏ธโƒฃ,๐Ÿ”ฃ,โฌ†๏ธ,โฌ‡๏ธ,โฌ…๏ธ,โžก๏ธ,๐Ÿ” ,๐Ÿ”ก,๐Ÿ”ค,โ†—๏ธ,โ†–๏ธ,โ†˜๏ธ,โ†™๏ธ,โ†”๏ธ,โ†•๏ธ,๐Ÿ”„,โ—€๏ธ,โ–ถ๏ธ,๐Ÿ”ผ,๐Ÿ”ฝ,โ†ฉ๏ธ,โ†ช๏ธ,โ„น๏ธ,โช,โฉ,โซ,โฌ,โคต๏ธ,โคด๏ธ,๐Ÿ†—,๐Ÿ”€,๐Ÿ”,๐Ÿ”‚,๐Ÿ†•,๐Ÿ†™,๐Ÿ†’,๐Ÿ†“,๐Ÿ†–,๐Ÿ“ถ,๐ŸŽฆ,๐Ÿˆ,๐Ÿˆฏ๏ธ,๐Ÿˆณ,๐Ÿˆต,๐Ÿˆด,๐Ÿˆฒ,๐Ÿ‰,๐Ÿˆน,๐Ÿˆบ,๐Ÿˆถ,๐Ÿˆš๏ธ,๐Ÿšป,๐Ÿšน,๐Ÿšบ,๐Ÿšผ,๐Ÿšพ,๐Ÿšฐ,๐Ÿšฎ,๐Ÿ…ฟ๏ธ,โ™ฟ๏ธ,๐Ÿšญ,๐Ÿˆท,๐Ÿˆธ,๐Ÿˆ‚,โ“‚๏ธ,๐Ÿ›‚,๐Ÿ›„,๐Ÿ›…,๐Ÿ›ƒ,๐Ÿ‰‘,ใŠ™๏ธ,ใŠ—๏ธ,๐Ÿ†‘,๐Ÿ†˜,๐Ÿ†”,๐Ÿšซ,๐Ÿ”ž,๐Ÿ“ต,๐Ÿšฏ,๐Ÿšฑ,๐Ÿšณ,๐Ÿšท,๐Ÿšธ,โ›”๏ธ,โœณ๏ธ,โ‡๏ธ,โŽ,โœ…,โœด๏ธ,๐Ÿ’Ÿ,๐Ÿ†š,๐Ÿ“ณ,๐Ÿ“ด,๐Ÿ…ฐ,๐Ÿ…ฑ,๐Ÿ†Ž,๐Ÿ…พ,๐Ÿ’ ,โžฟ,โ™ป๏ธ,โ™ˆ๏ธ,โ™‰๏ธ,โ™Š๏ธ,โ™‹๏ธ,โ™Œ๏ธ,โ™๏ธ,โ™Ž๏ธ,โ™๏ธ,โ™๏ธ,โ™‘๏ธ,โ™’๏ธ,โ™“๏ธ,โ›Ž,๐Ÿ”ฏ,๐Ÿง,๐Ÿ’น,๐Ÿ’ฒ,๐Ÿ’ฑ,ยฉ,ยฎ,โ„ข,โŒ,โ€ผ๏ธ,โ‰๏ธ,โ—๏ธ,โ“,โ•,โ”,โญ•๏ธ,๐Ÿ”,๐Ÿ”š,๐Ÿ”™,๐Ÿ”›,๐Ÿ”œ,๐Ÿ”ƒ,๐Ÿ•›,๐Ÿ•ง,๐Ÿ•,๐Ÿ•œ,๐Ÿ•‘,๐Ÿ•,๐Ÿ•’,๐Ÿ•ž,๐Ÿ•“,๐Ÿ•Ÿ,๐Ÿ•”,๐Ÿ• ,๐Ÿ••,๐Ÿ•–,๐Ÿ•—,๐Ÿ•˜,๐Ÿ•™,๐Ÿ•š,๐Ÿ•ก,๐Ÿ•ข,๐Ÿ•ฃ,๐Ÿ•ค,๐Ÿ•ฅ,๐Ÿ•ฆ,โœ–๏ธ,โž•,โž–,โž—,โ™ ๏ธ,โ™ฅ๏ธ,โ™ฃ๏ธ,โ™ฆ๏ธ,๐Ÿ’ฎ,๐Ÿ’ฏ,โœ”๏ธ,โ˜‘๏ธ,๐Ÿ”˜,๐Ÿ”—,โžฐ,ใ€ฐ,ใ€ฝ๏ธ,๐Ÿ”ฑ,โ—ผ๏ธ,โ—ป๏ธ,โ—พ๏ธ,โ—ฝ๏ธ,โ–ช๏ธ,โ–ซ๏ธ,๐Ÿ”บ,๐Ÿ”ฒ,๐Ÿ”ณ,โšซ๏ธ,โšช๏ธ,๐Ÿ”ด,๐Ÿ”ต,๐Ÿ”ป,โฌœ๏ธ,โฌ›๏ธ,๐Ÿ”ถ,๐Ÿ”ท,๐Ÿ”ธ,๐Ÿ”น"
+ }
+ }
+ ],
+ "CVViewFontList" : [
+ "AppleColorEmoji"
+ ]
+}
View
@@ -0,0 +1,78 @@
+require 'emoji'
+require 'json'
+
+names_list = File.expand_path('../NamesList.txt', __FILE__)
+
+class UnicodeCharacter
+ attr_reader :code, :description, :aliases
+
+ @index = {}
+ class << self
+ attr_reader :index
+
+ def fetch(code, *args, &block)
+ code = code.to_s(16).rjust(4, '0') if code.is_a?(Integer)
+ index.fetch(code, *args, &block)
+ end
+ end
+
+ def initialize(code, description)
+ @code = code.downcase
+ @description = description.downcase
+ @aliases = []
+ @references = []
+
+ self.class.index[@code] = self
+ end
+
+ def add_alias(string)
+ @aliases.concat string.split(/\s*,\s*/)
+ end
+
+ def add_reference(code)
+ @references << code.downcase
+ end
+end
+
+char = nil
+
+File.foreach(names_list) do |line|
+ case line
+ when /^[A-F0-9]{4,5}\t/
+ code, desc = line.chomp.split("\t", 2)
+ codepoint = code.hex
+ char = UnicodeCharacter.new(code, desc)
+ when /^\t= /
+ char.add_alias($')
+ when /^\tx .+ - ([A-F0-9]{4,5})\)$/
+ char.add_reference($1)
+ end
+end
+
+trap(:PIPE) { abort }
+
+items = []
+
+for emoji in Emoji.all
+ unicodes = emoji.unicode_aliases
+ unicodes = unicodes[1..-1] if emoji.variation?
+
+ item = {}
+
+ unless emoji.custom?
+ variation_codepoint = Emoji::Character::VARIATION_SELECTOR_16.codepoints[0]
+ chars = emoji.raw.codepoints.map { |code| UnicodeCharacter.fetch(code) unless code == variation_codepoint }.compact
+ item[:emoji] = emoji.raw
+ item[:unicodes] = unicodes if unicodes.any?
+ item[:description] = chars.map(&:description).join(' + ')
+ end
+
+ item[:aliases] = emoji.aliases
+ item[:tags] = emoji.tags
+
+ items << item
+end
+
+puts JSON.pretty_generate(items)
+ .gsub("\n\n", "\n")
+ .gsub(/,\n( +)/) { "\n%s, " % $1[2..-1] }
Oops, something went wrong. Retry.

0 comments on commit d7b020f

Please sign in to comment.