gemoji 3.0.1 โ†’ 4.0.0.pre0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,6 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
2
4
  require 'emoji/character'
3
5
  require 'json'
4
6
 
@@ -9,14 +11,6 @@ module Emoji
9
11
  File.expand_path('../../db/emoji.json', __FILE__)
10
12
  end
11
13
 
12
- def apple_palette_file
13
- File.expand_path('../../db/Category-Emoji.json', __FILE__)
14
- end
15
-
16
- def images_path
17
- File.expand_path("../../images", __FILE__)
18
- end
19
-
20
14
  def all
21
15
  return @all if defined? @all
22
16
  @all = []
@@ -24,17 +18,6 @@ module Emoji
24
18
  @all
25
19
  end
26
20
 
27
- def apple_palette
28
- return @apple_palette if defined? @apple_palette
29
- data = File.open(apple_palette_file, 'r:UTF-8') { |f| JSON.parse(f.read) }
30
- @apple_palette = data.fetch('EmojiDataArray').each_with_object({}) do |group, all|
31
- title = group.fetch('CVDataTitle').split('-', 2)[1]
32
- all[title] = group.fetch('CVCategoryData').fetch('Data').split(',').map do |raw|
33
- TEXT_GLYPHS.include?(raw) ? raw + VARIATION_SELECTOR_16 : raw
34
- end
35
- end
36
- end
37
-
38
21
  # Public: Initialize an Emoji::Character instance and yield it to the block.
39
22
  # The character is added to the `Emoji.all` set.
40
23
  def create(name)
@@ -73,45 +56,144 @@ module Emoji
73
56
 
74
57
  private
75
58
  VARIATION_SELECTOR_16 = "\u{fe0f}".freeze
76
- ZERO_WIDTH_JOINER = "\u{200d}".freeze
77
- FEMALE_SYMBOL = "\u{2640}".freeze
78
- MALE_SYMBOL = "\u{2642}".freeze
79
59
 
80
- # Chars from Apple's palette which must have VARIATION_SELECTOR_16 to render:
81
- TEXT_GLYPHS = ["๐Ÿˆท", "๐Ÿˆ‚", "๐Ÿ…ฐ", "๐Ÿ…ฑ", "๐Ÿ…พ", "ยฉ", "ยฎ", "โ„ข", "ใ€ฐ"].freeze
60
+ # Characters which must have VARIATION_SELECTOR_16 to render as color emoji:
61
+ TEXT_GLYPHS = [
62
+ "\u{1f237}", # Japanese โ€œmonthly amountโ€ button
63
+ "\u{1f202}", # Japanese โ€œservice chargeโ€ button
64
+ "\u{1f170}", # A button (blood type)
65
+ "\u{1f171}", # B button (blood type)
66
+ "\u{1f17e}", # O button (blood type)
67
+ "\u{00a9}", # copyright
68
+ "\u{00ae}", # registered
69
+ "\u{2122}", # trade mark
70
+ "\u{3030}", # wavy dash
71
+ "\u{263a}", # smiling face
72
+ "\u{261D}", # index pointing up
73
+ "\u{270C}", # victory hand
74
+ "\u{270D}", # writing hand
75
+ "\u{2764}", # red heart
76
+ "\u{2763}", # heavy heart exclamation
77
+ "\u{2668}", # hot springs
78
+ "\u{2708}", # airplane
79
+ "\u{2600}", # sun
80
+ "\u{2601}", # cloud
81
+ "\u{2602}", # umbrella
82
+ "\u{2744}", # snowflake
83
+ "\u{2603}", # snowman
84
+ "\u{2660}", # spade suit
85
+ "\u{2665}", # heart suit
86
+ "\u{2666}", # diamond suit
87
+ "\u{2663}", # club suit
88
+ "\u{260e}", # telephone
89
+ "\u{2709}", # envelope
90
+ "\u{270F}", # pencil
91
+ "\u{2712}", # black nib
92
+ "\u{2702}", # scissors
93
+ "\u{26a0}", # warning
94
+ "\u{2B06}", # up arrow
95
+ "\u{2197}", # up-right arrow
96
+ "\u{27A1}", # right arrow
97
+ "\u{2198}", # down-right arrow
98
+ "\u{2B07}", # down arrow
99
+ "\u{2199}", # down-left arrow
100
+ "\u{2B05}", # left arrow
101
+ "\u{2196}", # up-left arrow
102
+ "\u{2195}", # up-down arrow
103
+ "\u{2194}", # left-right arrow
104
+ "\u{21A9}", # right arrow curving left
105
+ "\u{21AA}", # left arrow curving right
106
+ "\u{2934}", # right arrow curving up
107
+ "\u{2935}", # right arrow curving down
108
+ "\u{2721}", # star of David
109
+ "\u{262F}", # yin yang
110
+ "\u{271D}", # latin cross
111
+ "\u{25B6}", # play button
112
+ "\u{25C0}", # reverse button
113
+ "\u{23CF}", # eject button
114
+ "\u{2640}", # female sign
115
+ "\u{2642}", # male sign
116
+ "\u{267B}", # recycling symbol
117
+ "\u{2611}", # ballot box with check
118
+ "\u{2714}", # heavy check mark
119
+ "\u{2716}", # heavy multiplication x
120
+ "\u{303D}", # part alternation mark
121
+ "\u{2733}", # eight-spoked asterisk
122
+ "\u{2734}", # eight-pointed star
123
+ "\u{2747}", # sparkle
124
+ "\u{203C}", # double exclamation mark
125
+ "\u{2049}", # exclamation question mark
126
+ "\u{23}\u{20E3}", # keycap: #
127
+ "\u{2A}\u{20E3}", # keycap: *
128
+ "\u{30}\u{20E3}", # keycap: 0
129
+ "\u{31}\u{20E3}", # keycap: 1
130
+ "\u{32}\u{20E3}", # keycap: 2
131
+ "\u{33}\u{20E3}", # keycap: 3
132
+ "\u{34}\u{20E3}", # keycap: 4
133
+ "\u{35}\u{20E3}", # keycap: 5
134
+ "\u{36}\u{20E3}", # keycap: 6
135
+ "\u{37}\u{20E3}", # keycap: 7
136
+ "\u{38}\u{20E3}", # keycap: 8
137
+ "\u{39}\u{20E3}", # keycap: 9
138
+ "\u{2139}", # information
139
+ "\u{24C2}", # circled M
140
+ "\u{1F17F}", # P button
141
+ "\u{3297}", # Japanese โ€œcongratulationsโ€ button
142
+ "\u{3299}", # Japanese โ€œsecretโ€ button
143
+ "\u{25AA}", # black small square
144
+ "\u{25AB}", # white small square
145
+ "\u{25FB}", # white medium square
146
+ "\u{25FC}", # black medium square
147
+ ].freeze
148
+
149
+ private_constant :VARIATION_SELECTOR_16, :TEXT_GLYPHS
82
150
 
83
151
  def parse_data_file
84
- data = File.open(data_file, 'r:UTF-8') { |file| JSON.parse(file.read) }
85
- data.each do |raw_emoji|
86
- self.create(nil) do |emoji|
87
- raw_emoji.fetch('aliases').each { |name| emoji.add_alias(name) }
88
- if raw = raw_emoji['emoji']
89
- unicodes = [raw, raw.sub(VARIATION_SELECTOR_16, '') + VARIATION_SELECTOR_16].uniq
90
- unicodes.each { |uni| emoji.add_unicode_alias(uni) }
91
- end
92
- raw_emoji.fetch('tags').each { |tag| emoji.add_tag(tag) }
152
+ data = File.open(data_file, 'r:UTF-8') do |file|
153
+ JSON.parse(file.read, symbolize_names: true)
154
+ end
93
155
 
94
- emoji.category = raw_emoji['category']
95
- emoji.description = raw_emoji['description']
96
- emoji.unicode_version = raw_emoji['unicode_version']
97
- emoji.ios_version = raw_emoji['ios_version']
156
+ if "".respond_to?(:-@)
157
+ # Ruby >= 2.3 this is equivalent to .freeze
158
+ # Ruby >= 2.5 this will freeze and dedup
159
+ dedup = lambda { |str| -str }
160
+ else
161
+ dedup = lambda { |str| str.freeze }
162
+ end
163
+
164
+ append_unicode = lambda do |emoji, raw|
165
+ unless TEXT_GLYPHS.include?(raw) || emoji.unicode_aliases.include?(raw)
166
+ emoji.add_unicode_alias(dedup.call(raw))
98
167
  end
