e4u 0.0.4 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/e4u.rb +0 -2
- data/lib/e4u/base.rb +1 -1
- data/lib/e4u/docomo.rb +1 -1
- data/lib/e4u/google.rb +6 -6
- data/lib/e4u/kddi.rb +1 -1
- data/lib/e4u/softbank.rb +25 -1
- data/spec/google_spec.rb +32 -43
- data/spec/softbank_spec.rb +4 -0
- data/spec/spec.opts +1 -0
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.6
|
data/lib/e4u.rb
CHANGED
data/lib/e4u/base.rb
CHANGED
@@ -78,7 +78,7 @@ module E4U
|
|
78
78
|
end
|
79
79
|
|
80
80
|
def cp932
|
81
|
-
return NKF.nkf('-
|
81
|
+
return NKF.nkf('-m0xWs --oc=CP932', fallback_text) if fallback?
|
82
82
|
hex = unicode.sub(/\A[\>\*\+]/, '')
|
83
83
|
raise if hex.size == 0
|
84
84
|
chr = hex.split(/\+/, -1).map{ |ch| unicode_to_cp932(ch.hex) }.pack('n*')
|
data/lib/e4u/docomo.rb
CHANGED
@@ -5,7 +5,7 @@ module E4U
|
|
5
5
|
private
|
6
6
|
|
7
7
|
def path
|
8
|
-
File.expand_path(File.join('..', '..', 'data', 'docomo', 'carrier_data.xml')
|
8
|
+
File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'data', 'docomo', 'carrier_data.xml'))
|
9
9
|
end
|
10
10
|
|
11
11
|
def emojinize object
|
data/lib/e4u/google.rb
CHANGED
@@ -5,7 +5,7 @@ module E4U
|
|
5
5
|
private
|
6
6
|
|
7
7
|
def path
|
8
|
-
File.expand_path(File.join('..', '..', 'data', 'emoji4unicode.xml')
|
8
|
+
File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'data', 'emoji4unicode.xml'))
|
9
9
|
end
|
10
10
|
|
11
11
|
def emojinize object
|
@@ -38,15 +38,15 @@ module E4U
|
|
38
38
|
Google::Emoji.new self.merge(:unicode => self[:google])
|
39
39
|
end
|
40
40
|
|
41
|
+
def text_fallback
|
42
|
+
self[:text_fallback] || self[:text_repr] || [0x3013].pack('U')
|
43
|
+
end
|
44
|
+
|
41
45
|
private
|
42
46
|
|
43
47
|
def attribute_with_fallback_text type
|
44
48
|
attributes = { :unicode => self[type] }
|
45
|
-
unless attributes[:unicode]
|
46
|
-
attributes[:fallback_text] = self[:text_fallback]
|
47
|
-
attributes[:fallback_text] ||= self[:text_repr]
|
48
|
-
attributes[:fallback_text] ||= [0x3013].pack('U')
|
49
|
-
end
|
49
|
+
attributes[:fallback_text] = text_fallback unless attributes[:unicode]
|
50
50
|
attributes
|
51
51
|
end
|
52
52
|
end
|
data/lib/e4u/kddi.rb
CHANGED
@@ -5,7 +5,7 @@ module E4U
|
|
5
5
|
private
|
6
6
|
|
7
7
|
def path
|
8
|
-
File.expand_path(File.join('..', '..', 'data', 'kddi', 'carrier_data.xml')
|
8
|
+
File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'data', 'kddi', 'carrier_data.xml'))
|
9
9
|
end
|
10
10
|
|
11
11
|
def emojinize object
|
data/lib/e4u/softbank.rb
CHANGED
@@ -5,7 +5,7 @@ module E4U
|
|
5
5
|
private
|
6
6
|
|
7
7
|
def path
|
8
|
-
File.expand_path(File.join('..', '..', 'data', 'softbank', 'carrier_data.xml')
|
8
|
+
File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'data', 'softbank', 'carrier_data.xml'))
|
9
9
|
end
|
10
10
|
|
11
11
|
def emojinize object
|
@@ -24,6 +24,30 @@ module E4U
|
|
24
24
|
def number; nil end
|
25
25
|
def unicode; nil end
|
26
26
|
|
27
|
+
def webcode
|
28
|
+
return NKF.nkf('-m0xWs --oc=CP932', fallback_text) if fallback?
|
29
|
+
hex = unicode.sub(/\A[\>\*\+]/, '')
|
30
|
+
raise if hex.size == 0
|
31
|
+
buf = []
|
32
|
+
prev = nil
|
33
|
+
hex.split(/\+/, -1).each do |e|
|
34
|
+
code = e.hex
|
35
|
+
high = (code & 0x0700) >> 8
|
36
|
+
low = (code & 0x00FF) + 32
|
37
|
+
page = %w(G E F O P Q)[high]
|
38
|
+
raise unless page
|
39
|
+
unless page == prev
|
40
|
+
buf << "\x0F" if buf.size > 0
|
41
|
+
buf << "\x1B\x24#{page}"
|
42
|
+
end
|
43
|
+
buf << low.chr
|
44
|
+
prev = page
|
45
|
+
end
|
46
|
+
buf << "\x0F"
|
47
|
+
str = buf.join
|
48
|
+
#str.force_encoding(???) if str.respond_to? :force_encoding
|
49
|
+
end
|
50
|
+
|
27
51
|
private
|
28
52
|
|
29
53
|
def unicode_to_cp932 octet
|
data/spec/google_spec.rb
CHANGED
@@ -32,6 +32,17 @@ describe E4U::Google do
|
|
32
32
|
emj[:unicode].should == '2600'
|
33
33
|
end
|
34
34
|
|
35
|
+
# TODO: 紛らわしい
|
36
|
+
it "text_fallbackでfallback_textが返ってくること" do
|
37
|
+
@google.each do |e|
|
38
|
+
except = e[:text_fallback]
|
39
|
+
except ||= e[:text_repr]
|
40
|
+
except ||= [0x3013].pack('U')
|
41
|
+
|
42
|
+
e.text_fallback.should == except
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
35
46
|
it "docomo_emojiでE4U::DoCoMo::Emojiが返ってくること" do
|
36
47
|
de = @google.find{ |e| e[:id] == '000' }.docomo_emoji
|
37
48
|
de.should be_instance_of E4U::DoCoMo::Emoji
|
@@ -44,7 +55,7 @@ describe E4U::Google do
|
|
44
55
|
'4B8' => [[0xE669, 0xE6EF].pack('U*'), [0xF8CA, 0xF994].pack('n*')] }.each do |id, (utf8, sjis)|
|
45
56
|
de = @google.find{ |e| e[:id] == id }.docomo_emoji
|
46
57
|
de.utf8.should == utf8
|
47
|
-
de.sjis.should == sjis
|
58
|
+
de.sjis.dump.should == sjis.dump
|
48
59
|
end
|
49
60
|
end
|
50
61
|
|
@@ -69,22 +80,14 @@ describe E4U::Google do
|
|
69
80
|
it "utf8でfallback_textが返ってくること" do
|
70
81
|
@google.each do |e|
|
71
82
|
next if e[:docomo]
|
72
|
-
|
73
|
-
except ||= e[:text_repr]
|
74
|
-
except ||= [0x3013].pack('U')
|
75
|
-
|
76
|
-
e.docomo_emoji.utf8.should == except
|
83
|
+
e.docomo_emoji.utf8.should == e.text_fallback
|
77
84
|
end
|
78
85
|
end
|
79
86
|
|
80
87
|
it "sjisでfallback_textが返ってくること" do
|
81
88
|
@google.each do |e|
|
82
89
|
next if e[:docomo]
|
83
|
-
|
84
|
-
except ||= e[:text_repr]
|
85
|
-
except ||= [0x3013].pack('U')
|
86
|
-
|
87
|
-
e.docomo_emoji.sjis.should == NKF.nkf('-Wsm0x', except)
|
90
|
+
e.docomo_emoji.sjis.should == NKF.nkf('-m0xWs --oc=CP932', e.text_fallback)
|
88
91
|
end
|
89
92
|
end
|
90
93
|
end
|
@@ -100,7 +103,7 @@ describe E4U::Google do
|
|
100
103
|
{ '331' => [[0xE471, 0xE5B1].pack('U*'), [0xF649, 0xF7CE].pack('n*')], }.each do |id, (utf8, sjis)|
|
101
104
|
ke = @google.find{ |e| e[:id] == id }.kddi_emoji
|
102
105
|
ke.utf8.should == utf8
|
103
|
-
ke.sjis.should == sjis
|
106
|
+
ke.sjis.dump.should == sjis.dump
|
104
107
|
end
|
105
108
|
end
|
106
109
|
|
@@ -108,7 +111,7 @@ describe E4U::Google do
|
|
108
111
|
{ '331' => [[0xEF49, 0xF0CE].pack('U*'), [0xF649, 0xF7CE].pack('n*')], }.each do |id, (utf8, sjis)|
|
109
112
|
de = @google.find{ |e| e[:id] == id }.kddiweb_emoji
|
110
113
|
de.utf8.should == utf8
|
111
|
-
de.sjis.should == sjis
|
114
|
+
de.sjis.dump.should == sjis.dump
|
112
115
|
end
|
113
116
|
end
|
114
117
|
|
@@ -133,22 +136,14 @@ describe E4U::Google do
|
|
133
136
|
it "utf8でfallback_textが返ってくること" do
|
134
137
|
@google.each do |e|
|
135
138
|
next if e[:kddi]
|
136
|
-
|
137
|
-
except ||= e[:text_repr]
|
138
|
-
except ||= [0x3013].pack('U')
|
139
|
-
|
140
|
-
e.kddi_emoji.utf8.should == except
|
139
|
+
e.kddi_emoji.utf8.should == e.text_fallback
|
141
140
|
end
|
142
141
|
end
|
143
142
|
|
144
143
|
it "sjisでSJISのfallback_textが返ってくること" do
|
145
144
|
@google.each do |e|
|
146
145
|
next if e[:kddi]
|
147
|
-
|
148
|
-
except ||= e[:text_repr]
|
149
|
-
except ||= [0x3013].pack('U')
|
150
|
-
|
151
|
-
e.kddi_emoji.sjis.should == NKF.nkf('-Wsm0x', except)
|
146
|
+
e.kddi_emoji.sjis.should == NKF.nkf('-m0xWs --oc=CP932', e.text_fallback)
|
152
147
|
end
|
153
148
|
end
|
154
149
|
end
|
@@ -161,12 +156,19 @@ describe E4U::Google do
|
|
161
156
|
end
|
162
157
|
|
163
158
|
it "Softbankの複合絵文字が返ってくること" do
|
164
|
-
{ '00F' => [[0xE04A, 0xE049].pack('U*'),
|
165
|
-
|
166
|
-
|
159
|
+
{ '00F' => [[0xE04A, 0xE049].pack('U*'),
|
160
|
+
[0xF98B, 0xF98A].pack('n*'),
|
161
|
+
"\x1B$Gji\x0F"],
|
162
|
+
'331' => [[0xE415, 0xE331].pack('U*'),
|
163
|
+
[0xFB55, 0xF9D1].pack('n*'),
|
164
|
+
"\x1B$P5\x0F\x1B$OQ\x0F"],
|
165
|
+
'824' => [[0xE103, 0xE328].pack('U*'),
|
166
|
+
[0xF743, 0xF9C8].pack('n*'),
|
167
|
+
"\x1B$E#\x0F\x1B$OH\x0F"], }.each do |id, (utf8, sjis, webcode)|
|
167
168
|
se = @google.find{ |e| e[:id] == id }.softbank_emoji
|
168
169
|
se.utf8.should == utf8
|
169
|
-
se.sjis.should == sjis
|
170
|
+
se.sjis.dump.should == sjis.dump
|
171
|
+
se.webcode.should == webcode
|
170
172
|
end
|
171
173
|
end
|
172
174
|
|
@@ -191,22 +193,14 @@ describe E4U::Google do
|
|
191
193
|
it "utf8でfallback_textが返ってくること" do
|
192
194
|
@google.each do |e|
|
193
195
|
next if e[:softbank]
|
194
|
-
|
195
|
-
except ||= e[:text_repr]
|
196
|
-
except ||= [0x3013].pack('U')
|
197
|
-
|
198
|
-
e.softbank_emoji.utf8.should == except
|
196
|
+
e.softbank_emoji.utf8.should == e.text_fallback
|
199
197
|
end
|
200
198
|
end
|
201
199
|
|
202
200
|
it "sjisでSJISのfallback_textが返ってくること" do
|
203
201
|
@google.each do |e|
|
204
202
|
next if e[:softbank]
|
205
|
-
|
206
|
-
except ||= e[:text_repr]
|
207
|
-
except ||= [0x3013].pack('U')
|
208
|
-
|
209
|
-
e.softbank_emoji.sjis.should == NKF.nkf('-Wsm0x', except)
|
203
|
+
e.softbank_emoji.sjis.should == NKF.nkf('-m0xWs --oc=CP932', e.text_fallback)
|
210
204
|
end
|
211
205
|
end
|
212
206
|
end
|
@@ -275,12 +269,7 @@ describe E4U::Google do
|
|
275
269
|
@google.each do |e|
|
276
270
|
next unless e[:google]
|
277
271
|
next if e[:docomo]
|
278
|
-
|
279
|
-
except = e[:text_fallback]
|
280
|
-
except ||= e[:text_repr]
|
281
|
-
except ||= [0x3013].pack('U')
|
282
|
-
|
283
|
-
e.google_emoji.translate(:docomo).utf8.should == except
|
272
|
+
e.google_emoji.translate(:docomo).utf8.should == e.text_fallback
|
284
273
|
end
|
285
274
|
end
|
286
275
|
end
|
data/spec/softbank_spec.rb
CHANGED
data/spec/spec.opts
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: e4u
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- fistfvck
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01-
|
12
|
+
date: 2010-01-15 00:00:00 +09:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|