e4u-encode 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +17 -0
  5. data/Rakefile +50 -0
  6. data/VERSION +1 -0
  7. data/lib/e4u/encode/docomo/cp932/docomo_unicode.rb +301 -0
  8. data/lib/e4u/encode/docomo/cp932.rb +12 -0
  9. data/lib/e4u/encode/docomo/unicode/cp932.rb +5 -0
  10. data/lib/e4u/encode/docomo/unicode/google_unicode.rb +294 -0
  11. data/lib/e4u/encode/docomo/unicode/utf8.rb +5 -0
  12. data/lib/e4u/encode/docomo/unicode.rb +34 -0
  13. data/lib/e4u/encode/docomo/utf8/docomo_unicode.rb +300 -0
  14. data/lib/e4u/encode/docomo/utf8.rb +12 -0
  15. data/lib/e4u/encode/docomo.rb +50 -0
  16. data/lib/e4u/encode/encoding.rb +25 -0
  17. data/lib/e4u/encode/google/unicode/docomo_unicode.rb +818 -0
  18. data/lib/e4u/encode/google/unicode/kddi_unicode.rb +818 -0
  19. data/lib/e4u/encode/google/unicode/softbank_unicode.rb +818 -0
  20. data/lib/e4u/encode/google/unicode/utf8.rb +5 -0
  21. data/lib/e4u/encode/google/unicode.rb +45 -0
  22. data/lib/e4u/encode/google/utf8/unicode.rb +823 -0
  23. data/lib/e4u/encode/google/utf8.rb +12 -0
  24. data/lib/e4u/encode/google.rb +47 -0
  25. data/lib/e4u/encode/kddi/cp932/kddi_unicode.rb +667 -0
  26. data/lib/e4u/encode/kddi/cp932.rb +12 -0
  27. data/lib/e4u/encode/kddi/unicode/cp932.rb +5 -0
  28. data/lib/e4u/encode/kddi/unicode/google_unicode.rb +660 -0
  29. data/lib/e4u/encode/kddi/unicode/utf8.rb +5 -0
  30. data/lib/e4u/encode/kddi/unicode.rb +34 -0
  31. data/lib/e4u/encode/kddi/utf8/kddi_unicode.rb +1313 -0
  32. data/lib/e4u/encode/kddi/utf8.rb +12 -0
  33. data/lib/e4u/encode/kddi.rb +50 -0
  34. data/lib/e4u/encode/softbank/cp932/softbank_unicode.rb +504 -0
  35. data/lib/e4u/encode/softbank/cp932.rb +32 -0
  36. data/lib/e4u/encode/softbank/unicode/cp932.rb +5 -0
  37. data/lib/e4u/encode/softbank/unicode/google_unicode.rb +497 -0
  38. data/lib/e4u/encode/softbank/unicode/utf8.rb +5 -0
  39. data/lib/e4u/encode/softbank/unicode.rb +45 -0
  40. data/lib/e4u/encode/softbank/utf8/softbank_unicode.rb +503 -0
  41. data/lib/e4u/encode/softbank/utf8.rb +12 -0
  42. data/lib/e4u/encode/softbank.rb +53 -0
  43. data/lib/e4u/encode.rb +79 -0
  44. data/spec/docomo_spec.rb +230 -0
  45. data/spec/e4u_spec.rb +173 -0
  46. data/spec/encode_spec.rb +78 -0
  47. data/spec/encoding_spec.rb +47 -0
  48. data/spec/google_spec.rb +86 -0
  49. data/spec/kddi_spec.rb +130 -0
  50. data/spec/softbank_spec.rb +147 -0
  51. data/spec/spec.opts +4 -0
  52. data/spec/spec_helper.rb +13 -0
  53. data/tasks/mk_docomo_cp932.rb +34 -0
  54. data/tasks/mk_docomo_unicode.rb +28 -0
  55. data/tasks/mk_docomo_utf8.rb +33 -0
  56. data/tasks/mk_google_unicode_docomo.rb +37 -0
  57. data/tasks/mk_google_unicode_kddi.rb +37 -0
  58. data/tasks/mk_google_unicode_softbank.rb +37 -0
  59. data/tasks/mk_google_utf8.rb +34 -0
  60. data/tasks/mk_kddi_cp932.rb +35 -0
  61. data/tasks/mk_kddi_unicode.rb +30 -0
  62. data/tasks/mk_kddi_utf8.rb +36 -0
  63. data/tasks/mk_softbank_cp932.rb +34 -0
  64. data/tasks/mk_softbank_unicode.rb +28 -0
  65. data/tasks/mk_softbank_utf8.rb +33 -0
  66. data/tasks/tables.rake +70 -0
  67. data/tasks/task_helper.rb +3 -0
  68. metadata +148 -0
