egalite 0.0.7 → 1.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.
Files changed (93) hide show
  1. data/README.md +19 -0
  2. data/lib/egalite/version.rb +1 -1
  3. data/lib/egalite.rb +11 -2
  4. data/test/test_auth.rb +1 -2
  5. data/test/test_blank.rb +2 -3
  6. data/test/test_errorconsole.rb +5 -5
  7. data/test/test_keitai.rb +2 -2
  8. data/test/test_m17n.rb +1 -3
  9. data/test/test_template.rb +11 -0
  10. metadata +4 -87
  11. data/auth/basic.rb +0 -32
  12. data/blank.rb +0 -53
  13. data/egalite.rb +0 -742
  14. data/errorconsole.rb +0 -77
  15. data/helper.rb +0 -251
  16. data/keitai/keitai.rb +0 -107
  17. data/keitai/ketai.rb +0 -11
  18. data/keitai/rack/ketai/carrier/abstract.rb +0 -131
  19. data/keitai/rack/ketai/carrier/au.rb +0 -78
  20. data/keitai/rack/ketai/carrier/docomo.rb +0 -80
  21. data/keitai/rack/ketai/carrier/emoji/ausjisstrtoemojiid.rb +0 -1391
  22. data/keitai/rack/ketai/carrier/emoji/docomosjisstrtoemojiid.rb +0 -759
  23. data/keitai/rack/ketai/carrier/emoji/emojidata.rb +0 -836
  24. data/keitai/rack/ketai/carrier/emoji/softbankutf8strtoemojiid.rb +0 -1119
  25. data/keitai/rack/ketai/carrier/emoji/softbankwebcodetoutf8str.rb +0 -499
  26. data/keitai/rack/ketai/carrier/iphone.rb +0 -8
  27. data/keitai/rack/ketai/carrier/softbank.rb +0 -82
  28. data/keitai/rack/ketai/carrier.rb +0 -17
  29. data/keitai/rack/ketai/middleware.rb +0 -24
  30. data/m17n.rb +0 -193
  31. data/rack/auth/abstract/handler.rb +0 -37
  32. data/rack/auth/abstract/request.rb +0 -37
  33. data/rack/auth/basic.rb +0 -58
  34. data/rack/auth/digest/md5.rb +0 -124
  35. data/rack/auth/digest/nonce.rb +0 -51
  36. data/rack/auth/digest/params.rb +0 -55
  37. data/rack/auth/digest/request.rb +0 -40
  38. data/rack/builder.rb +0 -80
  39. data/rack/cascade.rb +0 -41
  40. data/rack/chunked.rb +0 -49
  41. data/rack/commonlogger.rb +0 -49
  42. data/rack/conditionalget.rb +0 -47
  43. data/rack/config.rb +0 -15
  44. data/rack/content_length.rb +0 -29
  45. data/rack/content_type.rb +0 -23
  46. data/rack/deflater.rb +0 -96
  47. data/rack/directory.rb +0 -157
  48. data/rack/etag.rb +0 -32
  49. data/rack/file.rb +0 -92
  50. data/rack/handler/cgi.rb +0 -62
  51. data/rack/handler/evented_mongrel.rb +0 -8
  52. data/rack/handler/fastcgi.rb +0 -89
  53. data/rack/handler/lsws.rb +0 -63
  54. data/rack/handler/mongrel.rb +0 -90
  55. data/rack/handler/scgi.rb +0 -59
  56. data/rack/handler/swiftiplied_mongrel.rb +0 -8
  57. data/rack/handler/thin.rb +0 -18
  58. data/rack/handler/webrick.rb +0 -73
  59. data/rack/handler.rb +0 -88
  60. data/rack/head.rb +0 -19
  61. data/rack/lint.rb +0 -567
  62. data/rack/lobster.rb +0 -65
  63. data/rack/lock.rb +0 -16
  64. data/rack/logger.rb +0 -20
  65. data/rack/methodoverride.rb +0 -27
  66. data/rack/mime.rb +0 -208
  67. data/rack/mock.rb +0 -190
  68. data/rack/nulllogger.rb +0 -18
  69. data/rack/recursive.rb +0 -61
  70. data/rack/reloader.rb +0 -109
  71. data/rack/request.rb +0 -273
  72. data/rack/response.rb +0 -150
  73. data/rack/rewindable_input.rb +0 -103
  74. data/rack/runtime.rb +0 -27
  75. data/rack/sendfile.rb +0 -144
  76. data/rack/server.rb +0 -271
  77. data/rack/session/abstract/id.rb +0 -140
  78. data/rack/session/cookie.rb +0 -90
  79. data/rack/session/memcache.rb +0 -119
  80. data/rack/session/pool.rb +0 -100
  81. data/rack/showexceptions.rb +0 -349
  82. data/rack/showstatus.rb +0 -106
  83. data/rack/static.rb +0 -38
  84. data/rack/urlmap.rb +0 -55
  85. data/rack/utils.rb +0 -662
  86. data/rack.rb +0 -81
  87. data/route.rb +0 -231
  88. data/sendmail.rb +0 -222
  89. data/sequel_helper.rb +0 -20
  90. data/session.rb +0 -132
  91. data/stringify_hash.rb +0 -63
  92. data/support.rb +0 -35
  93. data/template.rb +0 -287
