rumoji 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,201 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'rumoji/emoji'
4
+ require 'set'
5
+
6
+ module Rumoji
7
+ class Emoji
8
+ SYMBOLS = Set[
9
+ self.new("\u{1f4af}", [:"100"]),
10
+ self.new("\u{1f522}", [:"1234"]),
11
+ self.new("\u{1f170}", [:a]),
12
+ self.new("\u{1f18e}", [:ab]),
13
+ self.new("\u{1f524}", [:abc]),
14
+ self.new("\u{1f521}", [:abcd]),
15
+ self.new("\u{1f251}", [:accept]),
16
+ self.new("\u{2652}" , [:aquarius]),
17
+ self.new("\u{2648}" , [:aries]),
18
+ self.new("\u{25c0}" , [:arrow_backward]),
19
+ self.new("\u{23ec}" , [:arrow_double_down]),
20
+ self.new("\u{23eb}" , [:arrow_double_up]),
21
+ self.new("\u{2b07}" , [:arrow_down]),
22
+ self.new("\u{1f53d}", [:arrow_down_small]),
23
+ self.new("\u{25b6}" , [:arrow_forward]),
24
+ self.new("\u{2935}" , [:arrow_heading_down]),
25
+ self.new("\u{2934}" , [:arrow_heading_up]),
26
+ self.new("\u{2b05}" , [:arrow_left]),
27
+ self.new("\u{2199}" , [:arrow_lower_left]),
28
+ self.new("\u{2198}" , [:arrow_lower_right]),
29
+ self.new("\u{27a1}" , [:arrow_right]),
30
+ self.new("\u{21aa}" , [:arrow_right_hook]),
31
+ self.new("\u{2b06}" , [:arrow_up]),
32
+ self.new("\u{2195}" , [:arrow_up_down]),
33
+ self.new("\u{1f53c}", [:arrow_up_small]),
34
+ self.new("\u{2196}" , [:arrow_upper_left]),
35
+ self.new("\u{2197}" , [:arrow_upper_right]),
36
+ self.new("\u{1f503}", [:arrows_clockwise]),
37
+ self.new("\u{1f504}", [:arrows_counterclockwise]),
38
+ self.new("\u{1f171}", [:b]),
39
+ self.new("\u{1f6bc}", [:baby_symbol]),
40
+ self.new("\u{1f6c4}", [:baggage_claim]),
41
+ self.new("\u{2611}" , [:ballot_box_with_check]),
42
+ self.new("\u{203c}" , [:bangbang]),
43
+ self.new("\u{26ab}" , [:black_circle]),
44
+ self.new("\u{1f532}", [:black_square_button]),
45
+ self.new("\u{264b}" , [:cancer]),
46
+ self.new("\u{1f520}", [:capital_abcd]),
47
+ self.new("\u{2651}" , [:capricorn]),
48
+ self.new("\u{1f4b9}", [:chart]),
49
+ self.new("\u{1f6b8}", [:children_crossing]),
50
+ self.new("\u{1f3a6}", [:cinema]),
51
+ self.new("\u{1f191}", [:cl]),
52
+ self.new("\u{1f550}", [:clock1]),
53
+ self.new("\u{1f559}", [:clock10]),
54
+ self.new("\u{1f565}", [:clock1030]),
55
+ self.new("\u{1f55a}", [:clock11]),
56
+ self.new("\u{1f566}", [:clock1130]),
57
+ self.new("\u{1f55b}", [:clock12]),
58
+ self.new("\u{1f567}", [:clock1230]),
59
+ self.new("\u{1f55c}", [:clock130]),
60
+ self.new("\u{1f551}", [:clock2]),
61
+ self.new("\u{1f55d}", [:clock230]),
62
+ self.new("\u{1f552}", [:clock3]),
63
+ self.new("\u{1f55e}", [:clock330]),
64
+ self.new("\u{1f553}", [:clock4]),
65
+ self.new("\u{1f55f}", [:clock430]),
66
+ self.new("\u{1f554}", [:clock5]),
67
+ self.new("\u{1f560}", [:clock530]),
68
+ self.new("\u{1f555}", [:clock6]),
69
+ self.new("\u{1f561}", [:clock630]),
70
+ self.new("\u{1f556}", [:clock7]),
71
+ self.new("\u{1f562}", [:clock730]),
72
+ self.new("\u{1f557}", [:clock8]),
73
+ self.new("\u{1f563}", [:clock830]),
74
+ self.new("\u{1f558}", [:clock9]),
75
+ self.new("\u{1f564}", [:clock930]),
76
+ self.new("\u{3297}" , [:congratulations]),
77
+ self.new("\u{1f192}", [:cool]),
78
+ self.new("\u{00a9}" , [:copyright]),
79
+ self.new("\u{27b0}" , [:curly_loop]),
80
+ self.new("\u{1f4b1}", [:currency_exchange]),
81
+ self.new("\u{1f6c3}", [:customs]),
82
+ self.new("\u{1f4a0}", [:diamond_shape_with_a_dot_inside]),
83
+ self.new("\u{1f6af}", [:do_not_litter]),
84
+ self.new("\u{0038}" , [:eight]),
85
+ self.new("\u{2734}" , [:eight_pointed_black_star]),
86
+ self.new("\u{2733}" , [:eight_spoked_asterisk]),
87
+ self.new("\u{1f51a}", [:end]),
88
+ self.new("\u{23e9}" , [:fast_forward]),
89
+ self.new("\u{0035}" , [:five]),
90
+ self.new("\u{0034}" , [:four]),
91
+ self.new("\u{1f193}", [:free]),
92
+ self.new("\u{264a}" , [:gemini]),
93
+ self.new("\u{0023}" , [:hash]),
94
+ self.new("\u{1f49f}", [:heart_decoration]),
95
+ self.new("\u{2714}" , [:heavy_check_mark]),
96
+ self.new("\u{2797}" , [:heavy_division_sign]),
97
+ self.new("\u{1f4b2}", [:heavy_dollar_sign]),
98
+ self.new("\u{2796}" , [:heavy_minus_sign]),
99
+ self.new("\u{2716}" , [:heavy_multiplication_x]),
100
+ self.new("\u{2795}" , [:heavy_plus_sign]),
101
+ self.new("\u{1f194}", [:id]),
102
+ self.new("\u{1f250}", [:ideograph_advantage]),
103
+ self.new("\u{2139}" , [:information_source]),
104
+ self.new("\u{2049}" , [:interrobang]),
105
+ self.new("\u{1f51f}", [:keycap_ten]),
106
+ self.new("\u{1f201}", [:koko]),
107
+ self.new("\u{1f535}", [:large_blue_circle]),
108
+ self.new("\u{1f537}", [:large_blue_diamond]),
109
+ self.new("\u{1f536}", [:large_orange_diamond]),
110
+ self.new("\u{1f6c5}", [:left_luggage]),
111
+ self.new("\u{2194}" , [:left_right_arrow]),
112
+ self.new("\u{21a9}" , [:leftwards_arrow_with_hook]),
113
+ self.new("\u{264c}" , [:leo]),
114
+ self.new("\u{264e}" , [:libra]),
115
+ self.new("\u{1f517}", [:link]),
116
+ self.new("\u{24c2}" , [:m]),
117
+ self.new("\u{1f6b9}", [:mens]),
118
+ self.new("\u{1f687}", [:metro]),
119
+ self.new("\u{1f4f4}", [:mobile_phone_off]),
120
+ self.new("\u{274e}" , [:negative_squared_cross_mark]),
121
+ self.new("\u{1f195}", [:new]),
122
+ self.new("\u{1f196}", [:ng]),
123
+ self.new("\u{0039}" , [:nine]),
124
+ self.new("\u{1f6b3}", [:no_bicycles]),
125
+ self.new("\u{26d4}" , [:no_entry]),
126
+ self.new("\u{1f6ab}", [:no_entry_sign]),
127
+ self.new("\u{1f4f5}", [:no_mobile_phones]),
128
+ self.new("\u{1f6b7}", [:no_pedestrians]),
129
+ self.new("\u{1f6ad}", [:no_smoking]),
130
+ self.new("\u{1f6b1}", [:"non-potable_water"]),
131
+ self.new("\u{2b55}" , [:o]),
132
+ self.new("\u{1f17e}", [:o2]),
133
+ self.new("\u{1f197}", [:ok]),
134
+ self.new("\u{1f51b}", [:on]),
135
+ self.new("\u{0031}" , [:one]),
136
+ self.new("\u{26ce}" , [:ophiuchus]),
137
+ self.new("\u{1f17f}", [:parking]),
138
+ self.new("\u{303d}" , [:part_alternation_mark]),
139
+ self.new("\u{1f6c2}", [:passport_control]),
140
+ self.new("\u{2653}" , [:pisces]),
141
+ self.new("\u{1f6b0}", [:potable_water]),
142
+ self.new("\u{1f6ae}", [:put_litter_in_its_place]),
143
+ self.new("\u{1f518}", [:radio_button]),
144
+ self.new("\u{267b}" , [:recycle]),
145
+ self.new("\u{1f534}", [:red_circle]),
146
+ self.new("\u{00ae}" , [:registered]),
147
+ self.new("\u{1f501}", [:repeat]),
148
+ self.new("\u{1f502}", [:repeat_one]),
149
+ self.new("\u{1f6bb}", [:restroom]),
150
+ self.new("\u{23ea}" , [:rewind]),
151
+ self.new("\u{1f202}", [:sa]),
152
+ self.new("\u{2650}" , [:sagittarius]),
153
+ self.new("\u{264f}" , [:scorpius]),
154
+ self.new("\u{3299}" , [:secret]),
155
+ self.new("\u{0037}" , [:seven]),
156
+ self.new("\u{1f4f6}", [:signal_strength]),
157
+ self.new("\u{0036}" , [:six]),
158
+ self.new("\u{1f52f}", [:six_pointed_star]),
159
+ self.new("\u{1f539}", [:small_blue_diamond]),
160
+ self.new("\u{1f538}", [:small_orange_diamond]),
161
+ self.new("\u{1f53a}", [:small_red_triangle]),
162
+ self.new("\u{1f53b}", [:small_red_triangle_down]),
163
+ self.new("\u{1f51c}", [:soon]),
164
+ self.new("\u{1f198}", [:sos]),
165
+ self.new("\u{1f523}", [:symbols]),
166
+ self.new("\u{2649}" , [:taurus]),
167
+ self.new("\u{0033}" , [:three]),
168
+ self.new("\u{2122}" , [:tm]),
169
+ self.new("\u{1f51d}", [:top]),
170
+ self.new("\u{1f531}", [:trident]),
171
+ self.new("\u{1f500}", [:twisted_rightwards_arrows]),
172
+ self.new("\u{0032}" , [:two]),
173
+ self.new("\u{1f239}", [:u5272]),
174
+ self.new("\u{1f234}", [:u5408]),
175
+ self.new("\u{1f23a}", [:u55b6]),
176
+ self.new("\u{1f22f}", [:u6307]),
177
+ self.new("\u{1f237}", [:u6708]),
178
+ self.new("\u{1f236}", [:u6709]),
179
+ self.new("\u{1f235}", [:u6e80]),
180
+ self.new("\u{1f21a}", [:u7121]),
181
+ self.new("\u{1f238}", [:u7533]),
182
+ self.new("\u{1f232}", [:u7981]),
183
+ self.new("\u{1f233}", [:u7a7a]),
184
+ self.new("\u{1f51e}", [:underage]),
185
+ self.new("\u{1f199}", [:up]),
186
+ self.new("\u{1f4f3}", [:vibration_mode]),
187
+ self.new("\u{264d}" , [:virgo]),
188
+ self.new("\u{1f19a}", [:vs]),
189
+ self.new("\u{3030}" , [:wavy_dash]),
190
+ self.new("\u{1f6be}", [:wc]),
191
+ self.new("\u{267f}" , [:wheelchair]),
192
+ self.new("\u{2705}" , [:white_check_mark]),
193
+ self.new("\u{26aa}" , [:white_circle]),
194
+ self.new("\u{1f4ae}", [:white_flower]),
195
+ self.new("\u{1f533}", [:white_square_button]),
196
+ self.new("\u{1f6ba}", [:womens]),
197
+ self.new("\u{274c}" , [:x]),
198
+ self.new("\u{0030}" , [:zero])
199
+ ]
200
+ end
201
+ end
@@ -1,3 +1,3 @@
1
1
  module Rumoji
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -0,0 +1,80 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'rumoji'
3
+ require 'minitest/spec'
4
+ require 'minitest/autorun'
5
+
6
+ describe Rumoji::Emoji do
7
+ let(:symbols) { [:hankey, :poop, :shit] }
8
+ let(:name) { "PILE OF POO" }
9
+ let(:poo_string) { "\u{1F4A9}" }
10
+
11
+ subject do
12
+ Rumoji::Emoji.new(poo_string, symbols, name)
13
+ end
14
+
15
+ it("has a name") { subject.name.must_equal name }
16
+ it("has a cheat sheet code") { symbols.must_include subject.code[1...-1].intern }
17
+ it("can test if it includes a cheat sheet code") { symbols.all?{|symbol| subject.include?(symbol) }.must_equal true }
18
+ it("converts to the emoji string") { subject.to_s.must_equal poo_string }
19
+ it("converts to a hex code") { subject.hex.must_equal "1F4A9" }
20
+
21
+ describe "inferring the name" do
22
+ let (:symbol) { :person_with_pouting_face }
23
+ subject do
24
+ Rumoji::Emoji.new("\u{1F64E}", symbol)
25
+ end
26
+
27
+ it("infers the name from the symbol") { subject.name.must_equal "PERSON WITH POUTING FACE" }
28
+ end
29
+
30
+ describe "with multiple codepoints" do
31
+ # From the Unicode 6.2.0 standard:
32
+ # The regional indicator symbols in the range
33
+ # U+1F1E6..U+1F1FF can be used in pairs to represent an ISO 3166 region code.
34
+ # This mechanism is not intended to supplant actual ISO 3166 region codes,
35
+ # which simply use Latin letters in the ASCII range; instead the main purpose
36
+ # of such pairs is to provide unambiguous roundtrip mappings to certain
37
+ # characters used in the emoji core sets. The representative glyph for
38
+ # region indicator symbols is simply a dotted box containing a letter. The
39
+ # Unicode Standard does not prescribe how the pairs of region indicator
40
+ # symbols should be rendered. In emoji contexts, where text is displayed
41
+ # as it would be on a Japanese mobile phone, a pair may be displayed using
42
+ # the glyph for a flag, as appropriate, but in other contexts the pair
43
+ # could be rendered differently
44
+ #
45
+ # http://www.unicode.org/versions/Unicode6.2.0/
46
+ let(:symbol) { :us }
47
+ let(:name) { "REGIONAL INDICATOR SYMBOL LETTERS US" }
48
+ let(:us_string) { "\xF0\x9F\x87\xBA\xF0\x9F\x87\xB8" }
49
+
50
+ subject do
51
+ Rumoji::Emoji.new(us_string, symbol, name)
52
+ end
53
+
54
+ it("has one symbol, representing the code") { subject.symbol.must_equal symbol }
55
+ it("has one cheat sheet code") { subject.code[1...-1].intern.must_equal symbol }
56
+ it("includes the symbol") { subject.must_include symbol }
57
+ it("transforms to the correct string") { subject.to_s.must_equal us_string }
58
+ end
59
+
60
+ describe "factory methods" do
61
+ subject { Rumoji::Emoji }
62
+ let(:smile_str) { "\u{1F604}" }
63
+ let(:smile_sym) { :smile }
64
+
65
+ it "finds an emoji from cheat sheet code" do
66
+ subject.find(smile_sym).to_s.must_equal smile_str
67
+ end
68
+
69
+ it "finds an emoji from a string" do
70
+ subject.find_by_string(smile_str).symbol.must_equal smile_sym
71
+ end
72
+
73
+ it "finds an emoji from a codepoint" do
74
+ smile_str.codepoints.map do |point|
75
+ subject.find_by_codepoint(point).symbol.must_equal smile_sym
76
+ end
77
+ end
78
+ end
79
+
80
+ end
data/spec/rumoji_spec.rb CHANGED
@@ -25,14 +25,14 @@ describe Rumoji do
25
25
  describe "#encode_io" do
