e4u-encode 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -0
- data/.gitignore +21 -0
- data/LICENSE +20 -0
- data/README.rdoc +17 -0
- data/Rakefile +50 -0
- data/VERSION +1 -0
- data/lib/e4u/encode/docomo/cp932/docomo_unicode.rb +301 -0
- data/lib/e4u/encode/docomo/cp932.rb +12 -0
- data/lib/e4u/encode/docomo/unicode/cp932.rb +5 -0
- data/lib/e4u/encode/docomo/unicode/google_unicode.rb +294 -0
- data/lib/e4u/encode/docomo/unicode/utf8.rb +5 -0
- data/lib/e4u/encode/docomo/unicode.rb +34 -0
- data/lib/e4u/encode/docomo/utf8/docomo_unicode.rb +300 -0
- data/lib/e4u/encode/docomo/utf8.rb +12 -0
- data/lib/e4u/encode/docomo.rb +50 -0
- data/lib/e4u/encode/encoding.rb +25 -0
- data/lib/e4u/encode/google/unicode/docomo_unicode.rb +818 -0
- data/lib/e4u/encode/google/unicode/kddi_unicode.rb +818 -0
- data/lib/e4u/encode/google/unicode/softbank_unicode.rb +818 -0
- data/lib/e4u/encode/google/unicode/utf8.rb +5 -0
- data/lib/e4u/encode/google/unicode.rb +45 -0
- data/lib/e4u/encode/google/utf8/unicode.rb +823 -0
- data/lib/e4u/encode/google/utf8.rb +12 -0
- data/lib/e4u/encode/google.rb +47 -0
- data/lib/e4u/encode/kddi/cp932/kddi_unicode.rb +667 -0
- data/lib/e4u/encode/kddi/cp932.rb +12 -0
- data/lib/e4u/encode/kddi/unicode/cp932.rb +5 -0
- data/lib/e4u/encode/kddi/unicode/google_unicode.rb +660 -0
- data/lib/e4u/encode/kddi/unicode/utf8.rb +5 -0
- data/lib/e4u/encode/kddi/unicode.rb +34 -0
- data/lib/e4u/encode/kddi/utf8/kddi_unicode.rb +1313 -0
- data/lib/e4u/encode/kddi/utf8.rb +12 -0
- data/lib/e4u/encode/kddi.rb +50 -0
- data/lib/e4u/encode/softbank/cp932/softbank_unicode.rb +504 -0
- data/lib/e4u/encode/softbank/cp932.rb +32 -0
- data/lib/e4u/encode/softbank/unicode/cp932.rb +5 -0
- data/lib/e4u/encode/softbank/unicode/google_unicode.rb +497 -0
- data/lib/e4u/encode/softbank/unicode/utf8.rb +5 -0
- data/lib/e4u/encode/softbank/unicode.rb +45 -0
- data/lib/e4u/encode/softbank/utf8/softbank_unicode.rb +503 -0
- data/lib/e4u/encode/softbank/utf8.rb +12 -0
- data/lib/e4u/encode/softbank.rb +53 -0
- data/lib/e4u/encode.rb +79 -0
- data/spec/docomo_spec.rb +230 -0
- data/spec/e4u_spec.rb +173 -0
- data/spec/encode_spec.rb +78 -0
- data/spec/encoding_spec.rb +47 -0
- data/spec/google_spec.rb +86 -0
- data/spec/kddi_spec.rb +130 -0
- data/spec/softbank_spec.rb +147 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +13 -0
- data/tasks/mk_docomo_cp932.rb +34 -0
- data/tasks/mk_docomo_unicode.rb +28 -0
- data/tasks/mk_docomo_utf8.rb +33 -0
- data/tasks/mk_google_unicode_docomo.rb +37 -0
- data/tasks/mk_google_unicode_kddi.rb +37 -0
- data/tasks/mk_google_unicode_softbank.rb +37 -0
- data/tasks/mk_google_utf8.rb +34 -0
- data/tasks/mk_kddi_cp932.rb +35 -0
- data/tasks/mk_kddi_unicode.rb +30 -0
- data/tasks/mk_kddi_utf8.rb +36 -0
- data/tasks/mk_softbank_cp932.rb +34 -0
- data/tasks/mk_softbank_unicode.rb +28 -0
- data/tasks/mk_softbank_utf8.rb +33 -0
- data/tasks/tables.rake +70 -0
- data/tasks/task_helper.rb +3 -0
- metadata +148 -0
data/spec/docomo_spec.rb
ADDED
@@ -0,0 +1,230 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
3
|
+
|
4
|
+
describe E4U::Encode::DoCoMo do
|
5
|
+
|
6
|
+
describe "encode" do
|
7
|
+
before :all do
|
8
|
+
@from, @to = {}, {}
|
9
|
+
end
|
10
|
+
|
11
|
+
it "from[:carrier]が:docomo以外ならば例外が起こる" do
|
12
|
+
@from.update :carrier => :not_docomo
|
13
|
+
lambda {
|
14
|
+
E4U::Encode::DoCoMo.encode('', @from, @to)
|
15
|
+
}.should raise_error
|
16
|
+
end
|
17
|
+
|
18
|
+
context "to[:carrier]が:docomo以外の時" do
|
19
|
+
before :all do
|
20
|
+
@to.update :carrier => :not_docomo
|
21
|
+
end
|
22
|
+
|
23
|
+
before :each do
|
24
|
+
@from.update :carrier => :docomo
|
25
|
+
end
|
26
|
+
|
27
|
+
it "from[:encoding]が:utf8なら :unicodeに変換される" do
|
28
|
+
@from.update :encoding => :utf8
|
29
|
+
lambda {
|
30
|
+
E4U::Encode::DoCoMo.encode('', @from, @to)
|
31
|
+
}.should change { @from[:encoding] }.from(:utf8).to(:unicode)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "from[:encoding]が:sjisなら :unicodeに変換される" do
|
35
|
+
@from.update :encoding => :sjis
|
36
|
+
lambda {
|
37
|
+
E4U::Encode::DoCoMo.encode('', @from, @to)
|
38
|
+
}.should change { @from[:encoding] }.from(:sjis).to(:unicode)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "from[:encoding]が:unicodeなら from[:carrier]が:googleに変換される" do
|
42
|
+
@from.update :encoding => :unicode
|
43
|
+
lambda {
|
44
|
+
E4U::Encode::DoCoMo.encode('', @from, @to)
|
45
|
+
}.should change { @from[:carrier] }.from(:docomo).to(:google)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context "to[:carrier]が:docomoの時" do
|
50
|
+
before :all do
|
51
|
+
@to.update :carrier => :docomo
|
52
|
+
end
|
53
|
+
|
54
|
+
before :each do
|
55
|
+
@from.update :carrier => :docomo
|
56
|
+
end
|
57
|
+
|
58
|
+
it "from[:encoding]が:sjisならば、:unicodeに変換される" do
|
59
|
+
@from.update :encoding => :sjis
|
60
|
+
lambda {
|
61
|
+
E4U::Encode::DoCoMo.encode('', @from, @to)
|
62
|
+
}.should change { @from[:encoding] }.from(:sjis).to(:unicode)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "from[:encoding]が:utf8ならば、:unicodeに変換される" do
|
66
|
+
@from.update :encoding => :utf8
|
67
|
+
lambda {
|
68
|
+
E4U::Encode::DoCoMo.encode('', @from, @to)
|
69
|
+
}.should change { @from[:encoding] }.from(:utf8).to(:unicode)
|
70
|
+
end
|
71
|
+
|
72
|
+
context "from[:encoding]が:unicodeの時" do
|
73
|
+
before :each do
|
74
|
+
@from.update :encoding => :unicode
|
75
|
+
end
|
76
|
+
|
77
|
+
it "to[:encoding]が:sjisならば、from[:encoding]も:sjisになる" do
|
78
|
+
@to.update :encoding => :sjis
|
79
|
+
lambda {
|
80
|
+
E4U::Encode::DoCoMo.encode('', @from, @to)
|
81
|
+
}.should change { @from[:encoding] }.from(:unicode).to(:sjis)
|
82
|
+
end
|
83
|
+
|
84
|
+
it "to[:encoding]が:utf8ならば、from[:encoding]も:utf8になる" do
|
85
|
+
@to.update :encoding => :utf8
|
86
|
+
lambda {
|
87
|
+
E4U::Encode::DoCoMo.encode('', @from, @to)
|
88
|
+
}.should change { @from[:encoding] }.from(:unicode).to(:utf8)
|
89
|
+
end
|
90
|
+
|
91
|
+
it "to[:encoding]が:sjis、:utf8以外ならば、例外が起こる" do
|
92
|
+
@to.update :encoding => :other_encoding
|
93
|
+
lambda {
|
94
|
+
E4U::Encode::DoCoMo.encode('', @from, @to)
|
95
|
+
}.should raise_error
|
96
|
+
end
|
97
|
+
|
98
|
+
it "to[:encoding]が:sjisならば、CP932な文字列が返ってくる" do
|
99
|
+
pending "only RUBY_VERSION >= '1.9.1'" unless RUBY_VERSION >= '1.9.1'
|
100
|
+
str = "とある文字列の符号化方式<エンコーディング>"
|
101
|
+
@to.update :encoding => :sjis
|
102
|
+
E4U::Encode::DoCoMo.encode(str, @from, @to).encoding.should == Encoding::Windows_31J
|
103
|
+
# うまく動かない…
|
104
|
+
# lambda {
|
105
|
+
# E4U::Encode::DoCoMo.encode(str, @from, @to)
|
106
|
+
# }.should change(str, :encoding).from(Encoding::UTF_8).to(Encoding::Windows_31J)
|
107
|
+
end
|
108
|
+
|
109
|
+
it "to[:encoding]が:utf8ならば、UTF-8な文字列が返ってくる" do
|
110
|
+
pending "only RUBY_VERSION >= '1.9.1'" unless RUBY_VERSION >= '1.9.1'
|
111
|
+
str = "とある文字列の符号化方式<エンコーディング>"
|
112
|
+
@to.update :encoding => :utf8
|
113
|
+
E4U::Encode::DoCoMo.encode(str, @from, @to).encoding.should == Encoding::UTF_8
|
114
|
+
# lambda {
|
115
|
+
# E4U::Encode::DoCoMo.encode(str, @from, @to)
|
116
|
+
# }.should change(str, :encoding).from(Encoding::UTF_8).to(Encoding::UTF_8)
|
117
|
+
# # => encoding should have been changed to #<Encoding:UTF-8>, but is now #<Encoding:UTF-8>
|
118
|
+
end
|
119
|
+
|
120
|
+
it "to[:encoding]が:unicodeならば、UTF-8な文字列が返ってくる" do
|
121
|
+
pending "only RUBY_VERSION >= '1.9.1'" unless RUBY_VERSION >= '1.9.1'
|
122
|
+
str = "とある文字列の符号化方式<エンコーディング>"
|
123
|
+
@to.update :encoding => :utf8
|
124
|
+
E4U::Encode::DoCoMo.encode(str, @from, @to).encoding.should == Encoding::UTF_8
|
125
|
+
# lambda {
|
126
|
+
# E4U::Encode::DoCoMo.encode(str, @from, @to)
|
127
|
+
# }.should change(str, :encoding).from(Encoding::UTF_8).to(Encoding::UTF_8)
|
128
|
+
# # => encoding should have been changed to #<Encoding:UTF-8>, but is now #<Encoding:UTF-8>
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
|
136
|
+
describe E4U do
|
137
|
+
describe E4U::Encode do
|
138
|
+
|
139
|
+
describe E4U::Encode::DoCoMo do
|
140
|
+
before :all do
|
141
|
+
@utf8_str_ary = %w(本日は 晴天 なり)
|
142
|
+
@sjis_str_ary = @utf8_str_ary.map { |e| NKF.nkf('-Wm0x --oc=CP932', e) }
|
143
|
+
|
144
|
+
@webcode = "\x1B\x24\x47\x6A\x0F"
|
145
|
+
|
146
|
+
@sun = E4U.google.find{ |e| e[:id] == '000' }
|
147
|
+
end
|
148
|
+
|
149
|
+
it "SJISなDoCoMo絵文字を、UTF-8なDoCoMo絵文字に変換できること" do
|
150
|
+
sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
|
151
|
+
utf8 = @utf8_str_ary.join @sun.docomo_emoji.utf8
|
152
|
+
|
153
|
+
got = E4U.encode(sjis, :docomo, :sjis => :utf8)
|
154
|
+
got.should == utf8
|
155
|
+
end
|
156
|
+
|
157
|
+
it "SJISなDoCoMo絵文字を、UTF-8な数値文字参照に変換できること" do
|
158
|
+
sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
|
159
|
+
utf8 = @utf8_str_ary.join "&#x#{@sun.docomo_emoji.unicode};"
|
160
|
+
|
161
|
+
got = E4U.encode(sjis, :docomo, :sjis => :unicode)
|
162
|
+
got.should == utf8
|
163
|
+
end
|
164
|
+
|
165
|
+
it "UTF-8なDoCoMo絵文字を、SJISなDoCoMo絵文字に変換できること" do
|
166
|
+
sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
|
167
|
+
utf8 = @utf8_str_ary.join @sun.docomo_emoji.utf8
|
168
|
+
|
169
|
+
got = E4U.encode(utf8, :docomo, :utf8 => :sjis)
|
170
|
+
got.should == sjis
|
171
|
+
end
|
172
|
+
|
173
|
+
it "SJISなDoCoMo絵文字を、UTF-8なKDDI絵文字に変換できること" do
|
174
|
+
sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
|
175
|
+
utf8 = @utf8_str_ary.join @sun.kddi_emoji.utf8
|
176
|
+
|
177
|
+
got = E4U.encode(sjis, :docomo => :kddi, :sjis => :utf8)
|
178
|
+
got.should == utf8
|
179
|
+
end
|
180
|
+
|
181
|
+
it "SJISなDoCoMo絵文字を、SJISなKDDI絵文字に変換できること" do
|
182
|
+
sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
|
183
|
+
kddi = @sjis_str_ary.join @sun.kddi_emoji.sjis
|
184
|
+
|
185
|
+
got = E4U.encode(sjis, :sjis, :docomo => :kddi)
|
186
|
+
got.should == kddi
|
187
|
+
end
|
188
|
+
|
189
|
+
it "SJISなDoCoMo絵文字を、SJISなSoftbank絵文字に変換できること" do
|
190
|
+
sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
|
191
|
+
softbank = @sjis_str_ary.join @sun.softbank_emoji.sjis
|
192
|
+
|
193
|
+
got = E4U.encode(sjis, :sjis, :docomo => :softbank)
|
194
|
+
got.should == softbank
|
195
|
+
end
|
196
|
+
|
197
|
+
it "SJISなDoCoMo絵文字を、WebcodeなSoftbank絵文字に変換できること" do
|
198
|
+
sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
|
199
|
+
softbank = @sjis_str_ary.join @webcode
|
200
|
+
|
201
|
+
got = E4U.encode(sjis, :sjis => :webcode, :docomo => :softbank)
|
202
|
+
got.should == softbank
|
203
|
+
end
|
204
|
+
|
205
|
+
it "SJISなDoCoMo絵文字を、UTF-8なSoftbank絵文字に変換できること" do
|
206
|
+
sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
|
207
|
+
softbank = @utf8_str_ary.join @sun.softbank_emoji.utf8
|
208
|
+
|
209
|
+
got = E4U.encode(sjis, :sjis => :utf8, :docomo => :softbank)
|
210
|
+
got.should == softbank
|
211
|
+
end
|
212
|
+
|
213
|
+
it "SJISなDoCoMo絵文字を、UTF-8なGoogle絵文字に変換できること" do
|
214
|
+
sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
|
215
|
+
google = @utf8_str_ary.join @sun.google_emoji.utf8
|
216
|
+
|
217
|
+
got = E4U.encode(sjis, :sjis => :utf8, :docomo => :google)
|
218
|
+
got.should == google
|
219
|
+
end
|
220
|
+
|
221
|
+
it "UTF-8なDoCoMo絵文字を、UTF-8なGoogle絵文字に変換できること" do
|
222
|
+
utf8 = @utf8_str_ary.join @sun.docomo_emoji.utf8
|
223
|
+
google = @utf8_str_ary.join @sun.google_emoji.utf8
|
224
|
+
|
225
|
+
got = E4U.encode(utf8, :utf8, :docomo => :google)
|
226
|
+
got.should == google
|
227
|
+
end
|
228
|
+
end
|
229
|
+
end
|
230
|
+
end
|
data/spec/e4u_spec.rb
ADDED
@@ -0,0 +1,173 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
3
|
+
|
4
|
+
describe E4U do
|
5
|
+
describe "encode" do
|
6
|
+
before :all do
|
7
|
+
@utf8_str_ary = %w(本日は 晴天 なり)
|
8
|
+
@sjis_str_ary = @utf8_str_ary.map { |e| NKF.nkf('-Wm0x --oc=CP932', e) }
|
9
|
+
@sun = E4U.google.find{ |e| e[:id] == '000' }
|
10
|
+
end
|
11
|
+
|
12
|
+
context "DoCoMo" do
|
13
|
+
context "SJISな絵文字" do
|
14
|
+
before :all do
|
15
|
+
@str = @sjis_str_ary.join @sun.docomo_emoji.sjis
|
16
|
+
end
|
17
|
+
|
18
|
+
it "UTF-8な絵文字に変換できること" do
|
19
|
+
utf8 = @utf8_str_ary.join @sun.docomo_emoji.utf8
|
20
|
+
E4U.encode(@str, :docomo, :sjis => :utf8).should == utf8
|
21
|
+
end
|
22
|
+
|
23
|
+
it "Unicode数値文字参照に変換できること" do
|
24
|
+
utf8 = @utf8_str_ary.join "&#x#{@sun.docomo_emoji.unicode};"
|
25
|
+
E4U.encode(@str, :docomo, :sjis => :unicode).should == utf8
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context "UTF-8な絵文字" do
|
30
|
+
before :all do
|
31
|
+
@str = @utf8_str_ary.join @sun.docomo_emoji.utf8
|
32
|
+
end
|
33
|
+
|
34
|
+
it "SJISな絵文字に変換できること" do
|
35
|
+
sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
|
36
|
+
E4U.encode(@str, :docomo, :utf8 => :sjis).should == sjis
|
37
|
+
end
|
38
|
+
|
39
|
+
it "Unicode数値文字参照に変換できること" do
|
40
|
+
unicode = @utf8_str_ary.join "&#x#{@sun.docomo_emoji.unicode};"
|
41
|
+
E4U.encode(@str, :docomo, :utf8 => :unicode).should == unicode
|
42
|
+
end
|
43
|
+
|
44
|
+
it "UTF-8なKDDI絵文字に変換できること" do
|
45
|
+
utf8 = @utf8_str_ary.join @sun.kddi_emoji.utf8
|
46
|
+
E4U.encode(@str, :utf8, :docomo => :kddi).should == utf8
|
47
|
+
end
|
48
|
+
|
49
|
+
it "SJISなKDDI絵文字に変換できること" do
|
50
|
+
sjis = @sjis_str_ary.join @sun.kddi_emoji.sjis
|
51
|
+
E4U.encode(@str, :utf8 => :sjis, :docomo => :kddi).should == sjis
|
52
|
+
end
|
53
|
+
|
54
|
+
it "UTF-8なSoftbank絵文字に変換できること" do
|
55
|
+
utf8 = @utf8_str_ary.join @sun.softbank_emoji.utf8
|
56
|
+
E4U.encode(@str, :utf8, :docomo => :softbank).should == utf8
|
57
|
+
end
|
58
|
+
|
59
|
+
it "SJISなSoftbank絵文字に変換できること" do
|
60
|
+
sjis = @sjis_str_ary.join @sun.softbank_emoji.sjis
|
61
|
+
E4U.encode(@str, :utf8 => :sjis, :docomo => :softbank).should == sjis
|
62
|
+
end
|
63
|
+
|
64
|
+
it "WebcodeなSoftbank絵文字に変換できること" do
|
65
|
+
sjis = @sjis_str_ary.join "\x1B\x24\x47\x6A\x0F"
|
66
|
+
E4U.encode(@str, :utf8 => :webcode, :docomo => :softbank).should == sjis
|
67
|
+
end
|
68
|
+
|
69
|
+
it "UTF-8なGoogle絵文字に変換できること" do
|
70
|
+
utf8 = @utf8_str_ary.join @sun.google_emoji.utf8
|
71
|
+
E4U.encode(@str, :utf8, :docomo => :google).should == utf8
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
context "Google" do
|
77
|
+
context "UTF-8な絵文字" do
|
78
|
+
before :all do
|
79
|
+
@str = @utf8_str_ary.join @sun.google_emoji.utf8
|
80
|
+
end
|
81
|
+
|
82
|
+
it "Unicode数値文字参照に変換できること" do
|
83
|
+
unicode = @utf8_str_ary.join "&#x#{@sun.google_emoji.unicode};"
|
84
|
+
E4U.encode(@str, :google, :utf8 => :unicode).should == unicode
|
85
|
+
end
|
86
|
+
|
87
|
+
it "UTF-8なDoCoMo絵文字に変換できること" do
|
88
|
+
utf8 = @utf8_str_ary.join @sun.docomo_emoji.utf8
|
89
|
+
E4U.encode(@str, :utf8, :google => :docomo).should == utf8
|
90
|
+
end
|
91
|
+
|
92
|
+
it "SJISなDoCoMo絵文字に変換できること" do
|
93
|
+
sjis = @sjis_str_ary.join @sun.docomo_emoji.sjis
|
94
|
+
E4U.encode(@str, :utf8 => :sjis, :google => :docomo).should == sjis
|
95
|
+
end
|
96
|
+
|
97
|
+
it "UTF-8なKDDI絵文字に変換できること" do
|
98
|
+
utf8 = @utf8_str_ary.join @sun.kddi_emoji.utf8
|
99
|
+
E4U.encode(@str, :utf8, :google => :kddi).should == utf8
|
100
|
+
end
|
101
|
+
|
102
|
+
it "SJISなKDDI絵文字に変換できること" do
|
103
|
+
sjis = @sjis_str_ary.join @sun.kddi_emoji.sjis
|
104
|
+
E4U.encode(@str, :utf8 => :sjis, :google => :kddi).should == sjis
|
105
|
+
end
|
106
|
+
|
107
|
+
it "UTF-8なSoftbank絵文字に変換できること" do
|
108
|
+
utf8 = @utf8_str_ary.join @sun.softbank_emoji.utf8
|
109
|
+
E4U.encode(@str, :utf8, :google => :softbank).should == utf8
|
110
|
+
end
|
111
|
+
|
112
|
+
it "SJISなSoftbank絵文字に変換できること" do
|
113
|
+
sjis = @sjis_str_ary.join @sun.softbank_emoji.sjis
|
114
|
+
E4U.encode(@str, :utf8 => :sjis, :google => :softbank).should == sjis
|
115
|
+
end
|
116
|
+
|
117
|
+
it "WebcodeなSoftbank絵文字に変換できること" do
|
118
|
+
sjis = @sjis_str_ary.join "\x1B\x24\x47\x6A\x0F"
|
119
|
+
E4U.encode(@str, :utf8 => :webcode, :google => :softbank).should == sjis
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
context "Unicode数値文字参照" do
|
124
|
+
before :all do
|
125
|
+
@str = @utf8_str_ary.join "&#x#{@sun.google_emoji.unicode};"
|
126
|
+
end
|
127
|
+
|
128
|
+
it "UTF-8なGoogle絵文字に変換できること" do
|
129
|
+
utf8 = @utf8_str_ary.join @sun.google_emoji.utf8
|
130
|
+
E4U.encode(@str, :google, :unicode => :utf8).should == utf8
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
context "DoCoMo <=> KDDI" do
|
136
|
+
before :all do
|
137
|
+
emoji = E4U.google.find{ |e| e[:docomo].nil? != e[:kddi].nil? }
|
138
|
+
@docomo = "#{emoji[:name]} #{emoji.docomo_emoji.utf8}"
|
139
|
+
@docomo.encode('UTF-8') if RUBY_VERSION >= '1.9.1'
|
140
|
+
@kddi = "#{emoji[:name]} #{emoji.kddi_emoji.utf8}"
|
141
|
+
@kddi.encode('UTF-8') if RUBY_VERSION >= '1.9.1'
|
142
|
+
end
|
143
|
+
|
144
|
+
it "該当する絵文字がなければ、fallback_textを出力すること" do
|
145
|
+
E4U.encode(@kddi, :utf8, :kddi => :docomo).should == @docomo
|
146
|
+
end
|
147
|
+
|
148
|
+
it "fallback_textは絵文字に変換しないこと" do
|
149
|
+
E4U.encode(@docomo, :utf8, :docomo => :kddi).should_not == @kddi
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
context "DoCoMo <=> Softbank" do
|
154
|
+
before :all do
|
155
|
+
emoji = E4U.google.find{ |e| e[:docomo].nil? != e[:softbank].nil? }
|
156
|
+
@docomo = "#{emoji[:name]} #{emoji.docomo_emoji.utf8}"
|
157
|
+
@docomo.encode('UTF-8') if RUBY_VERSION >= '1.9.1'
|
158
|
+
@softbank = "#{emoji[:name]} #{emoji.softbank_emoji.utf8}"
|
159
|
+
@softbank.encode('UTF-8') if RUBY_VERSION >= '1.9.1'
|
160
|
+
end
|
161
|
+
|
162
|
+
it "該当する絵文字がなければ、fallback_textを出力すること" do
|
163
|
+
E4U.encode(@docomo, :utf8, :docomo => :softbank).should == @softbank
|
164
|
+
end
|
165
|
+
|
166
|
+
it "fallback_textは絵文字に変換しないこと" do
|
167
|
+
E4U.encode(@softbank, :utf8, :softbank => :docomo).should_not == @docomo
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
it "detect"
|
173
|
+
end
|
data/spec/encode_spec.rb
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
3
|
+
|
4
|
+
describe E4U::Encode do
|
5
|
+
context "convert" do
|
6
|
+
it "引数なしの場合は文字列がそのまま返る" do
|
7
|
+
str = ''
|
8
|
+
E4U::Encode.convert(str).should eql(str)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "nilを渡したらnilが返る" do
|
12
|
+
E4U::Encode.convert(nil).should be_nil
|
13
|
+
end
|
14
|
+
|
15
|
+
it "引数が多い場合はArgumentErrorが発生する" do
|
16
|
+
lambda{
|
17
|
+
E4U::Encode.convert('', :docomo, :sjis => :sjis)
|
18
|
+
}.should_not raise_error
|
19
|
+
|
20
|
+
lambda{
|
21
|
+
E4U::Encode.convert('', :docomo, {:sjis => :sjis}, 'arg3')
|
22
|
+
}.should raise_error ArgumentError
|
23
|
+
end
|
24
|
+
|
25
|
+
it "キャリアとエンコーディングが明示されないとArgumentErrorが発生する" do
|
26
|
+
lambda{
|
27
|
+
E4U::Encode.convert('', :docomo => :google)
|
28
|
+
}.should raise_error ArgumentError
|
29
|
+
|
30
|
+
lambda{
|
31
|
+
E4U::Encode.convert('', :sjis => :utf8)
|
32
|
+
}.should raise_error ArgumentError
|
33
|
+
end
|
34
|
+
|
35
|
+
it "NoMethodErrorではなくArgumentErrorが発生すること" do
|
36
|
+
lambda{
|
37
|
+
E4U::Encode.convert('', :docomo)
|
38
|
+
}.should_not raise_error NoMethodError
|
39
|
+
|
40
|
+
lambda{
|
41
|
+
E4U::Encode.convert('', :docomo)
|
42
|
+
}.should raise_error ArgumentError
|
43
|
+
|
44
|
+
lambda{
|
45
|
+
E4U::Encode.convert('', :sjis)
|
46
|
+
}.should_not raise_error NoMethodError
|
47
|
+
|
48
|
+
lambda{
|
49
|
+
E4U::Encode.convert('', :sjis)
|
50
|
+
}.should raise_error ArgumentError
|
51
|
+
end
|
52
|
+
|
53
|
+
it "非対応なキャリアを渡すとArgumentErrorが発生する" do
|
54
|
+
lambda{
|
55
|
+
E4U::Encode.convert('', :emobile, :sjis => :sjis)
|
56
|
+
}.should raise_error ArgumentError
|
57
|
+
end
|
58
|
+
|
59
|
+
it "非対応なエンコーディングを渡すとArgumentErrorが発生する" do
|
60
|
+
lambda{
|
61
|
+
E4U::Encode.convert('', :euc_jp, :docomo => :docomo)
|
62
|
+
}.should raise_error ArgumentError
|
63
|
+
end
|
64
|
+
|
65
|
+
it "存在しないキャリアとエンコーディングの組み合わせを渡してもArgumentErrorは発生しない" do
|
66
|
+
lambda{
|
67
|
+
# google-sjisは存在しない
|
68
|
+
E4U::Encode.convert('', :docomo => :google, :utf8 => :sjis)
|
69
|
+
}.should_not raise_error ArgumentError
|
70
|
+
|
71
|
+
# 変換できないのでRuntimeErrorは起こる
|
72
|
+
lambda{
|
73
|
+
E4U::Encode.convert('', :docomo => :google, :utf8 => :sjis)
|
74
|
+
}.should raise_error RuntimeError
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
3
|
+
|
4
|
+
describe E4U::Encode::Encoding do
|
5
|
+
context "to_utf8" do
|
6
|
+
if RUBY_VERSION < '1.9.1'
|
7
|
+
it "SJIS文字列がUTF-8に変換されること" do
|
8
|
+
utf8 = "とある文字列の符号化方式<エンコーディング>"
|
9
|
+
sjis = NKF.nkf('-Wsm0x', utf8)
|
10
|
+
NKF.should_receive(:nkf).once.with('-Swm0x', sjis).and_return(utf8)
|
11
|
+
E4U::Encode::Encoding.to_utf8(sjis)
|
12
|
+
end
|
13
|
+
else
|
14
|
+
it "SJIS文字列がUTF-8に変換されること" do
|
15
|
+
sjis = "とある文字列の符号化方式<エンコーディング>".encode('SJIS')
|
16
|
+
utf8 = sjis.dup.encode('UTF-8')
|
17
|
+
sjis.should_receive(:encode).once.with('UTF-8').and_return(utf8)
|
18
|
+
E4U::Encode::Encoding.to_utf8(sjis)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "CP932文字列がUTF-8に変換されること" do
|
22
|
+
sjis = "とある文字列の符号化方式<エンコーディング>".encode('CP932')
|
23
|
+
utf8 = sjis.dup.encode('UTF-8')
|
24
|
+
sjis.should_receive(:encode).once.with('UTF-8').and_return(utf8)
|
25
|
+
E4U::Encode::Encoding.to_utf8(sjis)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context "to_cp932" do
|
31
|
+
if RUBY_VERSION < '1.9.1'
|
32
|
+
it "UTF-8文字列がSJISに変換されること" do
|
33
|
+
utf8 = "とある文字列の符号化方式<エンコーディング>"
|
34
|
+
sjis = NKF.nkf('-Wsm0x', utf8)
|
35
|
+
NKF.should_receive(:nkf).once.with('-Wsm0x', utf8).and_return(sjis)
|
36
|
+
E4U::Encode::Encoding.to_cp932(utf8)
|
37
|
+
end
|
38
|
+
else
|
39
|
+
it "UTF-8文字列がCP932に変換されること" do
|
40
|
+
utf8 = "とある文字列の符号化方式<エンコーディング>"
|
41
|
+
sjis = utf8.dup.encode('CP932')
|
42
|
+
utf8.should_receive(:encode).once.with('CP932').and_return(sjis)
|
43
|
+
E4U::Encode::Encoding.to_cp932(utf8)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/spec/google_spec.rb
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
3
|
+
|
4
|
+
describe E4U::Encode::Google do
|
5
|
+
context "encode" do
|
6
|
+
before :all do
|
7
|
+
@from, @to = {}, {}
|
8
|
+
end
|
9
|
+
|
10
|
+
it "from[:carrier]が:google以外なら 例外が起こる" do
|
11
|
+
@from.update :carrier => :not_google
|
12
|
+
lambda {
|
13
|
+
E4U::Encode::Google.encode('', @from, @to)
|
14
|
+
}.should raise_error
|
15
|
+
end
|
16
|
+
|
17
|
+
it "from[:encoding]が:utf8、:unicode以外なら 例外が起こる" do
|
18
|
+
@from.update :carrier => :google, :encoding => :euc_jp
|
19
|
+
lambda {
|
20
|
+
E4U::Encode::Google.encode('', @from, @to)
|
21
|
+
}.should raise_error
|
22
|
+
end
|
23
|
+
|
24
|
+
it "from[:encoding]が:utf8なら :unicodeに変換される" do
|
25
|
+
@from.update :carrier => :google, :encoding => :utf8
|
26
|
+
lambda {
|
27
|
+
E4U::Encode::Google.encode('', @from, @to)
|
28
|
+
}.should change{ @from[:encoding] }.from(:utf8).to(:unicode)
|
29
|
+
end
|
30
|
+
|
31
|
+
context "from[:encoding]が:unicodeの時" do
|
32
|
+
before :all do
|
33
|
+
@from.update :encoding => :unicode
|
34
|
+
end
|
35
|
+
|
36
|
+
before :each do
|
37
|
+
@from.update :carrier => :google
|
38
|
+
end
|
39
|
+
|
40
|
+
it "to[:carrier]が:docomoならば、from[:carrier]も:docomoになる" do
|
41
|
+
@to.update :carrier => :docomo
|
42
|
+
lambda {
|
43
|
+
E4U::Encode::Google.encode('', @from, @to)
|
44
|
+
}.should change{ @from[:carrier] }.from(:google).to(:docomo)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "to[:carrier]が:kddiならば、from[:carrier]も:kddiになる" do
|
48
|
+
@to.update :carrier => :kddi
|
49
|
+
lambda {
|
50
|
+
E4U::Encode::Google.encode('', @from, @to)
|
51
|
+
}.should change{ @from[:carrier] }.from(:google).to(:kddi)
|
52
|
+
end
|
53
|
+
|
54
|
+
it "to[:carrier]が:softbankならば、from[:carrier]も:softbankになる" do
|
55
|
+
@to.update :carrier => :softbank
|
56
|
+
lambda {
|
57
|
+
E4U::Encode::Google.encode('', @from, @to)
|
58
|
+
}.should change{ @from[:carrier] }.from(:google).to(:softbank)
|
59
|
+
end
|
60
|
+
|
61
|
+
context "to[:carrier]が:googleの時" do
|
62
|
+
before :all do
|
63
|
+
@to.update :carrier => :google
|
64
|
+
end
|
65
|
+
|
66
|
+
before :each do
|
67
|
+
@from.update :encoding => :unicode
|
68
|
+
end
|
69
|
+
|
70
|
+
it "to[:encoding]が:utf8ならば、from[:encoding]も:utf8になる" do
|
71
|
+
@to.update :encoding => :utf8
|
72
|
+
lambda {
|
73
|
+
E4U::Encode::Google.encode('', @from, @to)
|
74
|
+
}.should change{ @from[:encoding] }.from(:unicode).to(:utf8)
|
75
|
+
end
|
76
|
+
|
77
|
+
it "to[:encoding]が:utf8以外ならば例外が起こる" do
|
78
|
+
@to.update :carrier => :unicode
|
79
|
+
lambda {
|
80
|
+
E4U::Encode::Google.encode('', @from, @to)
|
81
|
+
}.should raise_error
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|