@@ -0,0 +1,503 @@
1
+ module E4U
2
+ module Encode
3
+ module Softbank
4
+ end
5
+ end
6
+ end
7
+ class E4U::Encode::Softbank::Utf8
8
+ SOFTBANK_UNICODE = {
9
+ [0xE001].pack('U') => 'E001'.freeze,
10
+ [0xE002].pack('U') => 'E002'.freeze,
11
+ [0xE003].pack('U') => 'E003'.freeze,
12
+ [0xE004].pack('U') => 'E004'.freeze,
13
+ [0xE005].pack('U') => 'E005'.freeze,
14
+ [0xE006].pack('U') => 'E006'.freeze,
15
+ [0xE007].pack('U') => 'E007'.freeze,
16
+ [0xE008].pack('U') => 'E008'.freeze,
17
+ [0xE009].pack('U') => 'E009'.freeze,
18
+ [0xE00A].pack('U') => 'E00A'.freeze,
19
+ [0xE00B].pack('U') => 'E00B'.freeze,
20
+ [0xE00C].pack('U') => 'E00C'.freeze,
21
+ [0xE00D].pack('U') => 'E00D'.freeze,
22
+ [0xE00E].pack('U') => 'E00E'.freeze,
23
+ [0xE00F].pack('U') => 'E00F'.freeze,
24
+ [0xE010].pack('U') => 'E010'.freeze,
25
+ [0xE011].pack('U') => 'E011'.freeze,
26
+ [0xE012].pack('U') => 'E012'.freeze,
27
+ [0xE013].pack('U') => 'E013'.freeze,
28
+ [0xE014].pack('U') => 'E014'.freeze,
29
+ [0xE015].pack('U') => 'E015'.freeze,
30
+ [0xE016].pack('U') => 'E016'.freeze,
31
+ [0xE017].pack('U') => 'E017'.freeze,
32
+ [0xE018].pack('U') => 'E018'.freeze,
33
+ [0xE019].pack('U') => 'E019'.freeze,
34
+ [0xE01A].pack('U') => 'E01A'.freeze,
35
+ [0xE01B].pack('U') => 'E01B'.freeze,
36
+ [0xE01C].pack('U') => 'E01C'.freeze,
37
+ [0xE01D].pack('U') => 'E01D'.freeze,
38
+ [0xE01E].pack('U') => 'E01E'.freeze,
39
+ [0xE01F].pack('U') => 'E01F'.freeze,
40
+ [0xE020].pack('U') => 'E020'.freeze,
41
+ [0xE021].pack('U') => 'E021'.freeze,
42
+ [0xE022].pack('U') => 'E022'.freeze,
43
+ [0xE023].pack('U') => 'E023'.freeze,
44
+ [0xE024].pack('U') => 'E024'.freeze,
45
+ [0xE025].pack('U') => 'E025'.freeze,
46
+ [0xE026].pack('U') => 'E026'.freeze,
47
+ [0xE027].pack('U') => 'E027'.freeze,
48
+ [0xE028].pack('U') => 'E028'.freeze,
49
+ [0xE029].pack('U') => 'E029'.freeze,
50
+ [0xE02A].pack('U') => 'E02A'.freeze,
51
+ [0xE02B].pack('U') => 'E02B'.freeze,
52
+ [0xE02C].pack('U') => 'E02C'.freeze,
53
+ [0xE02D].pack('U') => 'E02D'.freeze,
54
+ [0xE02E].pack('U') => 'E02E'.freeze,
55
+ [0xE02F].pack('U') => 'E02F'.freeze,
56
+ [0xE030].pack('U') => 'E030'.freeze,
57
+ [0xE031].pack('U') => 'E031'.freeze,
58
+ [0xE032].pack('U') => 'E032'.freeze,
59
+ [0xE033].pack('U') => 'E033'.freeze,
60
+ [0xE034].pack('U') => 'E034'.freeze,
61
+ [0xE035].pack('U') => 'E035'.freeze,
62
+ [0xE036].pack('U') => 'E036'.freeze,
63
+ [0xE037].pack('U') => 'E037'.freeze,
64
+ [0xE038].pack('U') => 'E038'.freeze,
65
+ [0xE039].pack('U') => 'E039'.freeze,
66
+ [0xE03A].pack('U') => 'E03A'.freeze,
67
+ [0xE03B].pack('U') => 'E03B'.freeze,
68
+ [0xE03C].pack('U') => 'E03C'.freeze,
69
+ [0xE03D].pack('U') => 'E03D'.freeze,
70
+ [0xE03E].pack('U') => 'E03E'.freeze,
71
+ [0xE03F].pack('U') => 'E03F'.freeze,
72
+ [0xE040].pack('U') => 'E040'.freeze,
73
+ [0xE041].pack('U') => 'E041'.freeze,
74
+ [0xE042].pack('U') => 'E042'.freeze,
75
+ [0xE043].pack('U') => 'E043'.freeze,
76
+ [0xE044].pack('U') => 'E044'.freeze,
77
+ [0xE045].pack('U') => 'E045'.freeze,
78
+ [0xE046].pack('U') => 'E046'.freeze,
79
+ [0xE047].pack('U') => 'E047'.freeze,
80
+ [0xE048].pack('U') => 'E048'.freeze,
81
+ [0xE049].pack('U') => 'E049'.freeze,
82
+ [0xE04A].pack('U') => 'E04A'.freeze,
83
+ [0xE04B].pack('U') => 'E04B'.freeze,
84
+ [0xE04C].pack('U') => 'E04C'.freeze,
85
+ [0xE04D].pack('U') => 'E04D'.freeze,
86
+ [0xE04E].pack('U') => 'E04E'.freeze,
87
+ [0xE04F].pack('U') => 'E04F'.freeze,
88
+ [0xE050].pack('U') => 'E050'.freeze,
89
+ [0xE051].pack('U') => 'E051'.freeze,
90
+ [0xE052].pack('U') => 'E052'.freeze,
91
+ [0xE053].pack('U') => 'E053'.freeze,
92
+ [0xE054].pack('U') => 'E054'.freeze,
93
+ [0xE055].pack('U') => 'E055'.freeze,
94
+ [0xE056].pack('U') => 'E056'.freeze,
95
+ [0xE057].pack('U') => 'E057'.freeze,
96
+ [0xE058].pack('U') => 'E058'.freeze,
97
+ [0xE059].pack('U') => 'E059'.freeze,
98
+ [0xE05A].pack('U') => 'E05A'.freeze,
99
+ [0xE101].pack('U') => 'E101'.freeze,
100
+ [0xE102].pack('U') => 'E102'.freeze,
101
+ [0xE103].pack('U') => 'E103'.freeze,
102
+ [0xE104].pack('U') => 'E104'.freeze,
103
+ [0xE105].pack('U') => 'E105'.freeze,
104
+ [0xE106].pack('U') => 'E106'.freeze,
105
+ [0xE107].pack('U') => 'E107'.freeze,
106
+ [0xE108].pack('U') => 'E108'.freeze,
107
+ [0xE109].pack('U') => 'E109'.freeze,
108
+ [0xE10A].pack('U') => 'E10A'.freeze,
109
+ [0xE10B].pack('U') => 'E10B'.freeze,
110
+ [0xE10C].pack('U') => 'E10C'.freeze,
111
+ [0xE10D].pack('U') => 'E10D'.freeze,
112
+ [0xE10E].pack('U') => 'E10E'.freeze,
113
+ [0xE10F].pack('U') => 'E10F'.freeze,
114
+ [0xE110].pack('U') => 'E110'.freeze,
115
+ [0xE111].pack('U') => 'E111'.freeze,
116
+ [0xE112].pack('U') => 'E112'.freeze,
117
+ [0xE113].pack('U') => 'E113'.freeze,
118
+ [0xE114].pack('U') => 'E114'.freeze,
119
+ [0xE115].pack('U') => 'E115'.freeze,
120
+ [0xE116].pack('U') => 'E116'.freeze,
121
+ [0xE117].pack('U') => 'E117'.freeze,
122
+ [0xE118].pack('U') => 'E118'.freeze,
123
+ [0xE119].pack('U') => 'E119'.freeze,
124
+ [0xE11A].pack('U') => 'E11A'.freeze,
125
+ [0xE11B].pack('U') => 'E11B'.freeze,
126
+ [0xE11C].pack('U') => 'E11C'.freeze,
127
+ [0xE11D].pack('U') => 'E11D'.freeze,
128
+ [0xE11E].pack('U') => 'E11E'.freeze,
129
+ [0xE11F].pack('U') => 'E11F'.freeze,
130
+ [0xE120].pack('U') => 'E120'.freeze,
131
+ [0xE121].pack('U') => 'E121'.freeze,
132
+ [0xE122].pack('U') => 'E122'.freeze,
133
+ [0xE123].pack('U') => 'E123'.freeze,
134
+ [0xE124].pack('U') => 'E124'.freeze,
135
+ [0xE125].pack('U') => 'E125'.freeze,
136
+ [0xE126].pack('U') => 'E126'.freeze,
137
+ [0xE127].pack('U') => 'E127'.freeze,
138
+ [0xE128].pack('U') => 'E128'.freeze,
139
+ [0xE129].pack('U') => 'E129'.freeze,
140
+ [0xE12A].pack('U') => 'E12A'.freeze,
141
+ [0xE12B].pack('U') => 'E12B'.freeze,
142
+ [0xE12C].pack('U') => 'E12C'.freeze,
143
+ [0xE12D].pack('U') => 'E12D'.freeze,
144
+ [0xE12E].pack('U') => 'E12E'.freeze,
145
+ [0xE12F].pack('U') => 'E12F'.freeze,
146
+ [0xE130].pack('U') => 'E130'.freeze,
147
+ [0xE131].pack('U') => 'E131'.freeze,
148
+ [0xE132].pack('U') => 'E132'.freeze,
149
+ [0xE133].pack('U') => 'E133'.freeze,
150
+ [0xE134].pack('U') => 'E134'.freeze,
151
+ [0xE135].pack('U') => 'E135'.freeze,
152
+ [0xE136].pack('U') => 'E136'.freeze,
153
+ [0xE137].pack('U') => 'E137'.freeze,
154
+ [0xE138].pack('U') => 'E138'.freeze,
155
+ [0xE139].pack('U') => 'E139'.freeze,
156
+ [0xE13A].pack('U') => 'E13A'.freeze,
157
+ [0xE13B].pack('U') => 'E13B'.freeze,
158
+ [0xE13C].pack('U') => 'E13C'.freeze,
159
+ [0xE13D].pack('U') => 'E13D'.freeze,
160
+ [0xE13E].pack('U') => 'E13E'.freeze,
161
+ [0xE13F].pack('U') => 'E13F'.freeze,
162
+ [0xE140].pack('U') => 'E140'.freeze,
163
+ [0xE141].pack('U') => 'E141'.freeze,
164
+ [0xE142].pack('U') => 'E142'.freeze,
165
+ [0xE143].pack('U') => 'E143'.freeze,
166
+ [0xE144].pack('U') => 'E144'.freeze,
167
+ [0xE145].pack('U') => 'E145'.freeze,
168
+ [0xE146].pack('U') => 'E146'.freeze,
169
+ [0xE147].pack('U') => 'E147'.freeze,
170
+ [0xE148].pack('U') => 'E148'.freeze,
171
+ [0xE149].pack('U') => 'E149'.freeze,
172
+ [0xE14A].pack('U') => 'E14A'.freeze,
173
+ [0xE14B].pack('U') => 'E14B'.freeze,
174
+ [0xE14C].pack('U') => 'E14C'.freeze,
175
+ [0xE14D].pack('U') => 'E14D'.freeze,
176
+ [0xE14E].pack('U') => 'E14E'.freeze,
177
+ [0xE14F].pack('U') => 'E14F'.freeze,
178
+ [0xE150].pack('U') => 'E150'.freeze,
179
+ [0xE151].pack('U') => 'E151'.freeze,
180
+ [0xE152].pack('U') => 'E152'.freeze,
181
+ [0xE153].pack('U') => 'E153'.freeze,
182
+ [0xE154].pack('U') => 'E154'.freeze,
183
+ [0xE155].pack('U') => 'E155'.freeze,
184
+ [0xE156].pack('U') => 'E156'.freeze,
185
+ [0xE157].pack('U') => 'E157'.freeze,
186
+ [0xE158].pack('U') => 'E158'.freeze,
187
+ [0xE159].pack('U') => 'E159'.freeze,
188
+ [0xE15A].pack('U') => 'E15A'.freeze,
189
+ [0xE201].pack('U') => 'E201'.freeze,
190
+ [0xE202].pack('U') => 'E202'.freeze,
191
+ [0xE203].pack('U') => 'E203'.freeze,
192
+ [0xE204].pack('U') => 'E204'.freeze,
193
+ [0xE205].pack('U') => 'E205'.freeze,
194
+ [0xE206].pack('U') => 'E206'.freeze,
195
+ [0xE207].pack('U') => 'E207'.freeze,
196
+ [0xE208].pack('U') => 'E208'.freeze,
197
+ [0xE209].pack('U') => 'E209'.freeze,
198
+ [0xE20A].pack('U') => 'E20A'.freeze,
199
+ [0xE20B].pack('U') => 'E20B'.freeze,
200
+ [0xE20C].pack('U') => 'E20C'.freeze,
201
+ [0xE20D].pack('U') => 'E20D'.freeze,
202
+ [0xE20E].pack('U') => 'E20E'.freeze,
203
+ [0xE20F].pack('U') => 'E20F'.freeze,
204
+ [0xE210].pack('U') => 'E210'.freeze,
205
+ [0xE211].pack('U') => 'E211'.freeze,
206
+ [0xE212].pack('U') => 'E212'.freeze,
207
+ [0xE213].pack('U') => 'E213'.freeze,
208
+ [0xE214].pack('U') => 'E214'.freeze,
209
+ [0xE215].pack('U') => 'E215'.freeze,
210
+ [0xE216].pack('U') => 'E216'.freeze,
211
+ [0xE217].pack('U') => 'E217'.freeze,
212
+ [0xE218].pack('U') => 'E218'.freeze,
213
+ [0xE219].pack('U') => 'E219'.freeze,
214
+ [0xE21A].pack('U') => 'E21A'.freeze,
215
+ [0xE21B].pack('U') => 'E21B'.freeze,
216
+ [0xE21C].pack('U') => 'E21C'.freeze,
217
+ [0xE21D].pack('U') => 'E21D'.freeze,
218
+ [0xE21E].pack('U') => 'E21E'.freeze,
219
+ [0xE21F].pack('U') => 'E21F'.freeze,
220
+ [0xE220].pack('U') => 'E220'.freeze,
221
+ [0xE221].pack('U') => 'E221'.freeze,
222
+ [0xE222].pack('U') => 'E222'.freeze,
223
+ [0xE223].pack('U') => 'E223'.freeze,
224
+ [0xE224].pack('U') => 'E224'.freeze,
225
+ [0xE225].pack('U') => 'E225'.freeze,
226
+ [0xE226].pack('U') => 'E226'.freeze,
227
+ [0xE227].pack('U') => 'E227'.freeze,
228
+ [0xE228].pack('U') => 'E228'.freeze,
229
+ [0xE229].pack('U') => 'E229'.freeze,
230
+ [0xE22A].pack('U') => 'E22A'.freeze,
231
+ [0xE22B].pack('U') => 'E22B'.freeze,
232
+ [0xE22C].pack('U') => 'E22C'.freeze,
233
+ [0xE22D].pack('U') => 'E22D'.freeze,
234
+ [0xE22E].pack('U') => 'E22E'.freeze,
235
+ [0xE22F].pack('U') => 'E22F'.freeze,
236
+ [0xE230].pack('U') => 'E230'.freeze,
237
+ [0xE231].pack('U') => 'E231'.freeze,
238
+ [0xE232].pack('U') => 'E232'.freeze,
239
+ [0xE233].pack('U') => 'E233'.freeze,
240
+ [0xE234].pack('U') => 'E234'.freeze,
241
+ [0xE235].pack('U') => 'E235'.freeze,
242
+ [0xE236].pack('U') => 'E236'.freeze,
243
+ [0xE237].pack('U') => 'E237'.freeze,
244
+ [0xE238].pack('U') => 'E238'.freeze,
245
+ [0xE239].pack('U') => 'E239'.freeze,
246
+ [0xE23A].pack('U') => 'E23A'.freeze,
247
+ [0xE23B].pack('U') => 'E23B'.freeze,
248
+ [0xE23C].pack('U') => 'E23C'.freeze,
249
+ [0xE23D].pack('U') => 'E23D'.freeze,
250
+ [0xE23E].pack('U') => 'E23E'.freeze,
251
+ [0xE23F].pack('U') => 'E23F'.freeze,
252
+ [0xE240].pack('U') => 'E240'.freeze,
253
+ [0xE241].pack('U') => 'E241'.freeze,
254
+ [0xE242].pack('U') => 'E242'.freeze,
255
+ [0xE243].pack('U') => 'E243'.freeze,
256
+ [0xE244].pack('U') => 'E244'.freeze,
257
+ [0xE245].pack('U') => 'E245'.freeze,
258
+ [0xE246].pack('U') => 'E246'.freeze,
259
+ [0xE247].pack('U') => 'E247'.freeze,
260
+ [0xE248].pack('U') => 'E248'.freeze,
261
+ [0xE249].pack('U') => 'E249'.freeze,
262
+ [0xE24A].pack('U') => 'E24A'.freeze,
263
+ [0xE24B].pack('U') => 'E24B'.freeze,
264
+ [0xE24C].pack('U') => 'E24C'.freeze,
265
+ [0xE24D].pack('U') => 'E24D'.freeze,
266
+ [0xE24E].pack('U') => 'E24E'.freeze,
267
+ [0xE24F].pack('U') => 'E24F'.freeze,
268
+ [0xE250].pack('U') => 'E250'.freeze,
269
+ [0xE251].pack('U') => 'E251'.freeze,
270
+ [0xE252].pack('U') => 'E252'.freeze,
271
+ [0xE253].pack('U') => 'E253'.freeze,
272
+ [0xE254].pack('U') => 'E254'.freeze,
273
+ [0xE255].pack('U') => 'E255'.freeze,
274
+ [0xE256].pack('U') => 'E256'.freeze,
275
+ [0xE257].pack('U') => 'E257'.freeze,
276
+ [0xE258].pack('U') => 'E258'.freeze,
277
+ [0xE259].pack('U') => 'E259'.freeze,
278
+ [0xE25A].pack('U') => 'E25A'.freeze,
279
+ [0xE301].pack('U') => 'E301'.freeze,
280
+ [0xE302].pack('U') => 'E302'.freeze,
281
+ [0xE303].pack('U') => 'E303'.freeze,
282
+ [0xE304].pack('U') => 'E304'.freeze,
283
+ [0xE305].pack('U') => 'E305'.freeze,
284
+ [0xE306].pack('U') => 'E306'.freeze,
285
+ [0xE307].pack('U') => 'E307'.freeze,
286
+ [0xE308].pack('U') => 'E308'.freeze,
287
+ [0xE309].pack('U') => 'E309'.freeze,
288
+ [0xE30A].pack('U') => 'E30A'.freeze,
289
+ [0xE30B].pack('U') => 'E30B'.freeze,
290
+ [0xE30C].pack('U') => 'E30C'.freeze,
291
+ [0xE30D].pack('U') => 'E30D'.freeze,
292
+ [0xE30E].pack('U') => 'E30E'.freeze,
293
+ [0xE30F].pack('U') => 'E30F'.freeze,
294
+ [0xE310].pack('U') => 'E310'.freeze,
295
+ [0xE311].pack('U') => 'E311'.freeze,
296
+ [0xE312].pack('U') => 'E312'.freeze,
297
+ [0xE313].pack('U') => 'E313'.freeze,
298
+ [0xE314].pack('U') => 'E314'.freeze,
299
+ [0xE315].pack('U') => 'E315'.freeze,
300
+ [0xE316].pack('U') => 'E316'.freeze,
301
+ [0xE317].pack('U') => 'E317'.freeze,
302
+ [0xE318].pack('U') => 'E318'.freeze,
303
+ [0xE319].pack('U') => 'E319'.freeze,
304
+ [0xE31A].pack('U') => 'E31A'.freeze,
305
+ [0xE31B].pack('U') => 'E31B'.freeze,
306
+ [0xE31C].pack('U') => 'E31C'.freeze,
307
+ [0xE31D].pack('U') => 'E31D'.freeze,
308
+ [0xE31E].pack('U') => 'E31E'.freeze,
309
+ [0xE31F].pack('U') => 'E31F'.freeze,
310
+ [0xE320].pack('U') => 'E320'.freeze,
311
+ [0xE321].pack('U') => 'E321'.freeze,
312
+ [0xE322].pack('U') => 'E322'.freeze,
313
+ [0xE323].pack('U') => 'E323'.freeze,
314
+ [0xE324].pack('U') => 'E324'.freeze,
315
+ [0xE325].pack('U') => 'E325'.freeze,
316
+ [0xE326].pack('U') => 'E326'.freeze,
317
+ [0xE327].pack('U') => 'E327'.freeze,
318
+ [0xE328].pack('U') => 'E328'.freeze,
319
+ [0xE329].pack('U') => 'E329'.freeze,
320
+ [0xE32A].pack('U') => 'E32A'.freeze,
321
+ [0xE32B].pack('U') => 'E32B'.freeze,
322
+ [0xE32C].pack('U') => 'E32C'.freeze,
323
+ [0xE32D].pack('U') => 'E32D'.freeze,
324
+ [0xE32E].pack('U') => 'E32E'.freeze,
325
+ [0xE32F].pack('U') => 'E32F'.freeze,
326
+ [0xE330].pack('U') => 'E330'.freeze,
327
+ [0xE331].pack('U') => 'E331'.freeze,
328
+ [0xE332].pack('U') => 'E332'.freeze,
329
+ [0xE333].pack('U') => 'E333'.freeze,
330
+ [0xE334].pack('U') => 'E334'.freeze,
331
+ [0xE335].pack('U') => 'E335'.freeze,
332
+ [0xE336].pack('U') => 'E336'.freeze,
333
+ [0xE337].pack('U') => 'E337'.freeze,
334
+ [0xE338].pack('U') => 'E338'.freeze,
335
+ [0xE339].pack('U') => 'E339'.freeze,
336
+ [0xE33A].pack('U') => 'E33A'.freeze,
337
+ [0xE33B].pack('U') => 'E33B'.freeze,
338
+ [0xE33C].pack('U') => 'E33C'.freeze,
339
+ [0xE33D].pack('U') => 'E33D'.freeze,
340
+ [0xE33E].pack('U') => 'E33E'.freeze,
341
+ [0xE33F].pack('U') => 'E33F'.freeze,
342
+ [0xE340].pack('U') => 'E340'.freeze,
343
+ [0xE341].pack('U') => 'E341'.freeze,
344
+ [0xE342].pack('U') => 'E342'.freeze,
345
+ [0xE343].pack('U') => 'E343'.freeze,
346
+ [0xE344].pack('U') => 'E344'.freeze,
347
+ [0xE345].pack('U') => 'E345'.freeze,
348
+ [0xE346].pack('U') => 'E346'.freeze,
349
+ [0xE347].pack('U') => 'E347'.freeze,
350
+ [0xE348].pack('U') => 'E348'.freeze,
351
+ [0xE349].pack('U') => 'E349'.freeze,
352
+ [0xE34A].pack('U') => 'E34A'.freeze,
353
+ [0xE34B].pack('U') => 'E34B'.freeze,
354
+ [0xE34C].pack('U') => 'E34C'.freeze,
355
+ [0xE34D].pack('U') => 'E34D'.freeze,
356
+ [0xE401].pack('U') => 'E401'.freeze,
357
+ [0xE402].pack('U') => 'E402'.freeze,
358
+ [0xE403].pack('U') => 'E403'.freeze,
359
+ [0xE404].pack('U') => 'E404'.freeze,
360
+ [0xE405].pack('U') => 'E405'.freeze,
361
+ [0xE406].pack('U') => 'E406'.freeze,
362
+ [0xE407].pack('U') => 'E407'.freeze,
363
+ [0xE408].pack('U') => 'E408'.freeze,
364
+ [0xE409].pack('U') => 'E409'.freeze,
365
+ [0xE40A].pack('U') => 'E40A'.freeze,
366
+ [0xE40B].pack('U') => 'E40B'.freeze,
367
+ [0xE40C].pack('U') => 'E40C'.freeze,
368
+ [0xE40D].pack('U') => 'E40D'.freeze,
369
+ [0xE40E].pack('U') => 'E40E'.freeze,
370
+ [0xE40F].pack('U') => 'E40F'.freeze,
371
+ [0xE410].pack('U') => 'E410'.freeze,
372
+ [0xE411].pack('U') => 'E411'.freeze,
373
+ [0xE412].pack('U') => 'E412'.freeze,
374
+ [0xE413].pack('U') => 'E413'.freeze,
375
+ [0xE414].pack('U') => 'E414'.freeze,
376
+ [0xE415].pack('U') => 'E415'.freeze,
377
+ [0xE416].pack('U') => 'E416'.freeze,
378
+ [0xE417].pack('U') => 'E417'.freeze,
379
+ [0xE418].pack('U') => 'E418'.freeze,
380
+ [0xE419].pack('U') => 'E419'.freeze,
381
+ [0xE41A].pack('U') => 'E41A'.freeze,
382
+ [0xE41B].pack('U') => 'E41B'.freeze,
383
+ [0xE41C].pack('U') => 'E41C'.freeze,
384
+ [0xE41D].pack('U') => 'E41D'.freeze,
385
+ [0xE41E].pack('U') => 'E41E'.freeze,
386
+ [0xE41F].pack('U') => 'E41F'.freeze,
387
+ [0xE420].pack('U') => 'E420'.freeze,
388
+ [0xE421].pack('U') => 'E421'.freeze,
389
+ [0xE422].pack('U') => 'E422'.freeze,
390
+ [0xE423].pack('U') => 'E423'.freeze,
391
+ [0xE424].pack('U') => 'E424'.freeze,
392
+ [0xE425].pack('U') => 'E425'.freeze,
393
+ [0xE426].pack('U') => 'E426'.freeze,
394
+ [0xE427].pack('U') => 'E427'.freeze,
395
+ [0xE428].pack('U') => 'E428'.freeze,
396
+ [0xE429].pack('U') => 'E429'.freeze,
397
+ [0xE42A].pack('U') => 'E42A'.freeze,
398
+ [0xE42B].pack('U') => 'E42B'.freeze,
399
+ [0xE42C].pack('U') => 'E42C'.freeze,
400
+ [0xE42D].pack('U') => 'E42D'.freeze,
401
+ [0xE42E].pack('U') => 'E42E'.freeze,
402
+ [0xE42F].pack('U') => 'E42F'.freeze,
403
+ [0xE430].pack('U') => 'E430'.freeze,
404
+ [0xE431].pack('U') => 'E431'.freeze,
405
+ [0xE432].pack('U') => 'E432'.freeze,
406
+ [0xE433].pack('U') => 'E433'.freeze,
407
+ [0xE434].pack('U') => 'E434'.freeze,
408
+ [0xE435].pack('U') => 'E435'.freeze,
409
+ [0xE436].pack('U') => 'E436'.freeze,
410
+ [0xE437].pack('U') => 'E437'.freeze,
411
+ [0xE438].pack('U') => 'E438'.freeze,
412
+ [0xE439].pack('U') => 'E439'.freeze,
413
+ [0xE43A].pack('U') => 'E43A'.freeze,
414
+ [0xE43B].pack('U') => 'E43B'.freeze,
415
+ [0xE43C].pack('U') => 'E43C'.freeze,
416
+ [0xE43D].pack('U') => 'E43D'.freeze,
417
+ [0xE43E].pack('U') => 'E43E'.freeze,
418
+ [0xE43F].pack('U') => 'E43F'.freeze,
419
+ [0xE440].pack('U') => 'E440'.freeze,
420
+ [0xE441].pack('U') => 'E441'.freeze,
421
+ [0xE442].pack('U') => 'E442'.freeze,
422
+ [0xE443].pack('U') => 'E443'.freeze,
423
+ [0xE444].pack('U') => 'E444'.freeze,
424
+ [0xE445].pack('U') => 'E445'.freeze,
425
+ [0xE446].pack('U') => 'E446'.freeze,
426
+ [0xE447].pack('U') => 'E447'.freeze,
427
+ [0xE448].pack('U') => 'E448'.freeze,
428
+ [0xE449].pack('U') => 'E449'.freeze,
429
+ [0xE44A].pack('U') => 'E44A'.freeze,
430
+ [0xE44B].pack('U') => 'E44B'.freeze,
431
+ [0xE44C].pack('U') => 'E44C'.freeze,
432
+ [0xE501].pack('U') => 'E501'.freeze,
433
+ [0xE502].pack('U') => 'E502'.freeze,
434
+ [0xE503].pack('U') => 'E503'.freeze,
435
+ [0xE504].pack('U') => 'E504'.freeze,
436
+ [0xE505].pack('U') => 'E505'.freeze,
437
+ [0xE506].pack('U') => 'E506'.freeze,
438
+ [0xE507].pack('U') => 'E507'.freeze,
439
+ [0xE508].pack('U') => 'E508'.freeze,
440
+ [0xE509].pack('U') => 'E509'.freeze,
441
+ [0xE50A].pack('U') => 'E50A'.freeze,
442
+ [0xE50B].pack('U') => 'E50B'.freeze,
443
+ [0xE50C].pack('U') => 'E50C'.freeze,
444
+ [0xE50D].pack('U') => 'E50D'.freeze,
445
+ [0xE50E].pack('U') => 'E50E'.freeze,
446
+ [0xE50F].pack('U') => 'E50F'.freeze,
447
+ [0xE510].pack('U') => 'E510'.freeze,
448
+ [0xE511].pack('U') => 'E511'.freeze,
449
+ [0xE512].pack('U') => 'E512'.freeze,
450
+ [0xE513].pack('U') => 'E513'.freeze,
451
+ [0xE514].pack('U') => 'E514'.freeze,
452
+ [0xE515].pack('U') => 'E515'.freeze,
453
+ [0xE516].pack('U') => 'E516'.freeze,
454
+ [0xE517].pack('U') => 'E517'.freeze,
455
+ [0xE518].pack('U') => 'E518'.freeze,
456
+ [0xE519].pack('U') => 'E519'.freeze,
457
+ [0xE51A].pack('U') => 'E51A'.freeze,
458
+ [0xE51B].pack('U') => 'E51B'.freeze,
459
+ [0xE51C].pack('U') => 'E51C'.freeze,
460
+ [0xE51D].pack('U') => 'E51D'.freeze,
461
+ [0xE51E].pack('U') => 'E51E'.freeze,
462
+ [0xE51F].pack('U') => 'E51F'.freeze,
463
+ [0xE520].pack('U') => 'E520'.freeze,
464
+ [0xE521].pack('U') => 'E521'.freeze,
465
+ [0xE522].pack('U') => 'E522'.freeze,
466
+ [0xE523].pack('U') => 'E523'.freeze,
467
+ [0xE524].pack('U') => 'E524'.freeze,
468
+ [0xE525].pack('U') => 'E525'.freeze,
469
+ [0xE526].pack('U') => 'E526'.freeze,
470
+ [0xE527].pack('U') => 'E527'.freeze,
471
+ [0xE528].pack('U') => 'E528'.freeze,
472
+ [0xE529].pack('U') => 'E529'.freeze,
473
+ [0xE52A].pack('U') => 'E52A'.freeze,
474
+ [0xE52B].pack('U') => 'E52B'.freeze,
475
+ [0xE52C].pack('U') => 'E52C'.freeze,
476
+ [0xE52D].pack('U') => 'E52D'.freeze,
477
+ [0xE52E].pack('U') => 'E52E'.freeze,
478
+ [0xE52F].pack('U') => 'E52F'.freeze,
479
+ [0xE530].pack('U') => 'E530'.freeze,
480
+ [0xE531].pack('U') => 'E531'.freeze,
481
+ [0xE532].pack('U') => 'E532'.freeze,
482
+ [0xE533].pack('U') => 'E533'.freeze,
483
+ [0xE534].pack('U') => 'E534'.freeze,
484
+ [0xE535].pack('U') => 'E535'.freeze,
485
+ [0xE536].pack('U') => 'E536'.freeze,
486
+ [0xE537].pack('U') => 'E537'.freeze,
487
+ [0xE538].pack('U') => 'E538'.freeze,
488
+ [0xE539].pack('U') => 'E539'.freeze,
489
+ [0xE53A].pack('U') => 'E53A'.freeze,
490
+ [0xE53B].pack('U') => 'E53B'.freeze,
491
+ [0xE53C].pack('U') => 'E53C'.freeze,
492
+ [0xE53D].pack('U') => 'E53D'.freeze,
493
+ [0xE53E].pack('U') => 'E53E'.freeze,
494
+ }.freeze
495
+
496
+ SOFTBANK_UNICODE_REGEXP = Regexp.union(*SOFTBANK_UNICODE.keys.map(&((RUBY_VERSION < '1.9.1') ?
497
+ (lambda { |e|
498
+ Regexp.new(Regexp.escape(e,'u'),nil,'u')
499
+ }) :
500
+ (lambda { |e|
501
+ Regexp.new(Regexp.escape(e))
502
+ })))).freeze
503
+ end
@@ -0,0 +1,12 @@
1
+ class E4U::Encode::Softbank::Utf8
2
+ %w(SOFTBANK_UNICODE SOFTBANK_UNICODE_REGEXP).each do |konst|
3
+ autoload konst, 'e4u/encode/softbank/utf8/softbank_unicode'
4
+ end
5
+
6
+ def self.to_softbank_unicode str
7
+ puts "softbank_utf8_to_softbank_unicode" if $DEBUG
8
+ str.gsub(SOFTBANK_UNICODE_REGEXP) do |matched|
9
+ "&#x#{SOFTBANK_UNICODE[matched]};"
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,53 @@
1
+ module E4U
2
+ module Encode
3
+ module Softbank
4
+ autoload :Cp932, 'e4u/encode/softbank/cp932'
5
+ autoload :Utf8, 'e4u/encode/softbank/utf8'
6
+ autoload :Unicode, 'e4u/encode/softbank/unicode'
7
+
8
+ def self.encode str, from, to
9
+ raise unless from[:carrier] == :softbank
10
+ if to[:carrier] == :softbank
11
+ encode_carrier(str, from, to)
12
+ else
13
+ encode_encoding(str, from, to)
14
+ end
15
+ end
16
+
17
+ private
18
+
19
+ def self.encode_carrier str, from, to
20
+ return encode_encoding(str, from, to) if from[:encoding] != :unicode
21
+ case to[:encoding]
22
+ when :sjis
23
+ from[:encoding] = :sjis
24
+ Unicode.to_cp932(Encoding.to_cp932(str))
25
+ when :webcode
26
+ from[:encoding] = :webcode
27
+ Unicode.to_webcode(Encoding.to_cp932(str))
28
+ when :utf8
29
+ from[:encoding] = :utf8
30
+ Unicode.to_utf8(str)
31
+ else
32
+ raise
33
+ end
34
+ end
35
+
36
+ def self.encode_encoding str, from, to
37
+ case from[:encoding]
38
+ when :sjis
39
+ from[:encoding] = :unicode
40
+ Encoding.to_utf8(Cp932.to_softbank_unicode(str))
41
+ when :utf8
42
+ from[:encoding] = :unicode
43
+ Utf8.to_softbank_unicode(str)
44
+ when :unicode
45
+ from[:carrier] = :google
46
+ Unicode.to_google_unicode(str)
47
+ else
48
+ raise
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
data/lib/e4u/encode.rb ADDED
@@ -0,0 +1,79 @@
1
+ require 'e4u/encode/encoding'
2
+ require 'e4u/encode/docomo'
3
+ require 'e4u/encode/google'
4
+ require 'e4u/encode/kddi'
5
+ require 'e4u/encode/softbank'
6
+
7
+ module E4U
8
+ def self.encode str, *args
9
+ Encode.convert str, *args
10
+ end
11
+
12
+ module Encode
13
+ def self.convert str, *args
14
+ return nil unless str
15
+ return str if args.size == 0
16
+ raise ArgumentError if args.size > 2
17
+ from, to = parse_options(*args)
18
+ convert_(str, from, to)
19
+ end
20
+
21
+ private
22
+
23
+ CARRIERS = [:docomo, :kddi, :softbank, :google,].freeze
24
+ ENCODINGS = [:sjis, :utf8, :unicode, :webcode].freeze
25
+
26
+ def self.parse_options *args
27
+ raise ArgumentError unless (1..2).include? args.size
28
+
29
+ option = args.first
30
+ if args.size > 1
31
+ lonely_option = option.is_a?(::Hash) ? args.pop : args.shift
32
+ option = args.first.update(lonely_option => lonely_option)
33
+ end
34
+
35
+ unless option.is_a? ::Hash
36
+ option = { option => option }
37
+ end
38
+
39
+ from, to = {}, {}
40
+
41
+ option.each do |k, v|
42
+ if CARRIERS.include?(k)
43
+ from[:carrier] = k
44
+ to[:carrier] = v
45
+ next
46
+ end
47
+ if ENCODINGS.include?(k)
48
+ from[:encoding] = k
49
+ to[:encoding] = v
50
+ next
51
+ end
52
+ raise ArgumentError
53
+ end
54
+
55
+ [from, to].each do |e|
56
+ raise ArgumentError unless e.has_key? :carrier
57
+ raise ArgumentError unless e.has_key? :encoding
58
+ end
59
+ end
60
+
61
+ def self.convert_ str, from, to
62
+ return str if from == to
63
+ str = str.dup
64
+ case from[:carrier]
65
+ when :docomo
66
+ str = DoCoMo.encode(str, from, to)
67
+ when :google
68
+ str = Google.encode(str, from, to)
69
+ when :kddi
70
+ str = KDDI.encode(str, from, to)
71
+ when :softbank
72
+ str = Softbank.encode(str, from, to)
73
+ else
74
+ raise
75
+ end
76
+ convert_(str, from, to)
77
+ end
78
+ end
79
+ end