26
26
  it "reads emoji from one stream and outputs a stream of cheat-sheet codes" do
27
27
  io = StringIO.new("#{@smile}")
28
- Rumoji.encode_io(io).read.must_equal ":smile:"
28
+ Rumoji.encode_io(io).string.must_equal ":smile:"
29
29
  end
30
30
  end
31
31
 
32
32
  describe "#decode_io" do
33
33
  it "reads a cheat-sheet code from one stream and outputs a stream of emoji" do
34
34
  io = StringIO.new(":poop:")
35
- Rumoji.decode_io(io).read.must_equal @poop
35
+ Rumoji.decode_io(io).string.must_equal @poop
36
36
  end
37
37
  end
38
- end
38
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rumoji
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,13 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-31 00:00:00.000000000 Z
12
+ date: 2013-02-02 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Transcode emoji utf-8 characters into emoji-cheat-sheet form
15
15
  email:
16
16
  - mark@markwunsch.com
17
- executables: []
17
+ executables:
18
+ - rumoji
18
19
  extensions: []
19
20
  extra_rdoc_files: []
20
21
  files:
@@ -23,9 +24,17 @@ files:
23
24
  - LICENSE.txt
24
25
  - README.md
25
26
  - Rakefile
27
+ - bin/rumoji
26
28
  - lib/rumoji.rb