@@ -1,499 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- # SoftBankウェブコードとSoftbank-UTF8バイナリとのマッピング
4
- # 参考 http://creation.mb.softbank.jp/web/web_pic_06.html
5
-
6
- # format("0x%03X", Rack::Ketai::Carrier::Softbank::Filter::WEBCODE_TO_EMOJI['G!'])
7
- # => [0xE001]].pack('U*') (男の子)
8
-
9
- module Rack
10
- module Ketai
11
- module Carrier
12
- class Softbank
13
- class Filter
14
- WEBCODE_TO_EMOJI = {
15
- 'G!' => [0xE001].pack('U*'),
16
- 'G"' => [0xE002].pack('U*'),
17
- 'G#' => [0xE003].pack('U*'),
18
- 'G$' => [0xE004].pack('U*'),
19
- 'G%' => [0xE005].pack('U*'),
20
- 'G&' => [0xE006].pack('U*'),
21
- 'G\'' => [0xE007].pack('U*'),
22
- 'G(' => [0xE008].pack('U*'),
23
- 'G)' => [0xE009].pack('U*'),
24
- 'G*' => [0xE00A].pack('U*'),
25
- 'G+' => [0xE00B].pack('U*'),
26
- 'G,' => [0xE00C].pack('U*'),
27
- 'G-' => [0xE00D].pack('U*'),
28
- 'G.' => [0xE00E].pack('U*'),
29
- 'G/' => [0xE00F].pack('U*'),
30
- 'G0' => [0xE010].pack('U*'),
31
- 'G1' => [0xE011].pack('U*'),
32
- 'G2' => [0xE012].pack('U*'),
33
- 'G3' => [0xE013].pack('U*'),
34
- 'G4' => [0xE014].pack('U*'),
35
- 'G5' => [0xE015].pack('U*'),
36
- 'G6' => [0xE016].pack('U*'),
37
- 'G7' => [0xE017].pack('U*'),
38
- 'G8' => [0xE018].pack('U*'),
39
- 'G9' => [0xE019].pack('U*'),
40
- 'G:' => [0xE01A].pack('U*'),
41
- 'G;' => [0xE01B].pack('U*'),
42
- 'G<' => [0xE01C].pack('U*'),
43
- 'G=' => [0xE01D].pack('U*'),
44
- 'G>' => [0xE01E].pack('U*'),
45
- 'G?' => [0xE01F].pack('U*'),
46
- 'G@' => [0xE020].pack('U*'),
47
- 'GA' => [0xE021].pack('U*'),
48
- 'GB' => [0xE022].pack('U*'),
49
- 'GC' => [0xE023].pack('U*'),
50
- 'GD' => [0xE024].pack('U*'),
51
- 'GE' => [0xE025].pack('U*'),
52
- 'GF' => [0xE026].pack('U*'),
53
- 'GG' => [0xE027].pack('U*'),
54
- 'GH' => [0xE028].pack('U*'),
55
- 'GI' => [0xE029].pack('U*'),
56
- 'GJ' => [0xE02A].pack('U*'),
57
- 'GK' => [0xE02B].pack('U*'),
58
- 'GL' => [0xE02C].pack('U*'),
59
- 'GM' => [0xE02D].pack('U*'),
60
- 'GN' => [0xE02E].pack('U*'),
61
- 'GO' => [0xE02F].pack('U*'),
62
- 'GP' => [0xE030].pack('U*'),
63
- 'GQ' => [0xE031].pack('U*'),
64
- 'GR' => [0xE032].pack('U*'),
65
- 'GS' => [0xE033].pack('U*'),
66
- 'GT' => [0xE034].pack('U*'),
67
- 'GU' => [0xE035].pack('U*'),
68
- 'GV' => [0xE036].pack('U*'),
69
- 'GW' => [0xE037].pack('U*'),
70
- 'GX' => [0xE038].pack('U*'),
71
- 'GY' => [0xE039].pack('U*'),
72
- 'GZ' => [0xE03A].pack('U*'),
73
- 'G[' => [0xE03B].pack('U*'),
74
- 'G\\' => [0xE03C].pack('U*'),
75
- 'G]' => [0xE03D].pack('U*'),
76
- 'G^' => [0xE03E].pack('U*'),
77
- 'G_' => [0xE03F].pack('U*'),
78
- 'G`' => [0xE040].pack('U*'),
79
- 'Ga' => [0xE041].pack('U*'),
80
- 'Gb' => [0xE042].pack('U*'),
81
- 'Gc' => [0xE043].pack('U*'),
82
- 'Gd' => [0xE044].pack('U*'),
83
- 'Ge' => [0xE045].pack('U*'),
84
- 'Gf' => [0xE046].pack('U*'),
85
- 'Gg' => [0xE047].pack('U*'),
86
- 'Gh' => [0xE048].pack('U*'),
87
- 'Gi' => [0xE049].pack('U*'),
88
- 'Gj' => [0xE04A].pack('U*'),
89
- 'Gk' => [0xE04B].pack('U*'),
90
- 'Gl' => [0xE04C].pack('U*'),
91
- 'Gm' => [0xE04D].pack('U*'),
92
- 'Gn' => [0xE04E].pack('U*'),
93
- 'Go' => [0xE04F].pack('U*'),
94
- 'Gp' => [0xE050].pack('U*'),
95
- 'Gq' => [0xE051].pack('U*'),
96
- 'Gr' => [0xE052].pack('U*'),
97
- 'Gs' => [0xE053].pack('U*'),
98
- 'Gt' => [0xE054].pack('U*'),
99
- 'Gu' => [0xE055].pack('U*'),
100
- 'Gv' => [0xE056].pack('U*'),
101
- 'Gw' => [0xE057].pack('U*'),
102
- 'Gx' => [0xE058].pack('U*'),
103
- 'Gy' => [0xE059].pack('U*'),
104
- 'Gz' => [0xE05A].pack('U*'),
105
- 'E!' => [0xE101].pack('U*'),
106
- 'E"' => [0xE102].pack('U*'),
107
- 'E#' => [0xE103].pack('U*'),
108
- 'E$' => [0xE104].pack('U*'),
109
- 'E%' => [0xE105].pack('U*'),
110
- 'E&' => [0xE106].pack('U*'),
111
- 'E\'' => [0xE107].pack('U*'),
112
- 'E(' => [0xE108].pack('U*'),
113
- 'E)' => [0xE109].pack('U*'),
114
- 'E*' => [0xE10A].pack('U*'),
115
- 'E+' => [0xE10B].pack('U*'),
116
- 'E,' => [0xE10C].pack('U*'),
117
- 'E-' => [0xE10D].pack('U*'),
118
- 'E.' => [0xE10E].pack('U*'),
119
- 'E/' => [0xE10F].pack('U*'),
120
- 'E0' => [0xE110].pack('U*'),
121
- 'E1' => [0xE111].pack('U*'),
122
- 'E2' => [0xE112].pack('U*'),
123
- 'E3' => [0xE113].pack('U*'),
124
- 'E4' => [0xE114].pack('U*'),
125
- 'E5' => [0xE115].pack('U*'),
126
- 'E6' => [0xE116].pack('U*'),
127
- 'E7' => [0xE117].pack('U*'),
128
- 'E8' => [0xE118].pack('U*'),
129
- 'E9' => [0xE119].pack('U*'),
130
- 'E:' => [0xE11A].pack('U*'),
131
- 'E;' => [0xE11B].pack('U*'),
132
- 'E<' => [0xE11C].pack('U*'),
133
- 'E=' => [0xE11D].pack('U*'),
134
- 'E>' => [0xE11E].pack('U*'),
135
- 'E?' => [0xE11F].pack('U*'),
136
- 'E@' => [0xE120].pack('U*'),
137
- 'EA' => [0xE121].pack('U*'),
138
- 'EB' => [0xE122].pack('U*'),
139
- 'EC' => [0xE123].pack('U*'),
140
- 'ED' => [0xE124].pack('U*'),
141
- 'EE' => [0xE125].pack('U*'),
142
- 'EF' => [0xE126].pack('U*'),
143
- 'EG' => [0xE127].pack('U*'),
144
- 'EH' => [0xE128].pack('U*'),
145
- 'EI' => [0xE129].pack('U*'),
146
- 'EJ' => [0xE12A].pack('U*'),
147
- 'EK' => [0xE12B].pack('U*'),
148
- 'EL' => [0xE12C].pack('U*'),
149
- 'EM' => [0xE12D].pack('U*'),
150
- 'EN' => [0xE12E].pack('U*'),
151
- 'EO' => [0xE12F].pack('U*'),
152
- 'EP' => [0xE130].pack('U*'),
153
- 'EQ' => [0xE131].pack('U*'),
154
- 'ER' => [0xE132].pack('U*'),
155
- 'ES' => [0xE133].pack('U*'),
156
- 'ET' => [0xE134].pack('U*'),
157
- 'EU' => [0xE135].pack('U*'),
158
- 'EV' => [0xE136].pack('U*'),
159
- 'EW' => [0xE137].pack('U*'),
160
- 'EX' => [0xE138].pack('U*'),
161
- 'EY' => [0xE139].pack('U*'),
162
- 'EZ' => [0xE13A].pack('U*'),
163
- 'E[' => [0xE13B].pack('U*'),
164
- 'E\\' => [0xE13C].pack('U*'),
165
- 'E]' => [0xE13D].pack('U*'),
166
- 'E^' => [0xE13E].pack('U*'),
167
- 'E_' => [0xE13F].pack('U*'),
168
- 'E`' => [0xE140].pack('U*'),
169
- 'Ea' => [0xE141].pack('U*'),
170
- 'Eb' => [0xE142].pack('U*'),
171
- 'Ec' => [0xE143].pack('U*'),
172
- 'Ed' => [0xE144].pack('U*'),
173
- 'Ee' => [0xE145].pack('U*'),
174
- 'Ef' => [0xE146].pack('U*'),
175
- 'Eg' => [0xE147].pack('U*'),
176
- 'Eh' => [0xE148].pack('U*'),
177
- 'Ei' => [0xE149].pack('U*'),
178
- 'Ej' => [0xE14A].pack('U*'),
179
- 'Ek' => [0xE14B].pack('U*'),
180
- 'El' => [0xE14C].pack('U*'),
181
- 'Em' => [0xE14D].pack('U*'),
182
- 'En' => [0xE14E].pack('U*'),
183
- 'Eo' => [0xE14F].pack('U*'),
184
- 'Ep' => [0xE150].pack('U*'),
185
- 'Eq' => [0xE151].pack('U*'),
186
- 'Er' => [0xE152].pack('U*'),
187
- 'Es' => [0xE153].pack('U*'),
188
- 'Et' => [0xE154].pack('U*'),
189
- 'Eu' => [0xE155].pack('U*'),
190
- 'Ev' => [0xE156].pack('U*'),
191
- 'Ew' => [0xE157].pack('U*'),
192
- 'Ex' => [0xE158].pack('U*'),
193
- 'Ey' => [0xE159].pack('U*'),
194
- 'Ez' => [0xE15A].pack('U*'),
195
- 'F!' => [0xE201].pack('U*'),
196
- 'F"' => [0xE202].pack('U*'),
197
- 'F#' => [0xE203].pack('U*'),
198
- 'F$' => [0xE204].pack('U*'),
199
- 'F%' => [0xE205].pack('U*'),
200
- 'F&' => [0xE206].pack('U*'),
201
- 'F\'' => [0xE207].pack('U*'),
202
- 'F(' => [0xE208].pack('U*'),
203
- 'F)' => [0xE209].pack('U*'),
204
- 'F*' => [0xE20A].pack('U*'),
205
- 'F+' => [0xE20B].pack('U*'),
206
- 'F,' => [0xE20C].pack('U*'),
207
- 'F-' => [0xE20D].pack('U*'),
208
- 'F.' => [0xE20E].pack('U*'),
209
- 'F/' => [0xE20F].pack('U*'),
210
- 'F0' => [0xE210].pack('U*'),
211
- 'F1' => [0xE211].pack('U*'),
212
- 'F2' => [0xE212].pack('U*'),
213
- 'F3' => [0xE213].pack('U*'),
214
- 'F4' => [0xE214].pack('U*'),
215
- 'F5' => [0xE215].pack('U*'),
216
- 'F6' => [0xE216].pack('U*'),
217
- 'F7' => [0xE217].pack('U*'),
218
- 'F8' => [0xE218].pack('U*'),
219
- 'F9' => [0xE219].pack('U*'),
220
- 'F:' => [0xE21A].pack('U*'),
221
- 'F;' => [0xE21B].pack('U*'),
222
- 'F<' => [0xE21C].pack('U*'),
223
- 'F=' => [0xE21D].pack('U*'),
224
- 'F>' => [0xE21E].pack('U*'),
225
- 'F?' => [0xE21F].pack('U*'),
226
- 'F@' => [0xE220].pack('U*'),
227
- 'FA' => [0xE221].pack('U*'),
228
- 'FB' => [0xE222].pack('U*'),
229
- 'FC' => [0xE223].pack('U*'),
230
- 'FD' => [0xE224].pack('U*'),
231
- 'FE' => [0xE225].pack('U*'),
232
- 'FF' => [0xE226].pack('U*'),
233
- 'FG' => [0xE227].pack('U*'),
234
- 'FH' => [0xE228].pack('U*'),
235
- 'FI' => [0xE229].pack('U*'),
236
- 'FJ' => [0xE22A].pack('U*'),
237
- 'FK' => [0xE22B].pack('U*'),
238
- 'FL' => [0xE22C].pack('U*'),
239
- 'FM' => [0xE22D].pack('U*'),
240
- 'FN' => [0xE22E].pack('U*'),
241
- 'FO' => [0xE22F].pack('U*'),
242
- 'FP' => [0xE230].pack('U*'),
243
- 'FQ' => [0xE231].pack('U*'),
244
- 'FR' => [0xE232].pack('U*'),
245
- 'FS' => [0xE233].pack('U*'),
246
- 'FT' => [0xE234].pack('U*'),
247
- 'FU' => [0xE235].pack('U*'),
248
- 'FV' => [0xE236].pack('U*'),
249
- 'FW' => [0xE237].pack('U*'),
250
- 'FX' => [0xE238].pack('U*'),
251
- 'FY' => [0xE239].pack('U*'),
252
- 'FZ' => [0xE23A].pack('U*'),
253
- 'F[' => [0xE23B].pack('U*'),
254
- 'F\\' => [0xE23C].pack('U*'),
255
- 'F]' => [0xE23D].pack('U*'),
256
- 'F^' => [0xE23E].pack('U*'),
257
- 'F_' => [0xE23F].pack('U*'),
258
- 'F`' => [0xE240].pack('U*'),
259
- 'Fa' => [0xE241].pack('U*'),
260
- 'Fb' => [0xE242].pack('U*'),
261
- 'Fc' => [0xE243].pack('U*'),
262
- 'Fd' => [0xE244].pack('U*'),
263
- 'Fe' => [0xE245].pack('U*'),
264
- 'Ff' => [0xE246].pack('U*'),
265
- 'Fg' => [0xE247].pack('U*'),
266
- 'Fh' => [0xE248].pack('U*'),
267
- 'Fi' => [0xE249].pack('U*'),
268
- 'Fj' => [0xE24A].pack('U*'),
269
- 'Fk' => [0xE24B].pack('U*'),
270
- 'Fl' => [0xE24C].pack('U*'),
271
- 'Fm' => [0xE24D].pack('U*'),
272
- 'Fn' => [0xE24E].pack('U*'),
273
- 'Fo' => [0xE24F].pack('U*'),
274
- 'Fp' => [0xE250].pack('U*'),
275
- 'Fq' => [0xE251].pack('U*'),
276
- 'Fr' => [0xE252].pack('U*'),
277
- 'Fs' => [0xE253].pack('U*'),
278
- 'O!' => [0xE301].pack('U*'),
279
- 'O"' => [0xE302].pack('U*'),
280
- 'O#' => [0xE303].pack('U*'),
281
- 'O$' => [0xE304].pack('U*'),
282
- 'O%' => [0xE305].pack('U*'),
283
- 'O&' => [0xE306].pack('U*'),
284
- 'O\'' => [0xE307].pack('U*'),
285
- 'O(' => [0xE308].pack('U*'),
286
- 'O)' => [0xE309].pack('U*'),
287
- 'O*' => [0xE30A].pack('U*'),
288
- 'O+' => [0xE30B].pack('U*'),
289
- 'O,' => [0xE30C].pack('U*'),
290
- 'O-' => [0xE30D].pack('U*'),
291
- 'O.' => [0xE30E].pack('U*'),
292
- 'O/' => [0xE30F].pack('U*'),
293
- 'O0' => [0xE310].pack('U*'),
294
- 'O1' => [0xE311].pack('U*'),
295
- 'O2' => [0xE312].pack('U*'),
296
- 'O3' => [0xE313].pack('U*'),
297
- 'O4' => [0xE314].pack('U*'),
298
- 'O5' => [0xE315].pack('U*'),
299
- 'O6' => [0xE316].pack('U*'),
300
- 'O7' => [0xE317].pack('U*'),
301
- 'O8' => [0xE318].pack('U*'),
302
- 'O9' => [0xE319].pack('U*'),
303
- 'O:' => [0xE31A].pack('U*'),
304
- 'O;' => [0xE31B].pack('U*'),
305
- 'O<' => [0xE31C].pack('U*'),
306
- 'O=' => [0xE31D].pack('U*'),
307
- 'O>' => [0xE31E].pack('U*'),
308
- 'O?' => [0xE31F].pack('U*'),
309
- 'O@' => [0xE320].pack('U*'),
310
- 'OA' => [0xE321].pack('U*'),
311
- 'OB' => [0xE322].pack('U*'),
312
- 'OC' => [0xE323].pack('U*'),
313
- 'OD' => [0xE324].pack('U*'),
314
- 'OE' => [0xE325].pack('U*'),
315
- 'OF' => [0xE326].pack('U*'),
316
- 'OG' => [0xE327].pack('U*'),
317
- 'OH' => [0xE328].pack('U*'),
318
- 'OI' => [0xE329].pack('U*'),
319
- 'OJ' => [0xE32A].pack('U*'),
320
- 'OK' => [0xE32B].pack('U*'),
321
- 'OL' => [0xE32C].pack('U*'),
322
- 'OM' => [0xE32D].pack('U*'),
323
- 'ON' => [0xE32E].pack('U*'),
324
- 'OO' => [0xE32F].pack('U*'),
325
- 'OP' => [0xE330].pack('U*'),
326
- 'OQ' => [0xE331].pack('U*'),
327
- 'OR' => [0xE332].pack('U*'),
328
- 'OS' => [0xE333].pack('U*'),
329
- 'OT' => [0xE334].pack('U*'),
330
- 'OU' => [0xE335].pack('U*'),
331
- 'OV' => [0xE336].pack('U*'),
332
- 'OW' => [0xE337].pack('U*'),
333
- 'OX' => [0xE338].pack('U*'),
334
- 'OY' => [0xE339].pack('U*'),
335
- 'OZ' => [0xE33A].pack('U*'),
336
- 'O[' => [0xE33B].pack('U*'),
337
- 'O\\' => [0xE33C].pack('U*'),
338
- 'O]' => [0xE33D].pack('U*'),
339
- 'O^' => [0xE33E].pack('U*'),
340
- 'O_' => [0xE33F].pack('U*'),
341
- 'O`' => [0xE340].pack('U*'),
342
- 'Oa' => [0xE341].pack('U*'),
343
- 'Ob' => [0xE342].pack('U*'),
344
- 'Oc' => [0xE343].pack('U*'),
345
- 'Od' => [0xE344].pack('U*'),
346
- 'Oe' => [0xE345].pack('U*'),
347
- 'Of' => [0xE346].pack('U*'),
348
- 'Og' => [0xE347].pack('U*'),
349
- 'Oh' => [0xE348].pack('U*'),
350
- 'Oi' => [0xE349].pack('U*'),
351
- 'Oj' => [0xE34A].pack('U*'),
352
- 'Ok' => [0xE34B].pack('U*'),
353
- 'Ol' => [0xE34C].pack('U*'),
354
- 'Om' => [0xE34D].pack('U*'),
355
- 'P!' => [0xE401].pack('U*'),
356
- 'P"' => [0xE402].pack('U*'),
357
- 'P#' => [0xE403].pack('U*'),
358
- 'P$' => [0xE404].pack('U*'),
359
- 'P%' => [0xE405].pack('U*'),
360
- 'P&' => [0xE406].pack('U*'),
361
- 'P\'' => [0xE407].pack('U*'),
362
- 'P(' => [0xE408].pack('U*'),
363
- 'P)' => [0xE409].pack('U*'),
364
- 'P*' => [0xE40A].pack('U*'),
365
- 'P+' => [0xE40B].pack('U*'),
366
- 'P,' => [0xE40C].pack('U*'),
367
- 'P-' => [0xE40D].pack('U*'),
368
- 'P.' => [0xE40E].pack('U*'),
369
- 'P/' => [0xE40F].pack('U*'),
370
- 'P0' => [0xE410].pack('U*'),
371
- 'P1' => [0xE411].pack('U*'),
372
- 'P2' => [0xE412].pack('U*'),
373
- 'P3' => [0xE413].pack('U*'),
374
- 'P4' => [0xE414].pack('U*'),
375
- 'P5' => [0xE415].pack('U*'),
376
- 'P6' => [0xE416].pack('U*'),
377
- 'P7' => [0xE417].pack('U*'),
378
- 'P8' => [0xE418].pack('U*'),
379
- 'P9' => [0xE419].pack('U*'),
380
- 'P:' => [0xE41A].pack('U*'),
381
- 'P;' => [0xE41B].pack('U*'),
382
- 'P<' => [0xE41C].pack('U*'),
383
- 'P=' => [0xE41D].pack('U*'),
384
- 'P>' => [0xE41E].pack('U*'),
385
- 'P?' => [0xE41F].pack('U*'),
386
- 'P@' => [0xE420].pack('U*'),
387
- 'PA' => [0xE421].pack('U*'),
388
- 'PB' => [0xE422].pack('U*'),
389
- 'PC' => [0xE423].pack('U*'),
390
- 'PD' => [0xE424].pack('U*'),
391
- 'PE' => [0xE425].pack('U*'),
392
- 'PF' => [0xE426].pack('U*'),
393
- 'PG' => [0xE427].pack('U*'),
394
- 'PH' => [0xE428].pack('U*'),
395
- 'PI' => [0xE429].pack('U*'),
396
- 'PJ' => [0xE42A].pack('U*'),
397
- 'PK' => [0xE42B].pack('U*'),
398
- 'PL' => [0xE42C].pack('U*'),
399
- 'PM' => [0xE42D].pack('U*'),
400
- 'PN' => [0xE42E].pack('U*'),
401
- 'PO' => [0xE42F].pack('U*'),
402
- 'PP' => [0xE430].pack('U*'),
403
- 'PQ' => [0xE431].pack('U*'),
404
- 'PR' => [0xE432].pack('U*'),
405
- 'PS' => [0xE433].pack('U*'),
406
- 'PT' => [0xE434].pack('U*'),
407
- 'PU' => [0xE435].pack('U*'),
408
- 'PV' => [0xE436].pack('U*'),
409
- 'PW' => [0xE437].pack('U*'),
410
- 'PX' => [0xE438].pack('U*'),
411
- 'PY' => [0xE439].pack('U*'),
412
- 'PZ' => [0xE43A].pack('U*'),
413
- 'P[' => [0xE43B].pack('U*'),
414
- 'P\\' => [0xE43C].pack('U*'),
415
- 'P]' => [0xE43D].pack('U*'),
416
- 'P^' => [0xE43E].pack('U*'),
417
- 'P_' => [0xE43F].pack('U*'),
418
- 'P`' => [0xE440].pack('U*'),
419
- 'Pa' => [0xE441].pack('U*'),
420
- 'Pb' => [0xE442].pack('U*'),
421
- 'Pc' => [0xE443].pack('U*'),
422
- 'Pd' => [0xE444].pack('U*'),
423
- 'Pe' => [0xE445].pack('U*'),
424
- 'Pf' => [0xE446].pack('U*'),
425
- 'Pg' => [0xE447].pack('U*'),
426
- 'Ph' => [0xE448].pack('U*'),
427
- 'Pi' => [0xE449].pack('U*'),
428
- 'Pj' => [0xE44A].pack('U*'),
429
- 'Pk' => [0xE44B].pack('U*'),
430
- 'Pl' => [0xE44C].pack('U*'),
431
- 'Q!' => [0xE501].pack('U*'),
432
- 'Q"' => [0xE502].pack('U*'),
433
- 'Q#' => [0xE503].pack('U*'),
434
- 'Q$' => [0xE504].pack('U*'),
435
- 'Q%' => [0xE505].pack('U*'),
436
- 'Q&' => [0xE506].pack('U*'),
437
- 'Q\'' => [0xE507].pack('U*'),
438
- 'Q(' => [0xE508].pack('U*'),
439
- 'Q)' => [0xE509].pack('U*'),
440
- 'Q*' => [0xE50A].pack('U*'),
441
- 'Q+' => [0xE50B].pack('U*'),
442
- 'Q,' => [0xE50C].pack('U*'),
443
- 'Q-' => [0xE50D].pack('U*'),
444
- 'Q.' => [0xE50E].pack('U*'),
445
- 'Q/' => [0xE50F].pack('U*'),
446
- 'Q0' => [0xE510].pack('U*'),
447
- 'Q1' => [0xE511].pack('U*'),
448
- 'Q2' => [0xE512].pack('U*'),
449
- 'Q3' => [0xE513].pack('U*'),
450
- 'Q4' => [0xE514].pack('U*'),
451
- 'Q5' => [0xE515].pack('U*'),
452
- 'Q6' => [0xE516].pack('U*'),
453
- 'Q7' => [0xE517].pack('U*'),
454
- 'Q8' => [0xE518].pack('U*'),
455
- 'Q9' => [0xE519].pack('U*'),
456
- 'Q:' => [0xE51A].pack('U*'),
457
- 'Q;' => [0xE51B].pack('U*'),
458
- 'Q<' => [0xE51C].pack('U*'),
459
- 'Q=' => [0xE51D].pack('U*'),
460
- 'Q>' => [0xE51E].pack('U*'),
461
- 'Q?' => [0xE51F].pack('U*'),
462
- 'Q@' => [0xE520].pack('U*'),
463
- 'QA' => [0xE521].pack('U*'),
464
- 'QB' => [0xE522].pack('U*'),
465
- 'QC' => [0xE523].pack('U*'),
466
- 'QD' => [0xE524].pack('U*'),
467
- 'QE' => [0xE525].pack('U*'),
468
- 'QF' => [0xE526].pack('U*'),
469
- 'QG' => [0xE527].pack('U*'),
470
- 'QH' => [0xE528].pack('U*'),
471
- 'QI' => [0xE529].pack('U*'),
472
- 'QJ' => [0xE52A].pack('U*'),
473
- 'QK' => [0xE52B].pack('U*'),
474
- 'QL' => [0xE52C].pack('U*'),
475
- 'QM' => [0xE52D].pack('U*'),
476
- 'QN' => [0xE52E].pack('U*'),
477
- 'QO' => [0xE52F].pack('U*'),
478
- 'QP' => [0xE530].pack('U*'),
479
- 'QQ' => [0xE531].pack('U*'),
480
- 'QR' => [0xE532].pack('U*'),
481
- 'QS' => [0xE533].pack('U*'),
482
- 'QT' => [0xE534].pack('U*'),
483
- 'QU' => [0xE535].pack('U*'),
484
- 'QV' => [0xE536].pack('U*'),
485
- 'QW' => [0xE537].pack('U*'),
486
- }
487
-
488
- # 1.8系、1.9系 互換性維持のため
489
- if RUBY_VERSION >= '1.9.0'
490
- def EMOJI_TO_EMOJIID.index(val)
491
- key(val)
492
- end
493
- end
494
-
495
- end
496
- end
497
- end
498
- end
499
- end
@@ -1,8 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- module Rack::Ketai::Carrier
3
- class IPhone < Abstract
4
-
5
- USER_AGENT_REGEXP = /iPhone/
6
-
7
- end
8
- end
@@ -1,82 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # -*- coding: utf-8 -*-
3
- require 'scanf'
4
-
5
- module Rack::Ketai::Carrier
6
- class Softbank < Abstract
7
- # Semulator はウェブコンテンツビューアのUA
8
- USER_AGENT_REGEXP = /^(?:SoftBank|Semulator)/
9
- end
10
- end
11
-
12
- class Rack::Ketai::Carrier::Softbank
13
- class Filter < ::Rack::Ketai::Carrier::Abstract::Filter
14
-
15
- def inbound(env)
16
- # softbank UTF-8バイナリ(Unicode) -> 絵文字ID表記
17
- request = Rack::Request.new(env)
18
-
19
- request.params # 最低でも1回呼んでないと query_stringが未設定
20
-
21
- converter = lambda do |value|
22
- # まずウェブコードを変換
23
- value = value.gsub(/\x1B\$([GEFOPQ])([\x21-\x7E]+)\x0F/u) do |match|
24
- head = $1
25
- $2.split(//u).collect { |b| WEBCODE_TO_EMOJI[head+b]}
26
- end
27
-
28
- # UTF-8バイナリから絵文字IDに
29
- value.gsub(emoji_utf8_regexp) do |match|
30
- format("[e:%03X]", EMOJI_TO_EMOJIID[match])
31
- end
32
- end
33
- deep_apply(request.env["rack.request.query_hash"], &converter)
34
- deep_apply(request.env["rack.request.form_hash"], &converter)
35
-
36
- # 文字コード変換
37
- super(request.env)
38
- end
39
-
40
- def outbound(status, headers, body)
41
- status, headers, body = super
42
-
43
- return [status, headers, body] unless body[0]
44
-
45
- body = body.collect do |str|
46
- str.gsub(/\[e:([0-9A-F]{3})\]/) do |match|
47
- emojiid = $1.scanf('%X').first
48
- utf8str = EMOJIID_TO_EMOJI[emojiid]
49
- if utf8str
50
- # 絵文字があるので差替え
51
- utf8str.split(//u).collect { |b| "\x1B$"+WEBCODE_TO_EMOJI.index(b)+"\x0F" }.join("")
52
- else
53
- # 絵文字がないので代替文字列
54
- emoji_data = EMOJI_DATA[emojiid]
55
- emoji_data[:fallback] || emoji_data[:name] || '〓'
56
- end
57
- end
58
- end
59
-
60
- content = (body.is_a?(Array) ? body[0] : body).to_s
61
- headers['Content-Length'] = (content.respond_to?(:bytesize) ? content.bytesize : content.size).to_s if headers.member?('Content-Length')
62
-
63
- [status, headers, body]
64
- end
65
-
66
- private
67
- # 絵文字コード -> 絵文字ID 対応表から、絵文字コード検出用の正規表現をつくる
68
- # 複数の絵文字の組み合わせのものを前におくことで
69
- # そっちを優先的にマッチさせる
70
- def emoji_utf8_regexp
71
- @emoji_utf8_regexp if @emoji_utf8_regexp
72
- @emoji_utf8_regexp = Regexp.union(*EMOJI_TO_EMOJIID.keys.sort_by{ |codes| - codes.size }.collect{ |utf8str| Regexp.new(Regexp.escape(utf8str), nil)})
73
- end
74
-
75
- end
76
- end
77
-
78
- # 変換テーブル読み込み
79
- require 'rack/ketai/carrier/emoji/softbankwebcodetoutf8str'
80
- require 'rack/ketai/carrier/emoji/softbankutf8strtoemojiid'
81
-
82
- Rack::Ketai::Carrier::Softbank.filters = [Rack::Ketai::Carrier::Softbank::Filter.instance]
@@ -1,17 +0,0 @@
1
- module Rack::Ketai::Carrier
2
-
3
- autoload :Abstract, 'rack/ketai/carrier/abstract'
4
- autoload :Docomo, 'rack/ketai/carrier/docomo'
5
- autoload :Au, 'rack/ketai/carrier/au'
6
- autoload :Softbank, 'rack/ketai/carrier/softbank'
7
- autoload :IPhone, 'rack/ketai/carrier/iphone'
8
-
9
- def self.load(env)
10
- constants.each do |const|
11
- c = self.const_get(const)
12
- return c.new(env) if c::USER_AGENT_REGEXP && env['HTTP_USER_AGENT'] =~ c::USER_AGENT_REGEXP
13
- end
14
- nil
15
- end
16
-
17
- end
@@ -1,24 +0,0 @@
1
- class Rack::Ketai::Middleware
2
-
3
- def initialize(app)
4
- @app = app
5
- end
6
-
7
- def call(env)
8
- carrier = Rack::Ketai::Carrier.load(env)
9
- return @app.call(env) unless carrier
10
-
11
- apply(env, carrier)
12
- end
13
-
14
- private
15
- def apply(env, carrier)
16
- env = env.clone
17
- env['rack.ketai'] = carrier
18
- env = carrier.filters.inject(env) { |env, filter| filter.inbound(env) }
19
- ret = @app.call(env)
20
- ret[2] = ret[2].body if ret[2].is_a?(Rack::Response)
21
- carrier.filters.reverse.inject(ret) { |r, filter| filter.outbound(*r) }
22
- end
23
-
24
- end