99
168
  end
100
169
 
101
- # Add an explicit gendered variant to emoji that historically imply a gender
102
170
  data.each do |raw_emoji|
103
- raw = raw_emoji['emoji']
104
- next unless raw
105
- no_gender = raw.sub(/(#{VARIATION_SELECTOR_16})?#{ZERO_WIDTH_JOINER}(#{FEMALE_SYMBOL}|#{MALE_SYMBOL})/, '')
106
- next unless $2
107
- emoji = find_by_unicode(no_gender)
108
- next unless emoji
109
- edit_emoji(emoji) do
110
- emoji.add_unicode_alias(
111
- $2 == FEMALE_SYMBOL ?
112
- raw.sub(FEMALE_SYMBOL, MALE_SYMBOL) :
113
- raw.sub(MALE_SYMBOL, FEMALE_SYMBOL)
114
- )
171
+ self.create(nil) do |emoji|
172
+ raw_emoji.fetch(:aliases).each { |name| emoji.add_alias(dedup.call(name)) }
173
+ if raw = raw_emoji[:emoji]
174
+ append_unicode.call(emoji, raw)
175
+ start_pos = 0
176
+ while found_index = raw.index(VARIATION_SELECTOR_16, start_pos)
177
+ # register every variant where one VARIATION_SELECTOR_16 is removed
178
+ raw_alternate = raw.dup
179
+ raw_alternate[found_index] = ""
180
+ append_unicode.call(emoji, raw_alternate)
181
+ start_pos = found_index + 1
182
+ end
183
+ if start_pos > 0
184
+ # register a variant with all VARIATION_SELECTOR_16 removed
185
+ append_unicode.call(emoji, raw.gsub(VARIATION_SELECTOR_16, ""))
186
+ else
187
+ # register a variant where VARIATION_SELECTOR_16 is added
188
+ append_unicode.call(emoji, "#{raw}#{VARIATION_SELECTOR_16}")
189
+ end
190
+ end
191
+ raw_emoji.fetch(:tags).each { |tag| emoji.add_tag(dedup.call(tag)) }
192
+
193
+ emoji.category = dedup.call(raw_emoji[:category])
194
+ emoji.description = dedup.call(raw_emoji[:description])
195
+ emoji.unicode_version = dedup.call(raw_emoji[:unicode_version])
196
+ emoji.ios_version = dedup.call(raw_emoji[:ios_version])
115
197
  end
116
198
  end
117
199
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Emoji
2
4
  class Character
3
5
  # Inspect individual Unicode characters in a string by dumping its
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'emoji'
metadata CHANGED
@@ -1,47 +1,26 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gemoji
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 4.0.0.pre0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitHub
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-25 00:00:00.000000000 Z
11
+ date: 2019-07-05 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: Character information and metadata for standard and custom emoji.
13
+ description: Character information and metadata for Unicode emoji.
14
14
  email: support@github.com
15
- executables:
16
- - gemoji
15
+ executables: []
17
16
  extensions: []
18
17
  extra_rdoc_files: []
19
18
  files:
19
+ - LICENSE
20
20
  - README.md
21
- - bin/gemoji
22
- - db/Category-Emoji.json
23
21
  - db/emoji.json
24
- - images/basecamp.png
25
- - images/basecampy.png
26
- - images/bowtie.png
27
- - images/feelsgood.png
28
- - images/finnadie.png
29
- - images/goberserk.png
30
- - images/godmode.png
31
- - images/hurtrealbad.png
32
- - images/neckbeard.png
33
- - images/octocat.png
34
- - images/rage1.png
35
- - images/rage2.png
36
- - images/rage3.png
37
- - images/rage4.png
38
- - images/shipit.png
39
- - images/suspect.png
40
- - images/trollface.png
41
22
  - lib/emoji.rb
42
23
  - lib/emoji/character.rb
43
- - lib/emoji/cli.rb
44
- - lib/emoji/extractor.rb
45
24
  - lib/gemoji.rb
46
25
  homepage: https://github.com/github/gemoji
47
26
  licenses:
@@ -58,13 +37,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
58
37
  version: '1.9'
59
38
  required_rubygems_version: !ruby/object:Gem::Requirement
60
39
  requirements:
61
- - - ">="
40
+ - - ">"
62
41
  - !ruby/object:Gem::Version
63
- version: '0'
42
+ version: 1.3.1
64
43
  requirements: []
65
44
  rubyforge_project:
66
45
  rubygems_version: 2.5.2.3
67
46
  signing_key:
68
47
  specification_version: 4
69
- summary: Emoji library
48
+ summary: Unicode emoji library
70
49
  test_files: []
data/bin/gemoji DELETED
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require 'emoji/cli'
3
-
4
- exit_code = Emoji::CLI.dispatch(ARGV)
5
- exit exit_code
@@ -1,71 +0,0 @@
1
- {
2
- "EmojiDataArray" : [
3
- {
4
- "CVDataTitle" : "EmojiCategory-People",
5
- "CVCategoryImage" : "Emoji-HumanImage",
6
- "CVCategoryData" : {
7
- "CVSkipNullGlyphs" : false,
8
- "Data" : "๐Ÿ˜€,๐Ÿ˜ƒ,๐Ÿ˜„,๐Ÿ˜,๐Ÿ˜†,๐Ÿ˜…,๐Ÿ˜‚,๐Ÿคฃ,โ˜บ๏ธ,๐Ÿ˜Š,๐Ÿ˜‡,๐Ÿ™‚,๐Ÿ™ƒ,๐Ÿ˜‰,๐Ÿ˜Œ,๐Ÿ˜,๐Ÿ˜˜,๐Ÿ˜—,๐Ÿ˜™,๐Ÿ˜š,๐Ÿ˜‹,๐Ÿ˜œ,๐Ÿ˜,๐Ÿ˜›,๐Ÿค‘,๐Ÿค—,๐Ÿค“,๐Ÿ˜Ž,๐Ÿคก,๐Ÿค ,๐Ÿ˜,๐Ÿ˜’,๐Ÿ˜ž,๐Ÿ˜”,๐Ÿ˜Ÿ,๐Ÿ˜•,๐Ÿ™,โ˜น๏ธ,๐Ÿ˜ฃ,๐Ÿ˜–,๐Ÿ˜ซ,๐Ÿ˜ฉ,๐Ÿ˜ค,๐Ÿ˜ ,๐Ÿ˜ก,๐Ÿ˜ถ,๐Ÿ˜,๐Ÿ˜‘,๐Ÿ˜ฏ,๐Ÿ˜ฆ,๐Ÿ˜ง,๐Ÿ˜ฎ,๐Ÿ˜ฒ,๐Ÿ˜ต,๐Ÿ˜ณ,๐Ÿ˜ฑ,๐Ÿ˜จ,๐Ÿ˜ฐ,๐Ÿ˜ข,๐Ÿ˜ฅ,๐Ÿคค,๐Ÿ˜ญ,๐Ÿ˜“,๐Ÿ˜ช,๐Ÿ˜ด,๐Ÿ™„,๐Ÿค”,๐Ÿคฅ,๐Ÿ˜ฌ,๐Ÿค,๐Ÿคข,๐Ÿคง,๐Ÿ˜ท,๐Ÿค’,๐Ÿค•,๐Ÿ˜ˆ,๐Ÿ‘ฟ,๐Ÿ‘น,๐Ÿ‘บ,๐Ÿ’ฉ,๐Ÿ‘ป,๐Ÿ’€,โ˜ ๏ธ,๐Ÿ‘ฝ,๐Ÿ‘พ,๐Ÿค–,๐ŸŽƒ,๐Ÿ˜บ,๐Ÿ˜ธ,๐Ÿ˜น,๐Ÿ˜ป,๐Ÿ˜ผ,๐Ÿ˜ฝ,๐Ÿ™€,๐Ÿ˜ฟ,๐Ÿ˜พ,๐Ÿ‘,๐Ÿ™Œ,๐Ÿ‘,๐Ÿ™,๐Ÿค,๐Ÿ‘,๐Ÿ‘Ž,๐Ÿ‘Š,โœŠ,๐Ÿค›,๐Ÿคœ,๐Ÿคž,โœŒ๏ธ,๐Ÿค˜,๐Ÿ‘Œ,๐Ÿ‘ˆ,๐Ÿ‘‰,๐Ÿ‘†,๐Ÿ‘‡,โ˜๏ธ,โœ‹,๐Ÿคš,๐Ÿ–,๐Ÿ––,๐Ÿ‘‹,๐Ÿค™,๐Ÿ’ช,๐Ÿ–•,โœ๏ธ,๐Ÿคณ,๐Ÿ’…,๐Ÿ’,๐Ÿ’„,๐Ÿ’‹,๐Ÿ‘„,๐Ÿ‘…,๐Ÿ‘‚,๐Ÿ‘ƒ,๐Ÿ‘ฃ,๐Ÿ‘,๐Ÿ‘€,๐Ÿ—ฃ,๐Ÿ‘ค,๐Ÿ‘ฅ,๐Ÿ‘ถ,๐Ÿ‘ฆ,๐Ÿ‘ง,๐Ÿ‘จ,๐Ÿ‘ฉ,๐Ÿ‘ฑโ€โ™€๏ธ,๐Ÿ‘ฑ,๐Ÿ‘ด,๐Ÿ‘ต,๐Ÿ‘ฒ,๐Ÿ‘ณโ€โ™€๏ธ,๐Ÿ‘ณ,๐Ÿ‘ฎโ€โ™€๏ธ,๐Ÿ‘ฎ,๐Ÿ‘ทโ€โ™€๏ธ,๐Ÿ‘ท,๐Ÿ’‚โ€โ™€๏ธ,๐Ÿ’‚,๐Ÿ•ต๏ธโ€โ™€๏ธ,๐Ÿ•ต๏ธ,๐Ÿ‘ฉโ€โš•๏ธ,๐Ÿ‘จโ€โš•๏ธ,๐Ÿ‘ฉโ€๐ŸŒพ,๐Ÿ‘จโ€๐ŸŒพ,๐Ÿ‘ฉโ€๐Ÿณ,๐Ÿ‘จโ€๐Ÿณ,๐Ÿ‘ฉโ€๐ŸŽ“,๐Ÿ‘จโ€๐ŸŽ“,๐Ÿ‘ฉโ€๐ŸŽค,๐Ÿ‘จโ€๐ŸŽค,๐Ÿ‘ฉโ€๐Ÿซ,๐Ÿ‘จโ€๐Ÿซ,๐Ÿ‘ฉโ€๐Ÿญ,๐Ÿ‘จโ€๐Ÿญ,๐Ÿ‘ฉโ€๐Ÿ’ป,๐Ÿ‘จโ€๐Ÿ’ป,๐Ÿ‘ฉโ€๐Ÿ’ผ,๐Ÿ‘จโ€๐Ÿ’ผ,๐Ÿ‘ฉโ€๐Ÿ”ง,๐Ÿ‘จโ€๐Ÿ”ง,๐Ÿ‘ฉโ€๐Ÿ”ฌ,๐Ÿ‘จโ€๐Ÿ”ฌ,๐Ÿ‘ฉโ€๐ŸŽจ,๐Ÿ‘จโ€๐ŸŽจ,๐Ÿ‘ฉโ€๐Ÿš’,๐Ÿ‘จโ€๐Ÿš’,๐Ÿ‘ฉโ€โœˆ๏ธ,๐Ÿ‘จโ€โœˆ๏ธ,๐Ÿ‘ฉโ€๐Ÿš€,๐Ÿ‘จโ€๐Ÿš€,๐Ÿ‘ฉโ€โš–๏ธ,๐Ÿ‘จโ€โš–๏ธ,๐Ÿคถ,๐ŸŽ…,๐Ÿ‘ธ,๐Ÿคด,๐Ÿ‘ฐ,๐Ÿคต,๐Ÿ‘ผ,๐Ÿคฐ,๐Ÿ™‡โ€โ™€๏ธ,๐Ÿ™‡,๐Ÿ’,๐Ÿ’โ€โ™‚๏ธ,๐Ÿ™…,๐Ÿ™…โ€โ™‚๏ธ,๐Ÿ™†,๐Ÿ™†โ€โ™‚๏ธ,๐Ÿ™‹,๐Ÿ™‹โ€โ™‚๏ธ,๐Ÿคฆโ€โ™€๏ธ,๐Ÿคฆโ€โ™‚๏ธ,๐Ÿคทโ€โ™€๏ธ,๐Ÿคทโ€โ™‚๏ธ,๐Ÿ™Ž,๐Ÿ™Žโ€โ™‚๏ธ,๐Ÿ™,๐Ÿ™โ€โ™‚๏ธ,๐Ÿ’‡,๐Ÿ’‡โ€โ™‚๏ธ,๐Ÿ’†,๐Ÿ’†โ€โ™‚๏ธ,๐Ÿ•ด,๐Ÿ’ƒ,๐Ÿ•บ,๐Ÿ‘ฏ,๐Ÿ‘ฏโ€โ™‚๏ธ,๐Ÿšถโ€โ™€๏ธ,๐Ÿšถ,๐Ÿƒโ€โ™€๏ธ,๐Ÿƒ,๐Ÿ‘ซ,๐Ÿ‘ญ,๐Ÿ‘ฌ,๐Ÿ’‘,๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘ฉ,๐Ÿ‘จโ€โค๏ธโ€๐Ÿ‘จ,๐Ÿ’,๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘ฉ,๐Ÿ‘จโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ,๐Ÿ‘ช,๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง,๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ,๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ,๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง,๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ,๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ง,๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ,๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ,๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง,๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆ,๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ง,๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ,๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ,๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง,๐Ÿ‘ฉโ€๐Ÿ‘ฆ,๐Ÿ‘ฉโ€๐Ÿ‘ง,๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ,๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ,๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง,๐Ÿ‘จโ€๐Ÿ‘ฆ,๐Ÿ‘จโ€๐Ÿ‘ง,๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ,๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ,๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง,๐Ÿ‘š,๐Ÿ‘•,๐Ÿ‘–,๐Ÿ‘”,๐Ÿ‘—,๐Ÿ‘™,๐Ÿ‘˜,๐Ÿ‘ ,๐Ÿ‘ก,๐Ÿ‘ข,๐Ÿ‘ž,๐Ÿ‘Ÿ,๐Ÿ‘’,๐ŸŽฉ,๐ŸŽ“,๐Ÿ‘‘,โ›‘,๐ŸŽ’,๐Ÿ‘,๐Ÿ‘›,๐Ÿ‘œ,๐Ÿ’ผ,๐Ÿ‘“,๐Ÿ•ถ,๐ŸŒ‚,โ˜‚๏ธ"
9
- }
10
- },
11
- {
12
- "CVDataTitle" : "EmojiCategory-Nature",
13
- "CVCategoryImage" : "Emoji-NatureImage",
14
- "CVCategoryData" : {
15
- "CVSkipNullGlyphs" : false,
16
- "Data" : "๐Ÿถ,๐Ÿฑ,๐Ÿญ,๐Ÿน,๐Ÿฐ,๐ŸฆŠ,๐Ÿป,๐Ÿผ,๐Ÿจ,๐Ÿฏ,๐Ÿฆ,๐Ÿฎ,๐Ÿท,๐Ÿฝ,๐Ÿธ,๐Ÿต,๐Ÿ™ˆ,๐Ÿ™‰,๐Ÿ™Š,๐Ÿ’,๐Ÿ”,๐Ÿง,๐Ÿฆ,๐Ÿค,๐Ÿฃ,๐Ÿฅ,๐Ÿฆ†,๐Ÿฆ…,๐Ÿฆ‰,๐Ÿฆ‡,๐Ÿบ,๐Ÿ—,๐Ÿด,๐Ÿฆ„,๐Ÿ,๐Ÿ›,๐Ÿฆ‹,๐ŸŒ,๐Ÿš,๐Ÿž,๐Ÿœ,๐Ÿ•ท,๐Ÿ•ธ,๐Ÿข,๐Ÿ,๐ŸฆŽ,๐Ÿฆ‚,๐Ÿฆ€,๐Ÿฆ‘,๐Ÿ™,๐Ÿฆ,๐Ÿ ,๐ŸŸ,๐Ÿก,๐Ÿฌ,๐Ÿฆˆ,๐Ÿณ,๐Ÿ‹,๐ŸŠ,๐Ÿ†,๐Ÿ…,๐Ÿƒ,๐Ÿ‚,๐Ÿ„,๐ŸฆŒ,๐Ÿช,๐Ÿซ,๐Ÿ˜,๐Ÿฆ,๐Ÿฆ,๐ŸŽ,๐Ÿ–,๐Ÿ,๐Ÿ,๐Ÿ‘,๐Ÿ•,๐Ÿฉ,๐Ÿˆ,๐Ÿ“,๐Ÿฆƒ,๐Ÿ•Š,๐Ÿ‡,๐Ÿ,๐Ÿ€,๐Ÿฟ,๐Ÿพ,๐Ÿ‰,๐Ÿฒ,๐ŸŒต,๐ŸŽ„,๐ŸŒฒ,๐ŸŒณ,๐ŸŒด,๐ŸŒฑ,๐ŸŒฟ,โ˜˜๏ธ,๐Ÿ€,๐ŸŽ,๐ŸŽ‹,๐Ÿƒ,๐Ÿ‚,๐Ÿ,๐Ÿ„,๐ŸŒพ,๐Ÿ’,๐ŸŒท,๐ŸŒน,๐Ÿฅ€,๐ŸŒป,๐ŸŒผ,๐ŸŒธ,๐ŸŒบ,๐ŸŒŽ,๐ŸŒ,๐ŸŒ,๐ŸŒ•,๐ŸŒ–,๐ŸŒ—,๐ŸŒ˜,๐ŸŒ‘,๐ŸŒ’,๐ŸŒ“,๐ŸŒ”,๐ŸŒš,๐ŸŒ,๐ŸŒž,๐ŸŒ›,๐ŸŒœ,๐ŸŒ™,๐Ÿ’ซ,โญ๏ธ,๐ŸŒŸ,โœจ,โšก๏ธ,๐Ÿ”ฅ,๐Ÿ’ฅ,โ˜„๏ธ,โ˜€๏ธ,๐ŸŒค,โ›…๏ธ,๐ŸŒฅ,๐ŸŒฆ,๐ŸŒˆ,โ˜๏ธ,๐ŸŒง,โ›ˆ,๐ŸŒฉ,๐ŸŒจ,โ˜ƒ๏ธ,โ›„๏ธ,โ„๏ธ,๐ŸŒฌ,๐Ÿ’จ,๐ŸŒช,๐ŸŒซ,๐ŸŒŠ,๐Ÿ’ง,๐Ÿ’ฆ,โ˜”๏ธ"
17
- }
18
- },
19
- {
20
- "CVDataTitle" : "EmojiCategory-Foods",
21
- "CVCategoryImage" : "Emoji-FoodsImage",
22
- "CVCategoryData" : {
23
- "CVSkipNullGlyphs" : false,
24
- "Data" : "๐Ÿ,๐ŸŽ,๐Ÿ,๐ŸŠ,๐Ÿ‹,๐ŸŒ,๐Ÿ‰,๐Ÿ‡,๐Ÿ“,๐Ÿˆ,๐Ÿ’,๐Ÿ‘,๐Ÿ,๐Ÿฅ,๐Ÿฅ‘,๐Ÿ…,๐Ÿ†,๐Ÿฅ’,๐Ÿฅ•,๐ŸŒฝ,๐ŸŒถ,๐Ÿฅ”,๐Ÿ ,๐ŸŒฐ,๐Ÿฅœ,๐Ÿฏ,๐Ÿฅ,๐Ÿž,๐Ÿฅ–,๐Ÿง€,๐Ÿฅš,๐Ÿณ,๐Ÿฅ“,๐Ÿฅž,๐Ÿค,๐Ÿ—,๐Ÿ–,๐Ÿ•,๐ŸŒญ,๐Ÿ”,๐ŸŸ,๐Ÿฅ™,๐ŸŒฎ,๐ŸŒฏ,๐Ÿฅ—,๐Ÿฅ˜,๐Ÿ,๐Ÿœ,๐Ÿฒ,๐Ÿฅ,๐Ÿฃ,๐Ÿฑ,๐Ÿ›,๐Ÿš,๐Ÿ™,๐Ÿ˜,๐Ÿข,๐Ÿก,๐Ÿง,๐Ÿจ,๐Ÿฆ,๐Ÿฐ,๐ŸŽ‚,๐Ÿฎ,๐Ÿญ,๐Ÿฌ,๐Ÿซ,๐Ÿฟ,๐Ÿฉ,๐Ÿช,๐Ÿฅ›,๐Ÿผ,โ˜•๏ธ,๐Ÿต,๐Ÿถ,๐Ÿบ,๐Ÿป,๐Ÿฅ‚,๐Ÿท,๐Ÿฅƒ,๐Ÿธ,๐Ÿน,๐Ÿพ,๐Ÿฅ„,๐Ÿด,๐Ÿฝ"
25
- }
26
- },
27
- {
28
- "CVDataTitle" : "EmojiCategory-Activity",
29
- "CVCategoryImage" : "Emoji-ActivityImage",
30
- "CVCategoryData" : {
31
- "CVSkipNullGlyphs" : false,
32
- "Data" : "โšฝ๏ธ,๐Ÿ€,๐Ÿˆ,โšพ๏ธ,๐ŸŽพ,๐Ÿ,๐Ÿ‰,๐ŸŽฑ,๐Ÿ“,๐Ÿธ,๐Ÿฅ…,๐Ÿ’,๐Ÿ‘,๐Ÿ,โ›ณ๏ธ,๐Ÿน,๐ŸŽฃ,๐ŸฅŠ,๐Ÿฅ‹,โ›ธ,๐ŸŽฟ,โ›ท,๐Ÿ‚,๐Ÿ‹๏ธโ€โ™€๏ธ,๐Ÿ‹๏ธ,๐Ÿคบ,๐Ÿคผโ€โ™€๏ธ,๐Ÿคผโ€โ™‚๏ธ,๐Ÿคธโ€โ™€๏ธ,๐Ÿคธโ€โ™‚๏ธ,โ›น๏ธโ€โ™€๏ธ,โ›น๏ธ,๐Ÿคพโ€โ™€๏ธ,๐Ÿคพโ€โ™‚๏ธ,๐ŸŒ๏ธโ€โ™€๏ธ,๐ŸŒ๏ธ,๐Ÿ„โ€โ™€๏ธ,๐Ÿ„,๐ŸŠโ€โ™€๏ธ,๐ŸŠ,๐Ÿคฝโ€โ™€๏ธ,๐Ÿคฝโ€โ™‚๏ธ,๐Ÿšฃโ€โ™€๏ธ,๐Ÿšฃ,๐Ÿ‡,๐Ÿšดโ€โ™€๏ธ,๐Ÿšด,๐Ÿšตโ€โ™€๏ธ,๐Ÿšต,๐ŸŽฝ,๐Ÿ…,๐ŸŽ–,๐Ÿฅ‡,๐Ÿฅˆ,๐Ÿฅ‰,๐Ÿ†,๐Ÿต,๐ŸŽ—,๐ŸŽซ,๐ŸŽŸ,๐ŸŽช,๐Ÿคนโ€โ™€๏ธ,๐Ÿคนโ€โ™‚๏ธ,๐ŸŽญ,๐ŸŽจ,๐ŸŽฌ,๐ŸŽค,๐ŸŽง,๐ŸŽผ,๐ŸŽน,๐Ÿฅ,๐ŸŽท,๐ŸŽบ,๐ŸŽธ,๐ŸŽป,๐ŸŽฒ,๐ŸŽฏ,๐ŸŽณ,๐ŸŽฎ,๐ŸŽฐ"
33
- }
34
- },
35
- {
36
- "CVDataTitle" : "EmojiCategory-Places",
37
- "CVCategoryImage" : "Emoji-PlacesImage",
38
- "CVCategoryData" : {
39
- "CVSkipNullGlyphs" : false,
40
- "Data" : "๐Ÿš—,๐Ÿš•,๐Ÿš™,๐ŸšŒ,๐ŸšŽ,๐ŸŽ,๐Ÿš“,๐Ÿš‘,๐Ÿš’,๐Ÿš,๐Ÿšš,๐Ÿš›,๐Ÿšœ,๐Ÿ›ด,๐Ÿšฒ,๐Ÿ›ต,๐Ÿ,๐Ÿšจ,๐Ÿš”,๐Ÿš,๐Ÿš˜,๐Ÿš–,๐Ÿšก,๐Ÿš ,๐ŸšŸ,๐Ÿšƒ,๐Ÿš‹,๐Ÿšž,๐Ÿš,๐Ÿš„,๐Ÿš…,๐Ÿšˆ,๐Ÿš‚,๐Ÿš†,๐Ÿš‡,๐ŸšŠ,๐Ÿš‰,๐Ÿš,๐Ÿ›ฉ,โœˆ๏ธ,๐Ÿ›ซ,๐Ÿ›ฌ,๐Ÿš€,๐Ÿ›ฐ,๐Ÿ’บ,๐Ÿ›ถ,โ›ต๏ธ,๐Ÿ›ฅ,๐Ÿšค,๐Ÿ›ณ,โ›ด,๐Ÿšข,โš“๏ธ,๐Ÿšง,โ›ฝ๏ธ,๐Ÿš,๐Ÿšฆ,๐Ÿšฅ,๐Ÿ—บ,๐Ÿ—ฟ,๐Ÿ—ฝ,โ›ฒ๏ธ,๐Ÿ—ผ,๐Ÿฐ,๐Ÿฏ,๐ŸŸ,๐ŸŽก,๐ŸŽข,๐ŸŽ ,โ›ฑ,๐Ÿ–,๐Ÿ,โ›ฐ,๐Ÿ”,๐Ÿ—ป,๐ŸŒ‹,๐Ÿœ,๐Ÿ•,โ›บ๏ธ,๐Ÿ›ค,๐Ÿ›ฃ,๐Ÿ—,๐Ÿญ,๐Ÿ ,๐Ÿก,๐Ÿ˜,๐Ÿš,๐Ÿข,๐Ÿฌ,๐Ÿฃ,๐Ÿค,๐Ÿฅ,๐Ÿฆ,๐Ÿจ,๐Ÿช,๐Ÿซ,๐Ÿฉ,๐Ÿ’’,๐Ÿ›,โ›ช๏ธ,๐Ÿ•Œ,๐Ÿ•,๐Ÿ•‹,โ›ฉ,๐Ÿ—พ,๐ŸŽ‘,๐Ÿž,๐ŸŒ…,๐ŸŒ„,๐ŸŒ ,๐ŸŽ‡,๐ŸŽ†,๐ŸŒ‡,๐ŸŒ†,๐Ÿ™,๐ŸŒƒ,๐ŸŒŒ,๐ŸŒ‰,๐ŸŒ"
41
- }
42
- },
43
- {
44
- "CVDataTitle" : "EmojiCategory-Objects",
45
- "CVCategoryImage" : "Emoji-ObjectsImage",
46
- "CVCategoryData" : {
47
- "CVSkipNullGlyphs" : false,
48
- "Data" : "โŒš๏ธ,๐Ÿ“ฑ,๐Ÿ“ฒ,๐Ÿ’ป,โŒจ๏ธ,๐Ÿ–ฅ,๐Ÿ–จ,๐Ÿ–ฑ,๐Ÿ–ฒ,๐Ÿ•น,๐Ÿ—œ,๐Ÿ’ฝ,๐Ÿ’พ,๐Ÿ’ฟ,๐Ÿ“€,๐Ÿ“ผ,๐Ÿ“ท,๐Ÿ“ธ,๐Ÿ“น,๐ŸŽฅ,๐Ÿ“ฝ,๐ŸŽž,๐Ÿ“ž,โ˜Ž๏ธ,๐Ÿ“Ÿ,๐Ÿ“ ,๐Ÿ“บ,๐Ÿ“ป,๐ŸŽ™,๐ŸŽš,๐ŸŽ›,โฑ,โฒ,โฐ,๐Ÿ•ฐ,โŒ›๏ธ,โณ,๐Ÿ“ก,๐Ÿ”‹,๐Ÿ”Œ,๐Ÿ’ก,๐Ÿ”ฆ,๐Ÿ•ฏ,๐Ÿ—‘,๐Ÿ›ข,๐Ÿ’ธ,๐Ÿ’ต,๐Ÿ’ด,๐Ÿ’ถ,๐Ÿ’ท,๐Ÿ’ฐ,๐Ÿ’ณ,๐Ÿ’Ž,โš–๏ธ,๐Ÿ”ง,๐Ÿ”จ,โš’,๐Ÿ› ,โ›,๐Ÿ”ฉ,โš™๏ธ,โ›“,๐Ÿ”ซ,๐Ÿ’ฃ,๐Ÿ”ช,๐Ÿ—ก,โš”๏ธ,๐Ÿ›ก,๐Ÿšฌ,โšฐ๏ธ,โšฑ๏ธ,๐Ÿบ,๐Ÿ”ฎ,๐Ÿ“ฟ,๐Ÿ’ˆ,โš—๏ธ,๐Ÿ”ญ,๐Ÿ”ฌ,๐Ÿ•ณ,๐Ÿ’Š,๐Ÿ’‰,๐ŸŒก,๐Ÿšฝ,๐Ÿšฐ,๐Ÿšฟ,๐Ÿ›,๐Ÿ›€,๐Ÿ›Ž,๐Ÿ”‘,๐Ÿ—,๐Ÿšช,๐Ÿ›‹,๐Ÿ›,๐Ÿ›Œ,๐Ÿ–ผ,๐Ÿ›,๐Ÿ›’,๐ŸŽ,๐ŸŽˆ,๐ŸŽ,๐ŸŽ€,๐ŸŽŠ,๐ŸŽ‰,๐ŸŽŽ,๐Ÿฎ,๐ŸŽ,โœ‰๏ธ,๐Ÿ“ฉ,๐Ÿ“จ,๐Ÿ“ง,๐Ÿ’Œ,๐Ÿ“ฅ,๐Ÿ“ค,๐Ÿ“ฆ,๐Ÿท,๐Ÿ“ช,๐Ÿ“ซ,๐Ÿ“ฌ,๐Ÿ“ญ,๐Ÿ“ฎ,๐Ÿ“ฏ,๐Ÿ“œ,๐Ÿ“ƒ,๐Ÿ“„,๐Ÿ“‘,๐Ÿ“Š,๐Ÿ“ˆ,๐Ÿ“‰,๐Ÿ—’,๐Ÿ—“,๐Ÿ“†,๐Ÿ“…,๐Ÿ“‡,๐Ÿ—ƒ,๐Ÿ—ณ,๐Ÿ—„,๐Ÿ“‹,๐Ÿ“,๐Ÿ“‚,๐Ÿ—‚,๐Ÿ—ž,๐Ÿ“ฐ,๐Ÿ““,๐Ÿ“”,๐Ÿ“’,๐Ÿ“•,๐Ÿ“—,๐Ÿ“˜,๐Ÿ“™,๐Ÿ“š,๐Ÿ“–,๐Ÿ”–,๐Ÿ”—,๐Ÿ“Ž,๐Ÿ–‡,๐Ÿ“,๐Ÿ“,๐Ÿ“Œ,๐Ÿ“,โœ‚๏ธ,๐Ÿ–Š,๐Ÿ–‹,โœ’๏ธ,๐Ÿ–Œ,๐Ÿ–,๐Ÿ“,โœ๏ธ,๐Ÿ”,๐Ÿ”Ž,๐Ÿ”,๐Ÿ”,๐Ÿ”’,๐Ÿ”“"
49
- }
50
- },
51
- {
52
- "CVDataTitle" : "EmojiCategory-Symbols",
53
- "CVCategoryImage" : "Emoji-SymbolImage",
54
- "CVCategoryData" : {
55
- "CVSkipNullGlyphs" : false,
56
- "Data" : "โค๏ธ,๐Ÿ’›,๐Ÿ’š,๐Ÿ’™,๐Ÿ’œ,๐Ÿ–ค,๐Ÿ’”,โฃ๏ธ,๐Ÿ’•,๐Ÿ’ž,๐Ÿ’“,๐Ÿ’—,๐Ÿ’–,๐Ÿ’˜,๐Ÿ’,๐Ÿ’Ÿ,โ˜ฎ๏ธ,โœ๏ธ,โ˜ช๏ธ,๐Ÿ•‰,โ˜ธ๏ธ,โœก๏ธ,๐Ÿ”ฏ,๐Ÿ•Ž,โ˜ฏ๏ธ,โ˜ฆ๏ธ,๐Ÿ›,โ›Ž,โ™ˆ๏ธ,โ™‰๏ธ,โ™Š๏ธ,โ™‹๏ธ,โ™Œ๏ธ,โ™๏ธ,โ™Ž๏ธ,โ™๏ธ,โ™๏ธ,โ™‘๏ธ,โ™’๏ธ,โ™“๏ธ,๐Ÿ†”,โš›๏ธ,๐Ÿ‰‘,โ˜ข๏ธ,โ˜ฃ๏ธ,๐Ÿ“ด,๐Ÿ“ณ,๐Ÿˆถ,๐Ÿˆš๏ธ,๐Ÿˆธ,๐Ÿˆบ,๐Ÿˆท๏ธ,โœด๏ธ,๐Ÿ†š,๐Ÿ’ฎ,๐Ÿ‰,ใŠ™๏ธ,ใŠ—๏ธ,๐Ÿˆด,๐Ÿˆต,๐Ÿˆน,๐Ÿˆฒ,๐Ÿ…ฐ๏ธ,๐Ÿ…ฑ๏ธ,๐Ÿ†Ž,๐Ÿ†‘,๐Ÿ…พ๏ธ,๐Ÿ†˜,โŒ,โญ•๏ธ,๐Ÿ›‘,โ›”๏ธ,๐Ÿ“›,๐Ÿšซ,๐Ÿ’ฏ,๐Ÿ’ข,โ™จ๏ธ,๐Ÿšท,๐Ÿšฏ,๐Ÿšณ,๐Ÿšฑ,๐Ÿ”ž,๐Ÿ“ต,๐Ÿšญ,โ—๏ธ,โ•,โ“,โ”,โ€ผ๏ธ,โ‰๏ธ,๐Ÿ”…,๐Ÿ”†,ใ€ฝ๏ธ,โš ๏ธ,๐Ÿšธ,๐Ÿ”ฑ,โšœ๏ธ,๐Ÿ”ฐ,โ™ป๏ธ,โœ…,๐Ÿˆฏ๏ธ,๐Ÿ’น,โ‡๏ธ,โœณ๏ธ,โŽ,๐ŸŒ,๐Ÿ’ ,โ“‚๏ธ,๐ŸŒ€,๐Ÿ’ค,๐Ÿง,๐Ÿšพ,โ™ฟ๏ธ,๐Ÿ…ฟ๏ธ,๐Ÿˆณ,๐Ÿˆ‚๏ธ,๐Ÿ›‚,๐Ÿ›ƒ,๐Ÿ›„,๐Ÿ›…,๐Ÿšน,๐Ÿšบ,๐Ÿšผ,๐Ÿšป,๐Ÿšฎ,๐ŸŽฆ,๐Ÿ“ถ,๐Ÿˆ,๐Ÿ”ฃ,โ„น๏ธ,๐Ÿ”ค,๐Ÿ”ก,๐Ÿ” ,๐Ÿ†–,๐Ÿ†—,๐Ÿ†™,๐Ÿ†’,๐Ÿ†•,๐Ÿ†“,0๏ธโƒฃ,1๏ธโƒฃ,2๏ธโƒฃ,3๏ธโƒฃ,4๏ธโƒฃ,5๏ธโƒฃ,6๏ธโƒฃ,7๏ธโƒฃ,8๏ธโƒฃ,9๏ธโƒฃ,๐Ÿ”Ÿ,๐Ÿ”ข,#๏ธโƒฃ,*๏ธโƒฃ,โ–ถ๏ธ,โธ,โฏ,โน,โบ,โญ,โฎ,โฉ,โช,โซ,โฌ,โ—€๏ธ,๐Ÿ”ผ,๐Ÿ”ฝ,โžก๏ธ,โฌ…๏ธ,โฌ†๏ธ,โฌ‡๏ธ,โ†—๏ธ,โ†˜๏ธ,โ†™๏ธ,โ†–๏ธ,โ†•๏ธ,โ†”๏ธ,โ†ช๏ธ,โ†ฉ๏ธ,โคด๏ธ,โคต๏ธ,๐Ÿ”€,๐Ÿ”,๐Ÿ”‚,๐Ÿ”„,๐Ÿ”ƒ,๐ŸŽต,๐ŸŽถ,โž•,โž–,โž—,โœ–๏ธ,๐Ÿ’ฒ,๐Ÿ’ฑ,โ„ข๏ธ,ยฉ๏ธ,ยฎ๏ธ,ใ€ฐ๏ธ,โžฐ,โžฟ,๐Ÿ”š,๐Ÿ”™,๐Ÿ”›,๐Ÿ”,๐Ÿ”œ,โœ”๏ธ,โ˜‘๏ธ,๐Ÿ”˜,โšช๏ธ,โšซ๏ธ,๐Ÿ”ด,๐Ÿ”ต,๐Ÿ”บ,๐Ÿ”ป,๐Ÿ”ธ,๐Ÿ”น,๐Ÿ”ถ,๐Ÿ”ท,๐Ÿ”ณ,๐Ÿ”ฒ,โ–ช๏ธ,โ–ซ๏ธ,โ—พ๏ธ,โ—ฝ๏ธ,โ—ผ๏ธ,โ—ป๏ธ,โฌ›๏ธ,โฌœ๏ธ,๐Ÿ”ˆ,๐Ÿ”‡,๐Ÿ”‰,๐Ÿ”Š,๐Ÿ””,๐Ÿ”•,๐Ÿ“ฃ,๐Ÿ“ข,๐Ÿ‘โ€๐Ÿ—จ,๐Ÿ’ฌ,๐Ÿ’ญ,๐Ÿ—ฏ,โ™ ๏ธ,โ™ฃ๏ธ,โ™ฅ๏ธ,โ™ฆ๏ธ,๐Ÿƒ,๐ŸŽด,๐Ÿ€„๏ธ,๐Ÿ•,๐Ÿ•‘,๐Ÿ•’,๐Ÿ•“,๐Ÿ•”,๐Ÿ••,๐Ÿ•–,๐Ÿ•—,๐Ÿ•˜,๐Ÿ•™,๐Ÿ•š,๐Ÿ•›,๐Ÿ•œ,๐Ÿ•,๐Ÿ•ž,๐Ÿ•Ÿ,๐Ÿ• ,๐Ÿ•ก,๐Ÿ•ข,๐Ÿ•ฃ,๐Ÿ•ค,๐Ÿ•ฅ,๐Ÿ•ฆ,๐Ÿ•ง"
57
- }
58
- },
59
- {
60
- "CVDataTitle" : "EmojiCategory-Flags",
61
- "CVCategoryImage" : "Emoji-FlagsImage",
62
- "CVCategoryData" : {
63
- "CVSkipNullGlyphs" : false,
64
- "Data" : "๐Ÿณ๏ธ,๐Ÿด,๐Ÿ,๐Ÿšฉ,๐Ÿณ๏ธโ€๐ŸŒˆ,๐Ÿ‡ฆ๐Ÿ‡ซ,๐Ÿ‡ฆ๐Ÿ‡ฝ,๐Ÿ‡ฆ๐Ÿ‡ฑ,๐Ÿ‡ฉ๐Ÿ‡ฟ,๐Ÿ‡ฆ๐Ÿ‡ธ,๐Ÿ‡ฆ๐Ÿ‡ฉ,๐Ÿ‡ฆ๐Ÿ‡ด,๐Ÿ‡ฆ๐Ÿ‡ฎ,๐Ÿ‡ฆ๐Ÿ‡ถ,๐Ÿ‡ฆ๐Ÿ‡ฌ,๐Ÿ‡ฆ๐Ÿ‡ท,๐Ÿ‡ฆ๐Ÿ‡ฒ,๐Ÿ‡ฆ๐Ÿ‡ผ,๐Ÿ‡ฆ๐Ÿ‡บ,๐Ÿ‡ฆ๐Ÿ‡น,๐Ÿ‡ฆ๐Ÿ‡ฟ,๐Ÿ‡ง๐Ÿ‡ธ,๐Ÿ‡ง๐Ÿ‡ญ,๐Ÿ‡ง๐Ÿ‡ฉ,๐Ÿ‡ง๐Ÿ‡ง,๐Ÿ‡ง๐Ÿ‡พ,๐Ÿ‡ง๐Ÿ‡ช,๐Ÿ‡ง๐Ÿ‡ฟ,๐Ÿ‡ง๐Ÿ‡ฏ,๐Ÿ‡ง๐Ÿ‡ฒ,๐Ÿ‡ง๐Ÿ‡น,๐Ÿ‡ง๐Ÿ‡ด,๐Ÿ‡ง๐Ÿ‡ถ,๐Ÿ‡ง๐Ÿ‡ฆ,๐Ÿ‡ง๐Ÿ‡ผ,๐Ÿ‡ง๐Ÿ‡ท,๐Ÿ‡ฎ๐Ÿ‡ด,๐Ÿ‡ป๐Ÿ‡ฌ,๐Ÿ‡ง๐Ÿ‡ณ,๐Ÿ‡ง๐Ÿ‡ฌ,๐Ÿ‡ง๐Ÿ‡ซ,๐Ÿ‡ง๐Ÿ‡ฎ,๐Ÿ‡จ๐Ÿ‡ป,๐Ÿ‡ฐ๐Ÿ‡ญ,๐Ÿ‡จ๐Ÿ‡ฒ,๐Ÿ‡จ๐Ÿ‡ฆ,๐Ÿ‡ฎ๐Ÿ‡จ,๐Ÿ‡ฐ๐Ÿ‡พ,๐Ÿ‡จ๐Ÿ‡ซ,๐Ÿ‡น๐Ÿ‡ฉ,๐Ÿ‡จ๐Ÿ‡ฑ,๐Ÿ‡จ๐Ÿ‡ณ,๐Ÿ‡จ๐Ÿ‡ฝ,๐Ÿ‡จ๐Ÿ‡จ,๐Ÿ‡จ๐Ÿ‡ด,๐Ÿ‡ฐ๐Ÿ‡ฒ,๐Ÿ‡จ๐Ÿ‡ฌ,๐Ÿ‡จ๐Ÿ‡ฉ,๐Ÿ‡จ๐Ÿ‡ฐ,๐Ÿ‡จ๐Ÿ‡ท,๐Ÿ‡จ๐Ÿ‡ฎ,๐Ÿ‡ญ๐Ÿ‡ท,๐Ÿ‡จ๐Ÿ‡บ,๐Ÿ‡จ๐Ÿ‡ผ,๐Ÿ‡จ๐Ÿ‡พ,๐Ÿ‡จ๐Ÿ‡ฟ,๐Ÿ‡ฉ๐Ÿ‡ฐ,๐Ÿ‡ฉ๐Ÿ‡ฏ,๐Ÿ‡ฉ๐Ÿ‡ฒ,๐Ÿ‡ฉ๐Ÿ‡ด,๐Ÿ‡ช๐Ÿ‡จ,๐Ÿ‡ช๐Ÿ‡ฌ,๐Ÿ‡ธ๐Ÿ‡ป,๐Ÿ‡ฌ๐Ÿ‡ถ,๐Ÿ‡ช๐Ÿ‡ท,๐Ÿ‡ช๐Ÿ‡ช,๐Ÿ‡ช๐Ÿ‡น,๐Ÿ‡ช๐Ÿ‡บ,๐Ÿ‡ซ๐Ÿ‡ฐ,๐Ÿ‡ซ๐Ÿ‡ด,๐Ÿ‡ซ๐Ÿ‡ฏ,๐Ÿ‡ซ๐Ÿ‡ฎ,๐Ÿ‡ซ๐Ÿ‡ท,๐Ÿ‡ฌ๐Ÿ‡ซ,๐Ÿ‡ต๐Ÿ‡ซ,๐Ÿ‡น๐Ÿ‡ซ,๐Ÿ‡ฌ๐Ÿ‡ฆ,๐Ÿ‡ฌ๐Ÿ‡ฒ,๐Ÿ‡ฌ๐Ÿ‡ช,๐Ÿ‡ฉ๐Ÿ‡ช,๐Ÿ‡ฌ๐Ÿ‡ญ,๐Ÿ‡ฌ๐Ÿ‡ฎ,๐Ÿ‡ฌ๐Ÿ‡ท,๐Ÿ‡ฌ๐Ÿ‡ฑ,๐Ÿ‡ฌ๐Ÿ‡ฉ,๐Ÿ‡ฌ๐Ÿ‡ต,๐Ÿ‡ฌ๐Ÿ‡บ,๐Ÿ‡ฌ๐Ÿ‡น,๐Ÿ‡ฌ๐Ÿ‡ฌ,๐Ÿ‡ฌ๐Ÿ‡ณ,๐Ÿ‡ฌ๐Ÿ‡ผ,๐Ÿ‡ฌ๐Ÿ‡พ,๐Ÿ‡ญ๐Ÿ‡น,๐Ÿ‡ญ๐Ÿ‡ณ,๐Ÿ‡ญ๐Ÿ‡ฐ,๐Ÿ‡ญ๐Ÿ‡บ,๐Ÿ‡ฎ๐Ÿ‡ธ,๐Ÿ‡ฎ๐Ÿ‡ณ,๐Ÿ‡ฎ๐Ÿ‡ฉ,๐Ÿ‡ฎ๐Ÿ‡ท,๐Ÿ‡ฎ๐Ÿ‡ถ,๐Ÿ‡ฎ๐Ÿ‡ช,๐Ÿ‡ฎ๐Ÿ‡ฒ,๐Ÿ‡ฎ๐Ÿ‡ฑ,๐Ÿ‡ฎ๐Ÿ‡น,๐Ÿ‡ฏ๐Ÿ‡ฒ,๐Ÿ‡ฏ๐Ÿ‡ต,๐ŸŽŒ,๐Ÿ‡ฏ๐Ÿ‡ช,๐Ÿ‡ฏ๐Ÿ‡ด,๐Ÿ‡ฐ๐Ÿ‡ฟ,๐Ÿ‡ฐ๐Ÿ‡ช,๐Ÿ‡ฐ๐Ÿ‡ฎ,๐Ÿ‡ฝ๐Ÿ‡ฐ,๐Ÿ‡ฐ๐Ÿ‡ผ,๐Ÿ‡ฐ๐Ÿ‡ฌ,๐Ÿ‡ฑ๐Ÿ‡ฆ,๐Ÿ‡ฑ๐Ÿ‡ป,๐Ÿ‡ฑ๐Ÿ‡ง,๐Ÿ‡ฑ๐Ÿ‡ธ,๐Ÿ‡ฑ๐Ÿ‡ท,๐Ÿ‡ฑ๐Ÿ‡พ,๐Ÿ‡ฑ๐Ÿ‡ฎ,๐Ÿ‡ฑ๐Ÿ‡น,๐Ÿ‡ฑ๐Ÿ‡บ,๐Ÿ‡ฒ๐Ÿ‡ด,๐Ÿ‡ฒ๐Ÿ‡ฐ,๐Ÿ‡ฒ๐Ÿ‡ฌ,๐Ÿ‡ฒ๐Ÿ‡ผ,๐Ÿ‡ฒ๐Ÿ‡พ,๐Ÿ‡ฒ๐Ÿ‡ป,๐Ÿ‡ฒ๐Ÿ‡ฑ,๐Ÿ‡ฒ๐Ÿ‡น,๐Ÿ‡ฒ๐Ÿ‡ญ,๐Ÿ‡ฒ๐Ÿ‡ถ,๐Ÿ‡ฒ๐Ÿ‡ท,๐Ÿ‡ฒ๐Ÿ‡บ,๐Ÿ‡พ๐Ÿ‡น,๐Ÿ‡ฒ๐Ÿ‡ฝ,๐Ÿ‡ซ๐Ÿ‡ฒ,๐Ÿ‡ฒ๐Ÿ‡ฉ,๐Ÿ‡ฒ๐Ÿ‡จ,๐Ÿ‡ฒ๐Ÿ‡ณ,๐Ÿ‡ฒ๐Ÿ‡ช,๐Ÿ‡ฒ๐Ÿ‡ธ,๐Ÿ‡ฒ๐Ÿ‡ฆ,๐Ÿ‡ฒ๐Ÿ‡ฟ,๐Ÿ‡ฒ๐Ÿ‡ฒ,๐Ÿ‡ณ๐Ÿ‡ฆ,๐Ÿ‡ณ๐Ÿ‡ท,๐Ÿ‡ณ๐Ÿ‡ต,๐Ÿ‡ณ๐Ÿ‡ฑ,๐Ÿ‡ณ๐Ÿ‡จ,๐Ÿ‡ณ๐Ÿ‡ฟ,๐Ÿ‡ณ๐Ÿ‡ฎ,๐Ÿ‡ณ๐Ÿ‡ช,๐Ÿ‡ณ๐Ÿ‡ฌ,๐Ÿ‡ณ๐Ÿ‡บ,๐Ÿ‡ณ๐Ÿ‡ซ,๐Ÿ‡ฒ๐Ÿ‡ต,๐Ÿ‡ฐ๐Ÿ‡ต,๐Ÿ‡ณ๐Ÿ‡ด,๐Ÿ‡ด๐Ÿ‡ฒ,๐Ÿ‡ต๐Ÿ‡ฐ,๐Ÿ‡ต๐Ÿ‡ผ,๐Ÿ‡ต๐Ÿ‡ธ,๐Ÿ‡ต๐Ÿ‡ฆ,๐Ÿ‡ต๐Ÿ‡ฌ,๐Ÿ‡ต๐Ÿ‡พ,๐Ÿ‡ต๐Ÿ‡ช,๐Ÿ‡ต๐Ÿ‡ญ,๐Ÿ‡ต๐Ÿ‡ณ,๐Ÿ‡ต๐Ÿ‡ฑ,๐Ÿ‡ต๐Ÿ‡น,๐Ÿ‡ต๐Ÿ‡ท,๐Ÿ‡ถ๐Ÿ‡ฆ,๐Ÿ‡ท๐Ÿ‡ช,๐Ÿ‡ท๐Ÿ‡ด,๐Ÿ‡ท๐Ÿ‡บ,๐Ÿ‡ท๐Ÿ‡ผ,๐Ÿ‡ง๐Ÿ‡ฑ,๐Ÿ‡ธ๐Ÿ‡ญ,๐Ÿ‡ฐ๐Ÿ‡ณ,๐Ÿ‡ฑ๐Ÿ‡จ,๐Ÿ‡ต๐Ÿ‡ฒ,๐Ÿ‡ป๐Ÿ‡จ,๐Ÿ‡ผ๐Ÿ‡ธ,๐Ÿ‡ธ๐Ÿ‡ฒ,๐Ÿ‡ธ๐Ÿ‡น,๐Ÿ‡ธ๐Ÿ‡ฆ,๐Ÿ‡ธ๐Ÿ‡ณ,๐Ÿ‡ท๐Ÿ‡ธ,๐Ÿ‡ธ๐Ÿ‡จ,๐Ÿ‡ธ๐Ÿ‡ฑ,๐Ÿ‡ธ๐Ÿ‡ฌ,๐Ÿ‡ธ๐Ÿ‡ฝ,๐Ÿ‡ธ๐Ÿ‡ฐ,๐Ÿ‡ธ๐Ÿ‡ฎ,๐Ÿ‡ธ๐Ÿ‡ง,๐Ÿ‡ธ๐Ÿ‡ด,๐Ÿ‡ฟ๐Ÿ‡ฆ,๐Ÿ‡ฌ๐Ÿ‡ธ,๐Ÿ‡ฐ๐Ÿ‡ท,๐Ÿ‡ธ๐Ÿ‡ธ,๐Ÿ‡ช๐Ÿ‡ธ,๐Ÿ‡ฑ๐Ÿ‡ฐ,๐Ÿ‡ธ๐Ÿ‡ฉ,๐Ÿ‡ธ๐Ÿ‡ท,๐Ÿ‡ธ๐Ÿ‡ฟ,๐Ÿ‡ธ๐Ÿ‡ช,๐Ÿ‡จ๐Ÿ‡ญ,๐Ÿ‡ธ๐Ÿ‡พ,๐Ÿ‡น๐Ÿ‡ผ,๐Ÿ‡น๐Ÿ‡ฏ,๐Ÿ‡น๐Ÿ‡ฟ,๐Ÿ‡น๐Ÿ‡ญ,๐Ÿ‡น๐Ÿ‡ฑ,๐Ÿ‡น๐Ÿ‡ฌ,๐Ÿ‡น๐Ÿ‡ฐ,๐Ÿ‡น๐Ÿ‡ด,๐Ÿ‡น๐Ÿ‡น,๐Ÿ‡น๐Ÿ‡ณ,๐Ÿ‡น๐Ÿ‡ท,๐Ÿ‡น๐Ÿ‡ฒ,๐Ÿ‡น๐Ÿ‡จ,๐Ÿ‡น๐Ÿ‡ป,๐Ÿ‡บ๐Ÿ‡ฌ,๐Ÿ‡บ๐Ÿ‡ฆ,๐Ÿ‡ฆ๐Ÿ‡ช,๐Ÿ‡ฌ๐Ÿ‡ง,๐Ÿ‡บ๐Ÿ‡ธ,๐Ÿ‡ป๐Ÿ‡ฎ,๐Ÿ‡บ๐Ÿ‡พ,๐Ÿ‡บ๐Ÿ‡ฟ,๐Ÿ‡ป๐Ÿ‡บ,๐Ÿ‡ป๐Ÿ‡ฆ,๐Ÿ‡ป๐Ÿ‡ช,๐Ÿ‡ป๐Ÿ‡ณ,๐Ÿ‡ผ๐Ÿ‡ซ,๐Ÿ‡ช๐Ÿ‡ญ,๐Ÿ‡พ๐Ÿ‡ช,๐Ÿ‡ฟ๐Ÿ‡ฒ,๐Ÿ‡ฟ๐Ÿ‡ผ"
65
- }
66
- }
67
- ],
68
- "CVViewFontList" : [
69
- "AppleColorEmoji"
70
- ]
71
- }
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,68 +0,0 @@
1
- require 'emoji/extractor'
2
- require 'fileutils'
3
- require 'optparse'
4
-
5
- module Emoji
6
- module CLI
7
- extend self
8
-
9
- InvalidUsage = Class.new(RuntimeError)
10
-
11
- def dispatch(argv)
12
- cmd = argv[0]
13
- argv = argv[1..-1]
14
-
15
- case cmd
16
- when "extract"
17
- public_send(cmd, argv)
18
- when "help", "--help", "-h"
19
- help
20
- else
21
- raise InvalidUsage
22
- end
23
-
24
- return 0
25
- rescue InvalidUsage, OptionParser::InvalidArgument, OptionParser::InvalidOption => err
26
- unless err.message == err.class.to_s
27
- $stderr.puts err.message
28
- $stderr.puts
29
- end
30
- $stderr.puts usage_text
31
- return 1
32
- end
33
-
34
- def help
35
- puts usage_text
36
- end
37
-
38
- VALID_SIZES = [ 20, 32, 40, 48, 64, 96, 160 ]
39
-
40
- def extract(argv)
41
- size = 64
42
-
43
- OptionParser.new do |opts|
44
- opts.on("--size=#{size}", Integer) do |val|
45
- if VALID_SIZES.include?(val)
46
- size = val
47
- else
48
- raise InvalidUsage, "size should be one of: #{VALID_SIZES.join(', ')}"
49
- end
50
- end
51
- end.parse!(argv)
52
-
53
- raise InvalidUsage unless argv.size == 1
54
- path = argv[0]
55
-
56
- Emoji::Extractor.new(size, path).extract!
57
- Dir["#{Emoji.images_path}/*.png"].each do |png|
58
- FileUtils.cp(png, File.join(path, File.basename(png)))
59
- end
60
- end
61
-
62
- def usage_text
63
- <<EOF
64
- Usage: gemoji extract <path> [--size=64]
65
- EOF
66
- end
67
- end
68
- end