29
+ - lib/rumoji/emoji.rb
30
+ - lib/rumoji/emoji/nature.rb
31
+ - lib/rumoji/emoji/objects.rb
32
+ - lib/rumoji/emoji/people.rb
33
+ - lib/rumoji/emoji/places.rb
34
+ - lib/rumoji/emoji/symbols.rb
27
35
  - lib/rumoji/version.rb
28
36
  - rumoji.gemspec
37
+ - spec/rumoji/emoji_spec.rb
29
38
  - spec/rumoji_spec.rb
30
39
  homepage: ''
31
40
  licenses: []
@@ -41,7 +50,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
41
50
  version: '0'
42
51
  segments:
43
52
  - 0
44
- hash: 2529029853417925007
53
+ hash: -2903541076251608095
45
54
  required_rubygems_version: !ruby/object:Gem::Requirement
46
55
  none: false
47
56
  requirements:
@@ -50,7 +59,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
50
59
  version: '0'
51
60
  segments:
52
61
  - 0
53
- hash: 2529029853417925007
62
+ hash: -2903541076251608095
54
63
  requirements: []
55
64
  rubyforge_project:
56
65
  rubygems_version: 1.8.23
@@ -58,4 +67,5 @@ signing_key:
58
67
  specification_version: 3
59
68
  summary: Transcode emoji utf-8 characters into emoji-cheat-sheet form
60
69
  test_files:
70
+ - spec/rumoji/emoji_spec.rb
61
71
  - spec/rumoji_spec.rb