twemoji 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +14 -0
- data/Gemfile +13 -0
- data/LICENSE +22 -0
- data/README.md +100 -0
- data/Rakefile +11 -0
- data/lib/twemoji.rb +149 -0
- data/lib/twemoji/map.rb +853 -0
- data/lib/twemoji/version.rb +3 -0
- data/test/test_helper.rb +3 -0
- data/test/twemoji_test.rb +39 -0
- data/twemoji.gemspec +20 -0
- metadata +71 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 30d5595bf4c341a2f7b960d79941a08571184fb3
|
4
|
+
data.tar.gz: 1ba40ad4ea3c925acbca7a7cdd7e3ba1bf3fa9b0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e3d2628da8e26b765f96944e8a93328cfebb747fae0c13fb88db09cf72c1fab1f0d36cb9e4a05c8e3c4f31ff56ee88bb05b0690f77a10da2b7c00ee8963b5e40
|
7
|
+
data.tar.gz: 9bd3620246f497178f7f6f13997ee83834ee90b005a130a1a787e25cf4726be049700976c1588789d3efe1378fb87412f227a68d5b72f48246d9b035c345dfa4
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2015 Juanito Fatas
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
# Twemoji
|
2
|
+
|
3
|
+
Get imoji img by text.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'twemoji'
|
11
|
+
```
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install twemoji
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
### API
|
24
|
+
|
25
|
+
#### `.find_by_text`
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
> Twemoji.find_by_text(":heart_eyes:")
|
29
|
+
=> "1f60d"
|
30
|
+
```
|
31
|
+
|
32
|
+
#### `.find_by_code`
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
> Twemoji.find_by_code("1f60d")
|
36
|
+
=> "1f60d"
|
37
|
+
```
|
38
|
+
|
39
|
+
#### `.find_by` text or code
|
40
|
+
|
41
|
+
```ruby
|
42
|
+
> Twemoji.find_by(text: ':heart_eyes:')
|
43
|
+
=> 1f60d
|
44
|
+
|
45
|
+
> Twemoji.find_by(code: '1f60d')
|
46
|
+
=> :heart_eyes:
|
47
|
+
```
|
48
|
+
|
49
|
+
#### `.parse`
|
50
|
+
|
51
|
+
```ruby
|
52
|
+
> Twemoji.parse 'I like chocolate :heart_eyes:!'
|
53
|
+
=> 'I like chololate <img class="emoji" draggable="false" alt=":heart_eyes:" src="https://twemoji.maxcdn.com/36x36/1f60d.png">'
|
54
|
+
```
|
55
|
+
|
56
|
+
##### asset_root
|
57
|
+
|
58
|
+
Default assets root url, by default will be `https://twemoji.maxcdn.com/`:
|
59
|
+
|
60
|
+
```ruby
|
61
|
+
> Twemoji.parse 'I like chocolate :heart_eyes:!', base: 'foocdn.com'
|
62
|
+
=> 'I like chololate <img class="emoji" draggable="false" alt=":heart_eyes:" src="https://foocdn.com/36x36/1f60d.png">'
|
63
|
+
```
|
64
|
+
|
65
|
+
##### file_ext
|
66
|
+
|
67
|
+
Default assets file extensions, by default '.svg'.
|
68
|
+
|
69
|
+
```ruby
|
70
|
+
> Twemoji.parse 'I like chocolate :heart_eyes:!', ext: '.png'
|
71
|
+
=> 'I like chololate <img class="emoji" draggable="false" alt=":heart_eyes:" src="https://twemoji.maxcdn.com/16x16/1f60d.png">'
|
72
|
+
```
|
73
|
+
|
74
|
+
##### image_size
|
75
|
+
|
76
|
+
Default assets/folder size, by default "36x36". Available via Twitter CDN: 16, 36, 72
|
77
|
+
|
78
|
+
Only applicable when file_ext is .png.
|
79
|
+
|
80
|
+
```ruby
|
81
|
+
> Twemoji.parse 'I like chocolate :heart_eyes:!', size: "72x72"
|
82
|
+
=> 'I like chololate <img class="emoji" draggable="false" alt=":heart_eyes:" src="https://foocdn.com/72x72/1f60d.png">'
|
83
|
+
```
|
84
|
+
|
85
|
+
##### class_name
|
86
|
+
|
87
|
+
Default img css class name, by default "emoji".
|
88
|
+
|
89
|
+
```ruby
|
90
|
+
> Twemoji.parse 'I like chocolate :heart_eyes:!', class_name: 'superemoji'
|
91
|
+
=> 'I like chololate <img class="superemoji" draggable="false" alt=":heart_eyes:" src="https://foocdn.com/72x72/1f60d.png">'
|
92
|
+
```
|
93
|
+
|
94
|
+
## Contributing
|
95
|
+
|
96
|
+
1. Fork it ( https://github.com/[my-github-username]/twemoji/fork )
|
97
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
98
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
99
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
100
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
data/lib/twemoji.rb
ADDED
@@ -0,0 +1,149 @@
|
|
1
|
+
require "nokogiri"
|
2
|
+
|
3
|
+
require "twemoji/version"
|
4
|
+
require "twemoji/map"
|
5
|
+
|
6
|
+
module Twemoji
|
7
|
+
# Find code by text and find text by code.
|
8
|
+
#
|
9
|
+
# @example Usage
|
10
|
+
#
|
11
|
+
# Twemoji.find_by(text: :heart_eyes:) # => "1f60d"
|
12
|
+
# Twemoji.find_by(code: :1f60d:) # => "heart_eyes"
|
13
|
+
#
|
14
|
+
# @option options [String] (optional) :text
|
15
|
+
# @option options [String] (optional) :code
|
16
|
+
#
|
17
|
+
# @return [String] Text or Code
|
18
|
+
def self.find_by(*args, text: nil, code: nil)
|
19
|
+
raise "Can only specify text or code one at a time" if text && code
|
20
|
+
|
21
|
+
if text
|
22
|
+
find_by_text text
|
23
|
+
else
|
24
|
+
find_by_code code
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# Find emoji code by text
|
29
|
+
#
|
30
|
+
# @example Usage
|
31
|
+
#
|
32
|
+
# Twemoji.find_by_text ":heart_eyes:"
|
33
|
+
# => "1f60d"
|
34
|
+
#
|
35
|
+
# @param text [String] Text to find emoji code
|
36
|
+
#
|
37
|
+
# @return [String] Emoji Code
|
38
|
+
def self.find_by_text(text)
|
39
|
+
CODES[must_str(text)]
|
40
|
+
end
|
41
|
+
|
42
|
+
# Find text by emoji code
|
43
|
+
#
|
44
|
+
# @example Usage
|
45
|
+
#
|
46
|
+
# Twemoji.find_by_code "1f60d"
|
47
|
+
# => ":heart_eyes:"
|
48
|
+
#
|
49
|
+
# @param code [String] Emoji code to find text
|
50
|
+
#
|
51
|
+
# @return [String] Text
|
52
|
+
def self.find_by_code(code)
|
53
|
+
ICODES[must_str(code)]
|
54
|
+
end
|
55
|
+
|
56
|
+
# Parse text, replace emoji text with image.
|
57
|
+
#
|
58
|
+
# @example Usage
|
59
|
+
#
|
60
|
+
# Twemoji.parse("I like chocolate :heart_eyes:!")
|
61
|
+
# => => 'I like chololate <img class="emoji" draggable="false" alt=":heart_eyes:" src="https://twemoji.maxcdn.com/svg/1f60d.svg">'
|
62
|
+
#
|
63
|
+
# @param text [String] source text to parse.
|
64
|
+
#
|
65
|
+
# @option options [String] (optional) asset_root Asset root url to serve emoji.
|
66
|
+
# @option options [String] (optional) asset_path Folder where you store your emoji images.
|
67
|
+
# @option options [String] (optional) file_ext File extension.
|
68
|
+
# @option options [String] (optional) image_size Emoji image's size 16, 36, 72 applicable if specify .png.
|
69
|
+
# @option options [String] (optional) class_name Emoji image's css class name.
|
70
|
+
#
|
71
|
+
# @return [String]
|
72
|
+
def self.parse(text, asset_root: "https://twemoji.maxcdn.com/",
|
73
|
+
asset_path: "",
|
74
|
+
file_ext: ".svg",
|
75
|
+
image_size: "16x16",
|
76
|
+
class_name: "emoji")
|
77
|
+
|
78
|
+
options[:asset_root] = asset_root
|
79
|
+
options[:asset_path] = asset_path
|
80
|
+
options[:file_ext] = file_ext
|
81
|
+
options[:image_size] = image_size
|
82
|
+
options[:class_name] = class_name
|
83
|
+
|
84
|
+
if text.kind_of?(String)
|
85
|
+
parse_html(text)
|
86
|
+
else
|
87
|
+
parse_document(text)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
# Return all emoji patterns' regexp
|
92
|
+
def self.emoji_pattern
|
93
|
+
@emoji_pattern ||= /(#{CODES.keys.each { |name| Regexp.escape(name) }.join("|") })/
|
94
|
+
end
|
95
|
+
|
96
|
+
private
|
97
|
+
# Ensure text is string
|
98
|
+
#
|
99
|
+
# @param text [String]
|
100
|
+
#
|
101
|
+
# @return [String]
|
102
|
+
def self.must_str(text)
|
103
|
+
text = text.respond_to?(:to_str) ? text.to_str : text.to_s
|
104
|
+
end
|
105
|
+
|
106
|
+
def self.options
|
107
|
+
@options ||= {}
|
108
|
+
end
|
109
|
+
|
110
|
+
def self.parse_html(text)
|
111
|
+
return text if !text.include?(":")
|
112
|
+
|
113
|
+
filter_emojis(text)
|
114
|
+
end
|
115
|
+
|
116
|
+
def self.parse_document(doc)
|
117
|
+
doc.search('text()').each do |node|
|
118
|
+
content = node.to_html
|
119
|
+
next if !content.include?(":")
|
120
|
+
next if has_ancestor?(node, %w(pre code tt))
|
121
|
+
html = filter_emojis(content)
|
122
|
+
next if html == content
|
123
|
+
node.replace(html)
|
124
|
+
end
|
125
|
+
doc
|
126
|
+
end
|
127
|
+
|
128
|
+
def self.filter_emojis(content)
|
129
|
+
content.gsub(emoji_pattern) { |match| img_tag(match) }
|
130
|
+
end
|
131
|
+
|
132
|
+
def self.img_tag(name)
|
133
|
+
"<img class='#{options[:class_name]}' draggable='false' title='#{name}' alt='#{name}' src='#{emoji_url(name)}'>"
|
134
|
+
end
|
135
|
+
|
136
|
+
def self.emoji_url(name)
|
137
|
+
code = find_by_text(name)
|
138
|
+
|
139
|
+
if options[:file_ext] == ".svg"
|
140
|
+
File.join(options[:asset_root], "svg", "#{code}.svg")
|
141
|
+
elsif !options[:asset_path].empty?
|
142
|
+
File.join(options[:asset_root], options[:asset_path], "#{code}.#{options[:file_ext]}")
|
143
|
+
elsif options[:file_ext] == ".png"
|
144
|
+
File.join(options[:asset_root], options[:image_size], "#{code}.png")
|
145
|
+
else
|
146
|
+
File.join(options[:asset_root], options[:image_size], "#{code}.#{options[:file_ext]}")
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
data/lib/twemoji/map.rb
ADDED
@@ -0,0 +1,853 @@
|
|
1
|
+
module Twemoji
|
2
|
+
# String to hex map
|
3
|
+
#
|
4
|
+
# This hash is frozen.
|
5
|
+
#
|
6
|
+
# @example Usage
|
7
|
+
#
|
8
|
+
# CODES[:smile:] # => "1f604"
|
9
|
+
# CODES[:notebook_with_decorative_cover:] # => "1f4d4"
|
10
|
+
#
|
11
|
+
# @return [Hash<String => String>]
|
12
|
+
CODES = {
|
13
|
+
":smile:" => "1f604",
|
14
|
+
":laughing:" => "1f606",
|
15
|
+
":blush:" => "1f60a",
|
16
|
+
":smiley:" => "1f603",
|
17
|
+
":relaxed:" => "263a",
|
18
|
+
":smirk:" => "1f60f",
|
19
|
+
":heart_eyes:" => "1f60d",
|
20
|
+
":kissing_heart:" => "1f618",
|
21
|
+
":kissing_closed_eyes:" => "1f61a",
|
22
|
+
":flushed:" => "1f633",
|
23
|
+
":relieved:" => "1f625",
|
24
|
+
":satisfied:" => "1f60c",
|
25
|
+
":grin:" => "1f601",
|
26
|
+
":wink:" => "1f609",
|
27
|
+
":stuck_out_tongue_winking_eye:" => "1f61c",
|
28
|
+
":stuck_out_tongue_closed_eyes:" => "1f61d",
|
29
|
+
":grinning:" => "1f600",
|
30
|
+
":kissing:" => "1f617",
|
31
|
+
":kissing_smiling_eyes:" => "1f619",
|
32
|
+
":stuck_out_tongue:" => "1f61b",
|
33
|
+
":sleeping:" => "1f634",
|
34
|
+
":worried:" => "1f61f",
|
35
|
+
":frowning:" => "1f626",
|
36
|
+
":anguished:" => "1f627",
|
37
|
+
":open_mouth:" => "1f62e",
|
38
|
+
":grimacing:" => "1f62c",
|
39
|
+
":confused:" => "1f615",
|
40
|
+
":hushed:" => "1f62f",
|
41
|
+
":expressionless:" => "1f611",
|
42
|
+
":unamused:" => "1f612",
|
43
|
+
":sweat_smile:" => "1f605",
|
44
|
+
":sweat:" => "1f613",
|
45
|
+
":weary:" => "1f629",
|
46
|
+
":pensive:" => "1f614",
|
47
|
+
":disappointed:" => "1f61e",
|
48
|
+
":confounded:" => "1f616",
|
49
|
+
":fearful:" => "1f628",
|
50
|
+
":cold_sweat:" => "1f630",
|
51
|
+
":persevere:" => "1f623",
|
52
|
+
":cry:" => "1f622",
|
53
|
+
":sob:" => "1f62d",
|
54
|
+
":joy:" => "1f602",
|
55
|
+
":astonished:" => "1f632",
|
56
|
+
":scream:" => "1f631",
|
57
|
+
":tired_face:" => "1f62b",
|
58
|
+
":angry:" => "1f620",
|
59
|
+
":rage:" => "1f621",
|
60
|
+
":triumph:" => "1f624",
|
61
|
+
":sleepy:" => "1f62a",
|
62
|
+
":yum:" => "1f60b",
|
63
|
+
":mask:" => "1f637",
|
64
|
+
":sunglasses:" => "1f60e",
|
65
|
+
":dizzy_face:" => "1f635",
|
66
|
+
":imp:" => "1f47f",
|
67
|
+
":smiling_imp:" => "1f608",
|
68
|
+
":neutral_face:" => "1f610",
|
69
|
+
":no_mouth:" => "1f636",
|
70
|
+
":innocent:" => "1f607",
|
71
|
+
":alien:" => "1f47d",
|
72
|
+
":yellow_heart:" => "1f49b",
|
73
|
+
":blue_heart:" => "1f499",
|
74
|
+
":purple_heart:" => "1f49c",
|
75
|
+
":heart:" => "2764",
|
76
|
+
":green_heart:" => "1f49a",
|
77
|
+
":broken_heart:" => "1f494",
|
78
|
+
":heartbeat:" => "1f493",
|
79
|
+
":heartpulse:" => "1f497",
|
80
|
+
":two_hearts:" => "1f495",
|
81
|
+
":revolving_hearts:" => "1f49e",
|
82
|
+
":cupid:" => "1f498",
|
83
|
+
":sparkling_heart:" => "1f496",
|
84
|
+
":sparkles:" => "2728",
|
85
|
+
":star:" => "2b50",
|
86
|
+
":star2:" => "1f31f",
|
87
|
+
":dizzy:" => "1f4ab",
|
88
|
+
":boom:" => "1f4a5",
|
89
|
+
":anger:" => "1f4a2",
|
90
|
+
":exclamation:" => "2757",
|
91
|
+
":question:" => "2753",
|
92
|
+
":grey_exclamation:" => "2755",
|
93
|
+
":grey_question:" => "2754",
|
94
|
+
":zzz:" => "1f4a4",
|
95
|
+
":dash:" => "1f4a8",
|
96
|
+
":sweat_drops:" => "1f4a6",
|
97
|
+
":notes:" => "1f3b6",
|
98
|
+
":musical_note:" => "1f3b5",
|
99
|
+
":fire:" => "1f525",
|
100
|
+
":poop:" => "1f4a9",
|
101
|
+
":thumbsup:" => "1f44d",
|
102
|
+
":thumbsdown:" => "1f44e",
|
103
|
+
":ok_hand:" => "1f44c",
|
104
|
+
":punch:" => "1f44a",
|
105
|
+
":fist:" => "270a",
|
106
|
+
":v:" => "270c",
|
107
|
+
":wave:" => "1f44b",
|
108
|
+
":hand:" => "270b",
|
109
|
+
":open_hands:" => "1f450",
|
110
|
+
":point_up:" => "261d",
|
111
|
+
":point_down:" => "1f447",
|
112
|
+
":point_left:" => "1f448",
|
113
|
+
":point_right:" => "1f449",
|
114
|
+
":raised_hands:" => "1f64c",
|
115
|
+
":pray:" => "1f64f",
|
116
|
+
":point_up_2:" => "1f446",
|
117
|
+
":clap:" => "1f44f",
|
118
|
+
":muscle:" => "1f4aa",
|
119
|
+
":walking:" => "1f6b6",
|
120
|
+
":runner:" => "1f3c3",
|
121
|
+
":couple:" => "1f46b",
|
122
|
+
":family:" => "1f46a",
|
123
|
+
":two_men_holding_hands:" => "1f46c",
|
124
|
+
":two_women_holding_hands:" => "1f46d",
|
125
|
+
":dancer:" => "1f483",
|
126
|
+
":dancers:" => "1f46f",
|
127
|
+
":ok_woman:" => "1f646",
|
128
|
+
":no_good:" => "1f645",
|
129
|
+
":information_desk_person:" => "1f481",
|
130
|
+
":raised_hand:" => "1f64b",
|
131
|
+
":bride_with_veil:" => "1f470",
|
132
|
+
":person_with_pouting_face:" => "1f64e",
|
133
|
+
":person_frowning:" => "1f64d",
|
134
|
+
":bow:" => "1f647",
|
135
|
+
":couplekiss:" => "1f48f",
|
136
|
+
":couple_with_heart:" => "1f491",
|
137
|
+
":massage:" => "1f486",
|
138
|
+
":haircut:" => "1f487",
|
139
|
+
":nail_care:" => "1f485",
|
140
|
+
":boy:" => "1f466",
|
141
|
+
":girl:" => "1f467",
|
142
|
+
":woman:" => "1f469",
|
143
|
+
":man:" => "1f468",
|
144
|
+
":baby:" => "1f476",
|
145
|
+
":older_woman:" => "1f475",
|
146
|
+
":older_man:" => "1f474",
|
147
|
+
":person_with_blond_hair:" => "1f471",
|
148
|
+
":man_with_gua_pi_mao:" => "1f472",
|
149
|
+
":man_with_turban:" => "1f473",
|
150
|
+
":construction_worker:" => "1f477",
|
151
|
+
":cop:" => "1f46e",
|
152
|
+
":angel:" => "1f47c",
|
153
|
+
":princess:" => "1f478",
|
154
|
+
":smiley_cat:" => "1f63a",
|
155
|
+
":smile_cat:" => "1f638",
|
156
|
+
":heart_eyes_cat:" => "1f63b",
|
157
|
+
":kissing_cat:" => "1f63d",
|
158
|
+
":smirk_cat:" => "1f63c",
|
159
|
+
":scream_cat:" => "1f640",
|
160
|
+
":crying_cat_face:" => "1f63f",
|
161
|
+
":joy_cat:" => "1f639",
|
162
|
+
":pouting_cat:" => "1f63e",
|
163
|
+
":japanese_ogre:" => "1f479",
|
164
|
+
":japanese_goblin:" => "1f47a",
|
165
|
+
":see_no_evil:" => "1f648",
|
166
|
+
":hear_no_evil:" => "1f649",
|
167
|
+
":speak_no_evil:" => "1f64a",
|
168
|
+
":guardsman:" => "1f482",
|
169
|
+
":skull:" => "1f480",
|
170
|
+
":feet:" => "1f463",
|
171
|
+
":lips:" => "1f444",
|
172
|
+
":kiss:" => "1f48b",
|
173
|
+
":droplet:" => "1f4a7",
|
174
|
+
":ear:" => "1f442",
|
175
|
+
":eyes:" => "1f440",
|
176
|
+
":nose:" => "1f443",
|
177
|
+
":tongue:" => "1f445",
|
178
|
+
":love_letter:" => "1f48c",
|
179
|
+
":bust_in_silhouette:" => "1f464",
|
180
|
+
":busts_in_silhouette:" => "1f465",
|
181
|
+
":speech_balloon:" => "1f4ac",
|
182
|
+
":thought_balloon:" => "1f4ad",
|
183
|
+
":sunny:" => "2600",
|
184
|
+
":umbrella:" => "2614",
|
185
|
+
":cloud:" => "2601",
|
186
|
+
":snowflake:" => "2744",
|
187
|
+
":snowman:" => "26c4",
|
188
|
+
":zap:" => "26a1",
|
189
|
+
":cyclone:" => "1f300",
|
190
|
+
":foggy:" => "1f301",
|
191
|
+
":ocean:" => "1f30a",
|
192
|
+
":cat:" => "1f431",
|
193
|
+
":dog:" => "1f436",
|
194
|
+
":mouse:" => "1f42d",
|
195
|
+
":hamster:" => "1f439",
|
196
|
+
":rabbit:" => "1f430",
|
197
|
+
":wolf:" => "1f43a",
|
198
|
+
":frog:" => "1f438",
|
199
|
+
":tiger:" => "1f42f",
|
200
|
+
":koala:" => "1f428",
|
201
|
+
":bear:" => "1f43b",
|
202
|
+
":pig:" => "1f437",
|
203
|
+
":pig_nose:" => "1f43d",
|
204
|
+
":cow:" => "1f42e",
|
205
|
+
":boar:" => "1f417",
|
206
|
+
":monkey_face:" => "1f435",
|
207
|
+
":monkey:" => "1f412",
|
208
|
+
":horse:" => "1f434",
|
209
|
+
":racehorse:" => "1f40e",
|
210
|
+
":camel:" => "1f42b",
|
211
|
+
":sheep:" => "1f411",
|
212
|
+
":elephant:" => "1f418",
|
213
|
+
":panda_face:" => "1f43c",
|
214
|
+
":snake:" => "1f40d",
|
215
|
+
":bird:" => "1f426",
|
216
|
+
":baby_chick:" => "1f424",
|
217
|
+
":hatched_chick:" => "1f425",
|
218
|
+
":hatching_chick:" => "1f423",
|
219
|
+
":chicken:" => "1f414",
|
220
|
+
":penguin:" => "1f427",
|
221
|
+
":turtle:" => "1f422",
|
222
|
+
":bug:" => "1f41b",
|
223
|
+
":honeybee:" => "1f41d",
|
224
|
+
":ant:" => "1f41c",
|
225
|
+
":beetle:" => "1f41e",
|
226
|
+
":snail:" => "1f40c",
|
227
|
+
":octopus:" => "1f419",
|
228
|
+
":tropical_fish:" => "1f420",
|
229
|
+
":fish:" => "1f41f",
|
230
|
+
":whale:" => "1f433",
|
231
|
+
":whale2:" => "1f40b",
|
232
|
+
":dolphin:" => "1f42c",
|
233
|
+
":cow2:" => "1f404",
|
234
|
+
":ram:" => "1f40f",
|
235
|
+
":rat:" => "1f400",
|
236
|
+
":water_buffalo:" => "1f403",
|
237
|
+
":tiger2:" => "1f405",
|
238
|
+
":rabbit2:" => "1f407",
|
239
|
+
":dragon:" => "1f409",
|
240
|
+
":goat:" => "1f410",
|
241
|
+
":rooster:" => "1f413",
|
242
|
+
":dog2:" => "1f415",
|
243
|
+
":pig2:" => "1f416",
|
244
|
+
":mouse2:" => "1f401",
|
245
|
+
":ox:" => "1f402",
|
246
|
+
":dragon_face:" => "1f432",
|
247
|
+
":blowfish:" => "1f421",
|
248
|
+
":crocodile:" => "1f40a",
|
249
|
+
":dromedary_camel:" => "1f42a",
|
250
|
+
":leopard:" => "1f406",
|
251
|
+
":cat2:" => "1f408",
|
252
|
+
":poodle:" => "1f429",
|
253
|
+
":paw_prints:" => "1f43e",
|
254
|
+
":bouquet:" => "1f490",
|
255
|
+
":cherry_blossom:" => "1f338",
|
256
|
+
":tulip:" => "1f337",
|
257
|
+
":four_leaf_clover:" => "1f340",
|
258
|
+
":rose:" => "1f339",
|
259
|
+
":sunflower:" => "1f33b",
|
260
|
+
":hibiscus:" => "1f33a",
|
261
|
+
":maple_leaf:" => "1f341",
|
262
|
+
":leaves:" => "1f343",
|
263
|
+
":fallen_leaf:" => "1f342",
|
264
|
+
":herb:" => "1f33f",
|
265
|
+
":mushroom:" => "1f344",
|
266
|
+
":cactus:" => "1f335",
|
267
|
+
":palm_tree:" => "1f334",
|
268
|
+
":evergreen_tree:" => "1f332",
|
269
|
+
":deciduous_tree:" => "1f333",
|
270
|
+
":chestnut:" => "1f330",
|
271
|
+
":seedling:" => "1f331",
|
272
|
+
":blossom:" => "1f33c",
|
273
|
+
":ear_of_rice:" => "1f33e",
|
274
|
+
":shell:" => "1f41a",
|
275
|
+
":globe_with_meridians:" => "1f310",
|
276
|
+
":sun_with_face:" => "1f31e",
|
277
|
+
":full_moon_with_face:" => "1f31d",
|
278
|
+
":new_moon_with_face:" => "1f31a",
|
279
|
+
":new_moon:" => "1f311",
|
280
|
+
":waxing_crescent_moon:" => "1f312",
|
281
|
+
":first_quarter_moon:" => "1f313",
|
282
|
+
":waxing_gibbous_moon:" => "1f314",
|
283
|
+
":full_moon:" => "1f315",
|
284
|
+
":waning_gibbous_moon:" => "1f316",
|
285
|
+
":last_quarter_moon:" => "1f317",
|
286
|
+
":waning_crescent_moon:" => "1f318",
|
287
|
+
":last_quarter_moon_with_face:" => "1f31c",
|
288
|
+
":first_quarter_moon_with_face:" => "1f31b",
|
289
|
+
":moon:" => "1f319",
|
290
|
+
":earth_africa:" => "1f30d",
|
291
|
+
":earth_americas:" => "1f30e",
|
292
|
+
":earth_asia:" => "1f30f",
|
293
|
+
":volcano:" => "1f30b",
|
294
|
+
":milky_way:" => "1f30c",
|
295
|
+
":partly_sunny:" => "26c5",
|
296
|
+
":bamboo:" => "1f38d",
|
297
|
+
":gift_heart:" => "1f49d",
|
298
|
+
":dolls:" => "1f38e",
|
299
|
+
":school_satchel:" => "1f392",
|
300
|
+
":mortar_board:" => "1f393",
|
301
|
+
":flags:" => "1f38f",
|
302
|
+
":fireworks:" => "1f386",
|
303
|
+
":sparkler:" => "1f387",
|
304
|
+
":wind_chime:" => "1f390",
|
305
|
+
":rice_scene:" => "1f391",
|
306
|
+
":jack_o_lantern:" => "1f383",
|
307
|
+
":ghost:" => "1f47b",
|
308
|
+
":santa:" => "1f385",
|
309
|
+
":8ball:" => "1f3b1",
|
310
|
+
":alarm_clock:" => "23f0",
|
311
|
+
":apple:" => "1f34e",
|
312
|
+
":art:" => "1f3a8",
|
313
|
+
":baby_bottle:" => "1f37c",
|
314
|
+
":balloon:" => "1f388",
|
315
|
+
":banana:" => "1f34c",
|
316
|
+
":bar_chart:" => "1f4ca",
|
317
|
+
":baseball:" => "26be",
|
318
|
+
":basketball:" => "1f3c0",
|
319
|
+
":bath:" => "1f6c0",
|
320
|
+
":bathtub:" => "1f6c1",
|
321
|
+
":battery:" => "1f50b",
|
322
|
+
":beer:" => "1f37a",
|
323
|
+
":beers:" => "1f37b",
|
324
|
+
":bell:" => "1f514",
|
325
|
+
":bento:" => "1f371",
|
326
|
+
":bicyclist:" => "1f6b4",
|
327
|
+
":bikini:" => "1f459",
|
328
|
+
":birthday:" => "1f382",
|
329
|
+
":black_joker:" => "1f0cf",
|
330
|
+
":black_nib:" => "2712",
|
331
|
+
":blue_book:" => "1f4d8",
|
332
|
+
":bomb:" => "1f4a3",
|
333
|
+
":bookmark:" => "1f516",
|
334
|
+
":bookmark_tabs:" => "1f4d1",
|
335
|
+
":books:" => "1f4da",
|
336
|
+
":boot:" => "1f462",
|
337
|
+
":bowling:" => "1f3b3",
|
338
|
+
":bread:" => "1f35e",
|
339
|
+
":briefcase:" => "1f4bc",
|
340
|
+
":bulb:" => "1f4a1",
|
341
|
+
":cake:" => "1f370",
|
342
|
+
":calendar:" => "1f4c6",
|
343
|
+
":calling:" => "1f4f2",
|
344
|
+
":camera:" => "1f4f7",
|
345
|
+
":candy:" => "1f36c",
|
346
|
+
":card_index:" => "1f4c7",
|
347
|
+
":cd:" => "1f4bf",
|
348
|
+
":chart_with_downwards_trend:" => "1f4c9",
|
349
|
+
":chart_with_upwards_trend:" => "1f4c8",
|
350
|
+
":cherries:" => "1f352",
|
351
|
+
":chocolate_bar:" => "1f36b",
|
352
|
+
":christmas_tree:" => "1f384",
|
353
|
+
":clapper:" => "1f3ac",
|
354
|
+
":clipboard:" => "1f4cb",
|
355
|
+
":closed_book:" => "1f4d5",
|
356
|
+
":closed_lock_with_key:" => "1f510",
|
357
|
+
":closed_umbrella:" => "1f302",
|
358
|
+
":clubs:" => "2663",
|
359
|
+
":cocktail:" => "1f378",
|
360
|
+
":coffee:" => "2615",
|
361
|
+
":computer:" => "1f4bb",
|
362
|
+
":confetti_ball:" => "1f38a",
|
363
|
+
":cookie:" => "1f36a",
|
364
|
+
":corn:" => "1f33d",
|
365
|
+
":credit_card:" => "1f4b3",
|
366
|
+
":crown:" => "1f451",
|
367
|
+
":crystal_ball:" => "1f52e",
|
368
|
+
":curry:" => "1f35b",
|
369
|
+
":custard:" => "1f36e",
|
370
|
+
":dango:" => "1f361",
|
371
|
+
":dart:" => "1f3af",
|
372
|
+
":date:" => "1f4c5",
|
373
|
+
":diamonds:" => "2666",
|
374
|
+
":dollar:" => "1f4b5",
|
375
|
+
":door:" => "1f6aa",
|
376
|
+
":doughnut:" => "1f369",
|
377
|
+
":dress:" => "1f457",
|
378
|
+
":dvd:" => "1f4c0",
|
379
|
+
":e_mail:" => "1f4e7",
|
380
|
+
":egg:" => "1f373",
|
381
|
+
":eggplant:" => "1f346",
|
382
|
+
":electric_plug:" => "1f50c",
|
383
|
+
":email:" => "2709",
|
384
|
+
":euro:" => "1f4b6",
|
385
|
+
":eyeglasses:" => "1f453",
|
386
|
+
":fax:" => "1f4e0",
|
387
|
+
":file_folder:" => "1f4c1",
|
388
|
+
":fish_cake:" => "1f365",
|
389
|
+
":fishing_pole_and_fish:" => "1f3a3",
|
390
|
+
":flashlight:" => "1f526",
|
391
|
+
":floppy_disk:" => "1f4be",
|
392
|
+
":flower_playing_cards:" => "1f3b4",
|
393
|
+
":football:" => "1f3c8",
|
394
|
+
":fork_and_knife:" => "1f374",
|
395
|
+
":fried_shrimp:" => "1f364",
|
396
|
+
":fries:" => "1f35f",
|
397
|
+
":game_die:" => "1f3b2",
|
398
|
+
":gem:" => "1f48e",
|
399
|
+
":gift:" => "1f381",
|
400
|
+
":golf:" => "26f3",
|
401
|
+
":grapes:" => "1f347",
|
402
|
+
":green_apple:" => "1f34f",
|
403
|
+
":green_book:" => "1f4d7",
|
404
|
+
":guitar:" => "1f3b8",
|
405
|
+
":gun:" => "1f52b",
|
406
|
+
":hamburger:" => "1f354",
|
407
|
+
":hammer:" => "1f528",
|
408
|
+
":handbag:" => "1f45c",
|
409
|
+
":headphones:" => "1f3a7",
|
410
|
+
":hearts:" => "2665",
|
411
|
+
":high_brightness:" => "1f506",
|
412
|
+
":high_heel:" => "1f460",
|
413
|
+
":hocho:" => "1f52a",
|
414
|
+
":honey_pot:" => "1f36f",
|
415
|
+
":horse_racing:" => "1f3c7",
|
416
|
+
":hourglass:" => "231b",
|
417
|
+
":hourglass_flowing_sand:" => "23f3",
|
418
|
+
":ice_cream:" => "1f368",
|
419
|
+
":icecream:" => "1f366",
|
420
|
+
":inbox_tray:" => "1f4e5",
|
421
|
+
":incoming_envelope:" => "1f4e8",
|
422
|
+
":iphone:" => "1f4f1",
|
423
|
+
":jeans:" => "1f456",
|
424
|
+
":key:" => "1f511",
|
425
|
+
":kimono:" => "1f458",
|
426
|
+
":ledger:" => "1f4d2",
|
427
|
+
":lemon:" => "1f34b",
|
428
|
+
":lipstick:" => "1f484",
|
429
|
+
":lock:" => "1f512",
|
430
|
+
":lock_with_ink_pen:" => "1f50f",
|
431
|
+
":lollipop:" => "1f36d",
|
432
|
+
":loop:" => "27bf",
|
433
|
+
":loudspeaker:" => "1f4e2",
|
434
|
+
":low_brightness:" => "1f505",
|
435
|
+
":mag:" => "1f50d",
|
436
|
+
":mag_right:" => "1f50e",
|
437
|
+
":mahjong:" => "1f004",
|
438
|
+
":mailbox:" => "1f4eb",
|
439
|
+
":mailbox_closed:" => "1f4ea",
|
440
|
+
":mailbox_with_mail:" => "1f4ec",
|
441
|
+
":mailbox_with_no_mail:" => "1f4ed",
|
442
|
+
":mans_shoe:" => "1f45e",
|
443
|
+
":meat_on_bone:" => "1f356",
|
444
|
+
":mega:" => "1f4e3",
|
445
|
+
":melon:" => "1f348",
|
446
|
+
":memo:" => "1f4dd",
|
447
|
+
":microphone:" => "1f3a4",
|
448
|
+
":microscope:" => "1f52c",
|
449
|
+
":minidisc:" => "1f4bd",
|
450
|
+
":money_with_wings:" => "1f4b8",
|
451
|
+
":moneybag:" => "1f4b0",
|
452
|
+
":mountain_bicyclist:" => "1f6b5",
|
453
|
+
":movie_camera:" => "1f3a5",
|
454
|
+
":musical_keyboard:" => "1f3b9",
|
455
|
+
":musical_score:" => "1f3bc",
|
456
|
+
":mute:" => "1f507",
|
457
|
+
":name_badge:" => "1f4db",
|
458
|
+
":necktie:" => "1f454",
|
459
|
+
":newspaper:" => "1f4f0",
|
460
|
+
":no_bell:" => "1f515",
|
461
|
+
":notebook:" => "1f4d3",
|
462
|
+
":notebook_with_decorative_cover:" => "1f4d4",
|
463
|
+
":nut_and_bolt:" => "1f529",
|
464
|
+
":oden:" => "1f362",
|
465
|
+
":open_file_folder:" => "1f4c2",
|
466
|
+
":orange_book:" => "1f4d9",
|
467
|
+
":outbox_tray:" => "1f4e4",
|
468
|
+
":page_facing_up:" => "1f4c4",
|
469
|
+
":page_with_curl:" => "1f4c3",
|
470
|
+
":pager:" => "1f4df",
|
471
|
+
":paperclip:" => "1f4ce",
|
472
|
+
":peach:" => "1f351",
|
473
|
+
":pear:" => "1f350",
|
474
|
+
":pencil2:" => "270f",
|
475
|
+
":phone:" => "260e",
|
476
|
+
":pill:" => "1f48a",
|
477
|
+
":pineapple:" => "1f34d",
|
478
|
+
":pizza:" => "1f355",
|
479
|
+
":postal_horn:" => "1f4ef",
|
480
|
+
":postbox:" => "1f4ee",
|
481
|
+
":pouch:" => "1f45d",
|
482
|
+
":poultry_leg:" => "1f357",
|
483
|
+
":pound:" => "1f4b7",
|
484
|
+
":purse:" => "1f45b",
|
485
|
+
":pushpin:" => "1f4cc",
|
486
|
+
":radio:" => "1f4fb",
|
487
|
+
":ramen:" => "1f35c",
|
488
|
+
":ribbon:" => "1f380",
|
489
|
+
":rice:" => "1f35a",
|
490
|
+
":rice_ball:" => "1f359",
|
491
|
+
":rice_cracker:" => "1f358",
|
492
|
+
":ring:" => "1f48d",
|
493
|
+
":rugby_football:" => "1f3c9",
|
494
|
+
":running_shirt_with_sash:" => "1f3bd",
|
495
|
+
":sake:" => "1f376",
|
496
|
+
":sandal:" => "1f461",
|
497
|
+
":satellite:" => "1f4e1",
|
498
|
+
":saxophone:" => "1f3b7",
|
499
|
+
":scissors:" => "2702",
|
500
|
+
":scroll:" => "1f4dc",
|
501
|
+
":seat:" => "1f4ba",
|
502
|
+
":shaved_ice:" => "1f367",
|
503
|
+
":shirt:" => "1f455",
|
504
|
+
":shower:" => "1f6bf",
|
505
|
+
":ski:" => "1f3bf",
|
506
|
+
":smoking:" => "1f6ac",
|
507
|
+
":snowboarder:" => "1f3c2",
|
508
|
+
":soccer:" => "26bd",
|
509
|
+
":sound:" => "1f509",
|
510
|
+
":space_invader:" => "1f47e",
|
511
|
+
":spades:" => "2660",
|
512
|
+
":spaghetti:" => "1f35d",
|
513
|
+
":speaker:" => "1f50a",
|
514
|
+
":stew:" => "1f372",
|
515
|
+
":straight_ruler:" => "1f4cf",
|
516
|
+
":strawberry:" => "1f353",
|
517
|
+
":surfer:" => "1f3c4",
|
518
|
+
":sushi:" => "1f363",
|
519
|
+
":sweet_potato:" => "1f360",
|
520
|
+
":swimmer:" => "1f3ca",
|
521
|
+
":syringe:" => "1f489",
|
522
|
+
":tada:" => "1f389",
|
523
|
+
":tanabata_tree:" => "1f38b",
|
524
|
+
":tangerine:" => "1f34a",
|
525
|
+
":tea:" => "1f375",
|
526
|
+
":telephone_receiver:" => "1f4de",
|
527
|
+
":telescope:" => "1f52d",
|
528
|
+
":tennis:" => "1f3be",
|
529
|
+
":toilet:" => "1f6bd",
|
530
|
+
":tomato:" => "1f345",
|
531
|
+
":tophat:" => "1f3a9",
|
532
|
+
":triangular_ruler:" => "1f4d0",
|
533
|
+
":trophy:" => "1f3c6",
|
534
|
+
":tropical_drink:" => "1f379",
|
535
|
+
":trumpet:" => "1f3ba",
|
536
|
+
":tv:" => "1f4fa",
|
537
|
+
":unlock:" => "1f513",
|
538
|
+
":vhs:" => "1f4fc",
|
539
|
+
":video_camera:" => "1f4f9",
|
540
|
+
":video_game:" => "1f3ae",
|
541
|
+
":violin:" => "1f3bb",
|
542
|
+
":watch:" => "231a",
|
543
|
+
":watermelon:" => "1f349",
|
544
|
+
":wine_glass:" => "1f377",
|
545
|
+
":womans_clothes:" => "1f45a",
|
546
|
+
":womans_hat:" => "1f452",
|
547
|
+
":wrench:" => "1f527",
|
548
|
+
":yen:" => "1f4b4",
|
549
|
+
":aerial_tramway:" => "1f6a1",
|
550
|
+
":airplane:" => "2708",
|
551
|
+
":ambulance:" => "1f691",
|
552
|
+
":anchor:" => "2693",
|
553
|
+
":articulated_lorry:" => "1f69b",
|
554
|
+
":atm:" => "1f3e7",
|
555
|
+
":bank:" => "1f3e6",
|
556
|
+
":barber:" => "1f488",
|
557
|
+
":beginner:" => "1f530",
|
558
|
+
":bike:" => "1f6b2",
|
559
|
+
":blue_car:" => "1f699",
|
560
|
+
":boat:" => "26f5",
|
561
|
+
":bridge_at_night:" => "1f309",
|
562
|
+
":bullettrain_front:" => "1f685",
|
563
|
+
":bullettrain_side:" => "1f684",
|
564
|
+
":bus:" => "1f68c",
|
565
|
+
":busstop:" => "1f68f",
|
566
|
+
":car:" => "1f697",
|
567
|
+
":carousel_horse:" => "1f3a0",
|
568
|
+
":checkered_flag:" => "1f3c1",
|
569
|
+
":church:" => "26ea",
|
570
|
+
":circus_tent:" => "1f3aa",
|
571
|
+
":city_sunrise:" => "1f307",
|
572
|
+
":city_sunset:" => "1f306",
|
573
|
+
":construction:" => "1f6a7",
|
574
|
+
":convenience_store:" => "1f3ea",
|
575
|
+
":crossed_flags:" => "1f38c",
|
576
|
+
":department_store:" => "1f3ec",
|
577
|
+
":european_castle:" => "1f3f0",
|
578
|
+
":european_post_office:" => "1f3e4",
|
579
|
+
":factory:" => "1f3ed",
|
580
|
+
":ferris_wheel:" => "1f3a1",
|
581
|
+
":fire_engine:" => "1f692",
|
582
|
+
":fountain:" => "26f2",
|
583
|
+
":fuelpump:" => "26fd",
|
584
|
+
":helicopter:" => "1f681",
|
585
|
+
":hospital:" => "1f3e5",
|
586
|
+
":hotel:" => "1f3e8",
|
587
|
+
":hotsprings:" => "2668",
|
588
|
+
":house:" => "1f3e0",
|
589
|
+
":house_with_garden:" => "1f3e1",
|
590
|
+
":japan:" => "1f5fe",
|
591
|
+
":japanese_castle:" => "1f3ef",
|
592
|
+
":light_rail:" => "1f688",
|
593
|
+
":love_hotel:" => "1f3e9",
|
594
|
+
":minibus:" => "1f690",
|
595
|
+
":monorail:" => "1f69d",
|
596
|
+
":mount_fuji:" => "1f5fb",
|
597
|
+
":mountain_cableway:" => "1f6a0",
|
598
|
+
":mountain_railway:" => "1f69e",
|
599
|
+
":moyai:" => "1f5ff",
|
600
|
+
":office:" => "1f3e2",
|
601
|
+
":oncoming_automobile:" => "1f698",
|
602
|
+
":oncoming_bus:" => "1f68d",
|
603
|
+
":oncoming_police_car:" => "1f694",
|
604
|
+
":oncoming_taxi:" => "1f696",
|
605
|
+
":performing_arts:" => "1f3ad",
|
606
|
+
":police_car:" => "1f693",
|
607
|
+
":post_office:" => "1f3e3",
|
608
|
+
":railway_car:" => "1f683",
|
609
|
+
":rainbow:" => "1f308",
|
610
|
+
":rocket:" => "1f680",
|
611
|
+
":roller_coaster:" => "1f3a2",
|
612
|
+
":rotating_light:" => "1f6a8",
|
613
|
+
":round_pushpin:" => "1f4cd",
|
614
|
+
":rowboat:" => "1f6a3",
|
615
|
+
":school:" => "1f3eb",
|
616
|
+
":ship:" => "1f6a2",
|
617
|
+
":slot_machine:" => "1f3b0",
|
618
|
+
":speedboat:" => "1f6a4",
|
619
|
+
":stars:" => "1f303",
|
620
|
+
":station:" => "1f689",
|
621
|
+
":statue_of_liberty:" => "1f5fd",
|
622
|
+
":steam_locomotive:" => "1f682",
|
623
|
+
":sunrise:" => "1f305",
|
624
|
+
":sunrise_over_mountains:" => "1f304",
|
625
|
+
":suspension_railway:" => "1f69f",
|
626
|
+
":taxi:" => "1f695",
|
627
|
+
":tent:" => "26fa",
|
628
|
+
":ticket:" => "1f3ab",
|
629
|
+
":tokyo_tower:" => "1f5fc",
|
630
|
+
":tractor:" => "1f69c",
|
631
|
+
":traffic_light:" => "1f6a5",
|
632
|
+
":train2:" => "1f686",
|
633
|
+
":tram:" => "1f68a",
|
634
|
+
":triangular_flag_on_post:" => "1f6a9",
|
635
|
+
":trolleybus:" => "1f68e",
|
636
|
+
":truck:" => "1f69a",
|
637
|
+
":vertical_traffic_light:" => "1f6a6",
|
638
|
+
":warning:" => "26a0",
|
639
|
+
":wedding:" => "1f492",
|
640
|
+
":jp:" => "1f1ef-1f1f5",
|
641
|
+
":kr:" => "1f1f0-1f1f7",
|
642
|
+
":cn:" => "1f1e8-1f1f3",
|
643
|
+
":us:" => "1f1fa-1f1f8",
|
644
|
+
":fr:" => "1f1eb-1f1f7",
|
645
|
+
":es:" => "1f1ea-1f1f8",
|
646
|
+
":it:" => "1f1ee-1f1f9",
|
647
|
+
":ru:" => "1f1f7-1f1fa",
|
648
|
+
":gb:" => "1f1ec-1f1e7",
|
649
|
+
":de:" => "1f1e9-1f1ea",
|
650
|
+
":100:" => "1f4af",
|
651
|
+
":1234:" => "1f522",
|
652
|
+
":a:" => "1f170",
|
653
|
+
":ab:" => "1f18e",
|
654
|
+
":abc:" => "1f524",
|
655
|
+
":abcd:" => "1f521",
|
656
|
+
":accept:" => "1f251",
|
657
|
+
":aquarius:" => "2652",
|
658
|
+
":aries:" => "2648",
|
659
|
+
":arrow_backward:" => "25c0",
|
660
|
+
":arrow_double_down:" => "23ec",
|
661
|
+
":arrow_double_up:" => "23eb",
|
662
|
+
":arrow_down:" => "2b07",
|
663
|
+
":arrow_down_small:" => "1f53d",
|
664
|
+
":arrow_forward:" => "25b6",
|
665
|
+
":arrow_heading_down:" => "2935",
|
666
|
+
":arrow_heading_up:" => "2934",
|
667
|
+
":arrow_left:" => "2b05",
|
668
|
+
":arrow_lower_left:" => "2199",
|
669
|
+
":arrow_lower_right:" => "2198",
|
670
|
+
":arrow_right:" => "27a1",
|
671
|
+
":arrow_right_hook:" => "21aa",
|
672
|
+
":arrow_up:" => "2b06",
|
673
|
+
":arrow_up_down:" => "2195",
|
674
|
+
":arrow_up_small:" => "1f53c",
|
675
|
+
":arrow_upper_left:" => "2196",
|
676
|
+
":arrow_upper_right:" => "2197",
|
677
|
+
":arrows_clockwise:" => "1f503",
|
678
|
+
":arrows_counterclockwise:" => "1f504",
|
679
|
+
":b:" => "1f171",
|
680
|
+
":baby_symbol:" => "1f6bc",
|
681
|
+
":baggage_claim:" => "1f6c4",
|
682
|
+
":ballot_box_with_check:" => "2611",
|
683
|
+
":bangbang:" => "203c",
|
684
|
+
":black_circle:" => "26ab",
|
685
|
+
":black_square_button:" => "1f532",
|
686
|
+
":cancer:" => "264b",
|
687
|
+
":capital_abcd:" => "1f520",
|
688
|
+
":capricorn:" => "2651",
|
689
|
+
":chart:" => "1f4b9",
|
690
|
+
":children_crossing:" => "1f6b8",
|
691
|
+
":cinema:" => "1f3a6",
|
692
|
+
":cl:" => "1f191",
|
693
|
+
":clock1:" => "1f550",
|
694
|
+
":clock10:" => "1f559",
|
695
|
+
":clock1030:" => "1f565",
|
696
|
+
":clock11:" => "1f55a",
|
697
|
+
":clock1130:" => "1f566",
|
698
|
+
":clock12:" => "1f55b",
|
699
|
+
":clock1230:" => "1f567",
|
700
|
+
":clock130:" => "1f55c",
|
701
|
+
":clock2:" => "1f551",
|
702
|
+
":clock230:" => "1f55d",
|
703
|
+
":clock3:" => "1f552",
|
704
|
+
":clock330:" => "1f55e",
|
705
|
+
":clock4:" => "1f553",
|
706
|
+
":clock430:" => "1f55f",
|
707
|
+
":clock5:" => "1f554",
|
708
|
+
":clock530:" => "1f560",
|
709
|
+
":clock6:" => "1f555",
|
710
|
+
":clock630:" => "1f561",
|
711
|
+
":clock7:" => "1f556",
|
712
|
+
":clock730:" => "1f562",
|
713
|
+
":clock8:" => "1f557",
|
714
|
+
":clock830:" => "1f563",
|
715
|
+
":clock9:" => "1f558",
|
716
|
+
":clock930:" => "1f564",
|
717
|
+
":congratulations:" => "3297",
|
718
|
+
":cool:" => "1f192",
|
719
|
+
":copyright:" => "a9",
|
720
|
+
":curly_loop:" => "27b0",
|
721
|
+
":currency_exchange:" => "1f4b1",
|
722
|
+
":customs:" => "1f6c3",
|
723
|
+
":diamond_shape_with_a_dot_inside:" => "1f4a0",
|
724
|
+
":do_not_litter:" => "1f6af",
|
725
|
+
":eight:" => "38-20e3",
|
726
|
+
":eight_pointed_black_star:" => "2734",
|
727
|
+
":eight_spoked_asterisk:" => "2733",
|
728
|
+
":end:" => "1f51a",
|
729
|
+
":fast_forward:" => "23e9",
|
730
|
+
":five:" => "35-20e3",
|
731
|
+
":four:" => "34-20e3",
|
732
|
+
":free:" => "1f193",
|
733
|
+
":gemini:" => "264a",
|
734
|
+
":hash:" => "23-20e3",
|
735
|
+
":heart_decoration:" => "1f49f",
|
736
|
+
":heavy_check_mark:" => "2714",
|
737
|
+
":heavy_division_sign:" => "2797",
|
738
|
+
":heavy_dollar_sign:" => "1f4b2",
|
739
|
+
":heavy_minus_sign:" => "2796",
|
740
|
+
":heavy_multiplication_x:" => "2716",
|
741
|
+
":heavy_plus_sign:" => "2795",
|
742
|
+
":id:" => "1f194",
|
743
|
+
":ideograph_advantage:" => "1f250",
|
744
|
+
":information_source:" => "2139",
|
745
|
+
":interrobang:" => "2049",
|
746
|
+
":keycap_ten:" => "1f51f",
|
747
|
+
":koko:" => "1f201",
|
748
|
+
":large_blue_circle:" => "1f535",
|
749
|
+
":large_blue_diamond:" => "1f537",
|
750
|
+
":large_orange_diamond:" => "1f536",
|
751
|
+
":left_luggage:" => "1f6c5",
|
752
|
+
":left_right_arrow:" => "2194",
|
753
|
+
":leftwards_arrow_with_hook:" => "21a9",
|
754
|
+
":leo:" => "264c",
|
755
|
+
":libra:" => "264e",
|
756
|
+
":link:" => "1f517",
|
757
|
+
":m:" => "24c2",
|
758
|
+
":mens:" => "1f6b9",
|
759
|
+
":metro:" => "1f687",
|
760
|
+
":mobile_phone_off:" => "1f4f4",
|
761
|
+
":negative_squared_cross_mark:" => "274e",
|
762
|
+
":new:" => "1f195",
|
763
|
+
":ng:" => "1f196",
|
764
|
+
":nine:" => "39-20e3",
|
765
|
+
":no_bicycles:" => "1f6b3",
|
766
|
+
":no_entry:" => "26d4",
|
767
|
+
":no_entry_sign:" => "1f6ab",
|
768
|
+
":no_mobile_phones:" => "1f4f5",
|
769
|
+
":no_pedestrians:" => "1f6b7",
|
770
|
+
":no_smoking:" => "1f6ad",
|
771
|
+
":non_potable_water:" => "1f6b1",
|
772
|
+
":o:" => "2b55",
|
773
|
+
":o2:" => "1f17e",
|
774
|
+
":ok:" => "1f197",
|
775
|
+
":on:" => "1f51b",
|
776
|
+
":one:" => "31-20e3",
|
777
|
+
":ophiuchus:" => "26ce",
|
778
|
+
":parking:" => "1f17f",
|
779
|
+
":part_alternation_mark:" => "303d",
|
780
|
+
":passport_control:" => "1f6c2",
|
781
|
+
":pisces:" => "2653",
|
782
|
+
":potable_water:" => "1f6b0",
|
783
|
+
":put_litter_in_its_place:" => "1f6ae",
|
784
|
+
":radio_button:" => "1f518",
|
785
|
+
":recycle:" => "267b",
|
786
|
+
":red_circle:" => "1f534",
|
787
|
+
":registered:" => "ae",
|
788
|
+
":repeat:" => "1f501",
|
789
|
+
":repeat_one:" => "1f502",
|
790
|
+
":restroom:" => "1f6bb",
|
791
|
+
":rewind:" => "23ea",
|
792
|
+
":sa:" => "1f202",
|
793
|
+
":sagittarius:" => "2650",
|
794
|
+
":scorpius:" => "264f",
|
795
|
+
":secret:" => "3299",
|
796
|
+
":seven:" => "37-20e3",
|
797
|
+
":signal_strength:" => "1f4f6",
|
798
|
+
":six:" => "36-20e3",
|
799
|
+
":six_pointed_star:" => "1f52f",
|
800
|
+
":small_blue_diamond:" => "1f539",
|
801
|
+
":small_orange_diamond:" => "1f538",
|
802
|
+
":small_red_triangle:" => "1f53a",
|
803
|
+
":small_red_triangle_down:" => "1f53b",
|
804
|
+
":soon:" => "1f51c",
|
805
|
+
":sos:" => "1f198",
|
806
|
+
":symbols:" => "1f523",
|
807
|
+
":taurus:" => "2649",
|
808
|
+
":three:" => "33-20e3",
|
809
|
+
":tm:" => "2122",
|
810
|
+
":top:" => "1f51d",
|
811
|
+
":trident:" => "1f531",
|
812
|
+
":twisted_rightwards_arrows:" => "1f500",
|
813
|
+
":two:" => "32-20e3",
|
814
|
+
":u5272:" => "1f239",
|
815
|
+
":u5408:" => "1f234",
|
816
|
+
":u55b6:" => "1f23a",
|
817
|
+
":u6307:" => "1f22f",
|
818
|
+
":u6708:" => "1f237",
|
819
|
+
":u6709:" => "1f236",
|
820
|
+
":u6e80:" => "1f235",
|
821
|
+
":u7121:" => "1f21a",
|
822
|
+
":u7533:" => "1f238",
|
823
|
+
":u7981:" => "1f232",
|
824
|
+
":u7a7a:" => "1f233",
|
825
|
+
":underage:" => "1f51e",
|
826
|
+
":up:" => "1f199",
|
827
|
+
":vibration_mode:" => "1f4f3",
|
828
|
+
":virgo:" => "264d",
|
829
|
+
":vs:" => "1f19a",
|
830
|
+
":wavy_dash:" => "3030",
|
831
|
+
":wc:" => "1f6be",
|
832
|
+
":wheelchair:" => "267f",
|
833
|
+
":white_check_mark:" => "2705",
|
834
|
+
":white_circle:" => "26aa",
|
835
|
+
":white_flower:" => "1f4ae",
|
836
|
+
":white_square_button:" => "1f533",
|
837
|
+
":womens:" => "1f6ba",
|
838
|
+
":x:" => "274c",
|
839
|
+
":zero:" => "30-20e3"
|
840
|
+
}.each { | k, v| k.freeze; v.freeze }.freeze
|
841
|
+
|
842
|
+
# Hex to string map
|
843
|
+
#
|
844
|
+
# This hash is frozen.
|
845
|
+
#
|
846
|
+
# @example Usage
|
847
|
+
#
|
848
|
+
# ICODES["1f60d"] # => ":heart_eyes:"
|
849
|
+
# ICODES["1f4d4"] # => ":notebook_with_decorative_cover:"
|
850
|
+
#
|
851
|
+
# @return [Hash<String => String>]
|
852
|
+
ICODES = CODES.invert.freeze
|
853
|
+
end
|