rack-ketai 0.2.3 → 0.2.4
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/lib/rack/ketai/carrier/abstract.rb +11 -0
- data/lib/rack/ketai/carrier/android.rb +9 -0
- data/lib/rack/ketai/carrier/cidrs/au.rb +1 -12
- data/lib/rack/ketai/carrier/cidrs/docomo.rb +1 -1
- data/lib/rack/ketai/carrier/cidrs/softbank.rb +6 -4
- data/lib/rack/ketai/carrier/iphone.rb +9 -1
- data/lib/rack/ketai/carrier/mobile.rb +4 -0
- data/lib/rack/ketai/carrier/smartphone.rb +1 -1
- metadata +69 -81
- data/VERSION +0 -1
- data/rack-ketai.gemspec +0 -91
- data/spec/spec_helper.rb +0 -11
- data/spec/unit/android_spec.rb +0 -50
- data/spec/unit/au_filter_spec.rb +0 -105
- data/spec/unit/au_spec.rb +0 -248
- data/spec/unit/carrier_spec.rb +0 -30
- data/spec/unit/display_spec.rb +0 -25
- data/spec/unit/docomo_filter_spec.rb +0 -115
- data/spec/unit/docomo_spec.rb +0 -351
- data/spec/unit/emoticon_filter_spec.rb +0 -108
- data/spec/unit/filter_spec.rb +0 -38
- data/spec/unit/general_spec.rb +0 -41
- data/spec/unit/gps_spec.rb +0 -146
- data/spec/unit/iphone_spec.rb +0 -95
- data/spec/unit/middleware_spec.rb +0 -38
- data/spec/unit/position_spec.rb +0 -49
- data/spec/unit/softbank_filter_spec.rb +0 -142
- data/spec/unit/softbank_spec.rb +0 -207
- data/spec/unit/valid_addr_spec.rb +0 -116
- data/test/spec_runner.rb +0 -30
- data/tools/generate_emoji_dic.rb +0 -430
- data/tools/update_speclist.rb +0 -87
data/test/spec_runner.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
|
3
|
-
class SpecRunner < Test::Unit::TestCase
|
4
|
-
|
5
|
-
def load_spec
|
6
|
-
begin
|
7
|
-
require 'spec'
|
8
|
-
rescue LoadError
|
9
|
-
if require "rubygems"
|
10
|
-
gem 'rspec', '<2.0.0'
|
11
|
-
retry
|
12
|
-
end
|
13
|
-
puts "All tests are skipped.(Please `gem install rspec`)"
|
14
|
-
return
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_spec
|
19
|
-
return unless load_spec
|
20
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '../spec/spec_helper.rb'))
|
21
|
-
|
22
|
-
argv = Dir.glob(File.expand_path File.join(File.dirname(__FILE__), '../spec/**/*_spec.rb'))
|
23
|
-
argv.unshift '-fs'
|
24
|
-
|
25
|
-
unless Spec::Runner::CommandLine.run(Spec::Runner::OptionParser.parse(argv, STDOUT, STDERR))
|
26
|
-
fail "failure(s)."
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
data/tools/generate_emoji_dic.rb
DELETED
@@ -1,430 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# -*- coding: utf-8 -*-
|
3
|
-
|
4
|
-
SCRIPT_ROOT = File.dirname(__FILE__)
|
5
|
-
|
6
|
-
# データソース取得
|
7
|
-
emoji4unicode_dir = File.join(SCRIPT_ROOT, 'tmp/emoji4unicode')
|
8
|
-
typecast_dir = File.join(SCRIPT_ROOT, 'tmp/typecast')
|
9
|
-
jpmobile_dir = File.join(SCRIPT_ROOT, 'tmp/jpmobile')
|
10
|
-
|
11
|
-
`svn export http://emoji4unicode.googlecode.com/svn/trunk/data/ #{emoji4unicode_dir}` unless File.directory?(emoji4unicode_dir)
|
12
|
-
`svn export http://typecastmobile.googlecode.com/svn/trunk/ #{typecast_dir}` unless File.directory?(typecast_dir)
|
13
|
-
`git clone git://github.com/darashi/jpmobile.git #{jpmobile_dir}` unless File.directory?(jpmobile_dir)
|
14
|
-
|
15
|
-
$LOAD_PATH.unshift File.join(jpmobile_dir, 'lib')
|
16
|
-
|
17
|
-
require 'yaml'
|
18
|
-
|
19
|
-
emoticons = YAML.load(File.read(File.join(typecast_dir, 'conf/emoticon.yaml')))
|
20
|
-
|
21
|
-
# {"docomo" => {"XXXX" => "name"}}
|
22
|
-
|
23
|
-
require 'rexml/document'
|
24
|
-
emoji4unicode = File.read(File.join(emoji4unicode_dir, 'emoji4unicode.xml'))
|
25
|
-
#docomo = File.read(File.join(emoji4unicode_dir, 'docomo/carrier_data.xml'))
|
26
|
-
#kddi = File.read(File.join(emoji4unicode, 'kddi/carrier_data.xml'))
|
27
|
-
#softbank = File.read(File.join(emoji4unicode, 'softbank/carrier_data.xml'))
|
28
|
-
|
29
|
-
doc = REXML::Document.new(emoji4unicode)
|
30
|
-
|
31
|
-
conv_table = {
|
32
|
-
:docomo => { },
|
33
|
-
:kddi => { },
|
34
|
-
:softbank => { }
|
35
|
-
}
|
36
|
-
|
37
|
-
# UTF-8コードから各キャリアの文字コード
|
38
|
-
carrier = {
|
39
|
-
:docomo => { },
|
40
|
-
:kddi => { },
|
41
|
-
:softbank => { }
|
42
|
-
}
|
43
|
-
|
44
|
-
emoji = {}
|
45
|
-
|
46
|
-
doc.each_element('//e') do |elem|
|
47
|
-
id = elem.attributes['id']
|
48
|
-
unicode = elem.attributes['unicode']
|
49
|
-
docomo_code = elem.attributes['docomo']
|
50
|
-
kddi_code = elem.attributes['kddi']
|
51
|
-
softbank_code = elem.attributes['softbank']
|
52
|
-
google_code = elem.attributes['google']
|
53
|
-
name = elem.attributes['name']
|
54
|
-
fallback = elem.attributes['text_fallback']
|
55
|
-
|
56
|
-
emoji[id] = {
|
57
|
-
:google_code => google_code,
|
58
|
-
:name => name,
|
59
|
-
:fallback => fallback,
|
60
|
-
:unicode => unicode
|
61
|
-
}
|
62
|
-
|
63
|
-
if docomo_code
|
64
|
-
codes = docomo_code.split(/\+/).collect{ |code| code =~ /([0-9A-F]+)/ ? $1 : nil }.compact
|
65
|
-
conv_table[:docomo][id] = codes
|
66
|
-
end
|
67
|
-
|
68
|
-
if kddi_code
|
69
|
-
codes = kddi_code.split(/\+/).collect{ |code| code =~ /([0-9A-F]+)/ ? $1 : nil }.compact
|
70
|
-
conv_table[:kddi][id] = codes
|
71
|
-
end
|
72
|
-
|
73
|
-
if softbank_code
|
74
|
-
codes = softbank_code.split(/\+/).collect{ |code| code =~ /([0-9A-F]+)/ ? $1 : nil }.compact
|
75
|
-
conv_table[:softbank][id] = codes
|
76
|
-
end
|
77
|
-
|
78
|
-
end
|
79
|
-
|
80
|
-
conv_table[:docomo].each do |k, v|
|
81
|
-
next unless emoji[v]
|
82
|
-
name = emoji[v][:fallback] || emoji[v][:name]
|
83
|
-
google_code = emoji[v][:google_code]
|
84
|
-
end
|
85
|
-
|
86
|
-
# データを元に辞書作成
|
87
|
-
module Jpmobile
|
88
|
-
module Emoticon
|
89
|
-
end
|
90
|
-
end
|
91
|
-
require 'jpmobile/emoticon/docomo'
|
92
|
-
require 'jpmobile/emoticon/au'
|
93
|
-
require 'jpmobile/emoticon/softbank'
|
94
|
-
# EMOJI COMPATIBILITY SYMBOL
|
95
|
-
DOCOMO_SJIS_TO_UNICODE = Jpmobile::Emoticon::DOCOMO_SJIS_TO_UNICODE.dup
|
96
|
-
DOCOMO_SJIS_TO_UNICODE.merge!({
|
97
|
-
0xE6A6 => 0xF94A, # ぴ
|
98
|
-
0xE6A7 => 0xF94B, # あ
|
99
|
-
0xE6A8 => 0xF94C, # チケぴ
|
100
|
-
0xE6A9 => 0xF94D, # チケぴ
|
101
|
-
0xE6AA => 0xF94E, # 先行tel
|
102
|
-
0xE6AB => 0xF94F, # pコード
|
103
|
-
0xE6AF => 0xF953, # 映画
|
104
|
-
0xE6B0 => 0xF954, # ぴ
|
105
|
-
0xE6B4 => 0xF958, # まるぴ
|
106
|
-
0xE6B5 => 0xF959, # 四角ぴ
|
107
|
-
0xE6B6 => 0xF95a, # チェック
|
108
|
-
0xE6BB => 0xF95F, # f
|
109
|
-
0xE6BC => 0xF960, # d
|
110
|
-
0xE6BD => 0xF961, # s
|
111
|
-
0xE6BE => 0xF962, # c
|
112
|
-
0xE6BF => 0xF963, # r
|
113
|
-
0xE6C0 => 0xF964, # 白黒四角
|
114
|
-
0xE6C1 => 0xF965, # 黒四角
|
115
|
-
0xE6C2 => 0xF966, # 逆三角
|
116
|
-
0xE6C3 => 0xF967, # 4十字
|
117
|
-
0xE6C4 => 0xF968, # 3十字
|
118
|
-
0xE6C5 => 0xF969, # 2十字
|
119
|
-
0xE6C6 => 0xF96A, # 1十字
|
120
|
-
0xE6C7 => 0xF96B, # i
|
121
|
-
0xE6C8 => 0xF96C, # m
|
122
|
-
0xE6C9 => 0xF96D, # e
|
123
|
-
0xE6CA => 0xF96E, # ve
|
124
|
-
0xE6CB => 0xF96F, # 球
|
125
|
-
0xE6CC => 0xF970, # カード使用不可
|
126
|
-
0xE6CD => 0xF971 # チェックボックス
|
127
|
-
}.invert)
|
128
|
-
DOCOMO_UNICODE_TO_SJIS = DOCOMO_SJIS_TO_UNICODE.invert
|
129
|
-
|
130
|
-
AU_SJIS_TO_UNICODE = Jpmobile::Emoticon::AU_SJIS_TO_UNICODE.dup
|
131
|
-
AU_SJIS_TO_UNICODE.merge!(0xF48E => 0xEB89, # EZアプリJ
|
132
|
-
0xF48F => 0xEB8A, # EXアプリB
|
133
|
-
0xF490 => 0xEB8B, # EZ着うた
|
134
|
-
0xF491 => 0xEB8C, # EZナビMS
|
135
|
-
0xF492 => 0xEB8D, # WIN
|
136
|
-
0xF493 => 0xEB8E # プレミアム
|
137
|
-
)
|
138
|
-
AU_UNICODE_TO_SJIS = AU_SJIS_TO_UNICODE.invert
|
139
|
-
|
140
|
-
SOFTBANK_UNICODE_TO_WEBCODE = Jpmobile::Emoticon::SOFTBANK_UNICODE_TO_WEBCODE.dup
|
141
|
-
SOFTBANK_WEBCODE_TO_UNICODE = SOFTBANK_UNICODE_TO_WEBCODE.invert
|
142
|
-
|
143
|
-
output = { }
|
144
|
-
|
145
|
-
# ******************************
|
146
|
-
# 各キャリア 絵文字コード -> eid
|
147
|
-
# 絵文字の組み合わせも対応
|
148
|
-
# ******************************
|
149
|
-
# Docomo/au SJIS
|
150
|
-
# Softbank UTF-8
|
151
|
-
output['docomo_sjisstr_to_emojiid'] = (<<-FILE)
|
152
|
-
# -*- coding: utf-8 -*-
|
153
|
-
|
154
|
-
# DoCoMo-SJISバイナリとemoji4unicodeのIDとのマッピング
|
155
|
-
|
156
|
-
# format("0x%03X", Rack::Ketai::Carrier::Docomo::Filter::EMOJI_TO_EMOJIID[[0xF995].pack('n*').force_encoding('SHIFT_JIS')])
|
157
|
-
# => "0x19B" (わーい(嬉しい顔) : SJIS-F995)
|
158
|
-
# format("0x%03X", Rack::Ketai::Carrier::Docomo::Filter::EMOJI_TO_EMOJIID[[0xF8CA, 0xF994].pack('n*').force_encoding('SHIFT_JIS')])
|
159
|
-
# => "0x4B8" (ラブホテル = ホテル+ハートたち(複数ハート) : SJIS-F8CA+SJIS-F994)
|
160
|
-
|
161
|
-
module Rack
|
162
|
-
module Ketai
|
163
|
-
module Carrier
|
164
|
-
class Docomo
|
165
|
-
class Filter
|
166
|
-
EMOJI_TO_EMOJIID = {
|
167
|
-
FILE
|
168
|
-
|
169
|
-
unknown = false
|
170
|
-
emoji_table = { }
|
171
|
-
emojiid_table = { }
|
172
|
-
emoji.each do |id, data|
|
173
|
-
next unless (codes = conv_table[:docomo][id]) && !codes.empty?
|
174
|
-
docomo_unicodes = codes.collect{ |code| eval("0x#{code}") }
|
175
|
-
|
176
|
-
docomo_sjiscodes = docomo_unicodes.collect do |docomo_unicode|
|
177
|
-
docomo_sjiscode = DOCOMO_UNICODE_TO_SJIS[docomo_unicode]
|
178
|
-
unless docomo_sjiscode
|
179
|
-
puts format("%04X", docomo_unicode)
|
180
|
-
unknown = true
|
181
|
-
end
|
182
|
-
docomo_sjiscode
|
183
|
-
end
|
184
|
-
|
185
|
-
if unknown
|
186
|
-
puts docomo_unicodes.collect{ |docomo_unicode| format("0x%04X", docomo_unicode) }.join('+')
|
187
|
-
else
|
188
|
-
emojiid = id.to_i(16)
|
189
|
-
emoji_table[docomo_sjiscodes] ||= emojiid
|
190
|
-
emojiid_table[emojiid] = docomo_sjiscodes
|
191
|
-
end
|
192
|
-
end
|
193
|
-
emoji_table.each do |codes, emojiid|
|
194
|
-
output['docomo_sjisstr_to_emojiid'] += format(%Q{ ((sjisstr = #{ codes.inspect }.pack('n*')) && RUBY_VERSION >= '1.9.1' ? sjisstr.force_encoding('Shift_JIS') : sjisstr) => 0x%03X,\n}, emojiid)
|
195
|
-
end
|
196
|
-
output['docomo_sjisstr_to_emojiid'] += <<-EOF
|
197
|
-
}
|
198
|
-
|
199
|
-
# 単にEMOJI_TO_EMOJIID#index を使うと、
|
200
|
-
# 1つの絵文字が複数のIDに割り当てられている(DoCoMo SJIS-F97A など)場合
|
201
|
-
# 見つからなくなる
|
202
|
-
# 逆にEMOJIID_TO_EMOJIだけだと複数絵文字の組み合わせによるものがめんどくさい(たぶん)
|
203
|
-
EMOJIID_TO_EMOJI = {
|
204
|
-
EOF
|
205
|
-
emojiid_table.each do |emojiid, codes|
|
206
|
-
output['docomo_sjisstr_to_emojiid'] += format(%Q{ 0x%03X => ((sjisstr = #{ codes.inspect }.pack('n*')) && RUBY_VERSION >= '1.9.1' ? sjisstr.force_encoding('Shift_JIS') : sjisstr),\n}, emojiid)
|
207
|
-
end
|
208
|
-
output['docomo_sjisstr_to_emojiid'] += <<-EOF
|
209
|
-
}
|
210
|
-
|
211
|
-
# 1.8系、1.9系 互換性維持のため
|
212
|
-
if RUBY_VERSION >= '1.9.0'
|
213
|
-
def EMOJI_TO_EMOJIID.index(val)
|
214
|
-
key(val)
|
215
|
-
end
|
216
|
-
end
|
217
|
-
end
|
218
|
-
end
|
219
|
-
end
|
220
|
-
end
|
221
|
-
end
|
222
|
-
|
223
|
-
EOF
|
224
|
-
|
225
|
-
if unknown
|
226
|
-
puts "不明なコードがあります"
|
227
|
-
exit 1
|
228
|
-
end
|
229
|
-
|
230
|
-
# au
|
231
|
-
output['au_sjisstr_to_emojiid'] = (<<-FILE)
|
232
|
-
# -*- coding: utf-8 -*-
|
233
|
-
|
234
|
-
# Au-SJISバイナリとemoji4unicodeのIDとのマッピング
|
235
|
-
|
236
|
-
# format("0x%03X", Rack::Ketai::Carrier::Au::Filter::EMOJI_TO_EMOJIID[[0xF6D5].pack('n*').force_encoding('SHIFT_JIS')])
|
237
|
-
# => "0x19B" (顔1: SJIS-F6D5)
|
238
|
-
|
239
|
-
module Rack
|
240
|
-
module Ketai
|
241
|
-
module Carrier
|
242
|
-
class Au
|
243
|
-
class Filter
|
244
|
-
EMOJI_TO_EMOJIID = {
|
245
|
-
FILE
|
246
|
-
|
247
|
-
unknown = false
|
248
|
-
emoji_table = { }
|
249
|
-
emojiid_table = { }
|
250
|
-
emoji.each do |id, data|
|
251
|
-
next unless (codes = conv_table[:kddi][id]) && !codes.empty?
|
252
|
-
au_unicodes = codes.collect{ |code| eval("0x#{code}") }
|
253
|
-
|
254
|
-
au_sjiscodes = au_unicodes.collect do |au_unicode|
|
255
|
-
au_sjiscode = AU_UNICODE_TO_SJIS[au_unicode]
|
256
|
-
unless au_sjiscode
|
257
|
-
puts format("%04X", au_unicode)
|
258
|
-
unknown = true
|
259
|
-
end
|
260
|
-
au_sjiscode
|
261
|
-
end
|
262
|
-
|
263
|
-
if unknown
|
264
|
-
puts au_unicodes.collect{ |au_unicode| format("0x%04X", au_unicode) }.join('+')
|
265
|
-
else
|
266
|
-
emojiid = id.to_i(16)
|
267
|
-
emoji_table[au_sjiscodes] ||= emojiid
|
268
|
-
emojiid_table[emojiid] = au_sjiscodes
|
269
|
-
end
|
270
|
-
end
|
271
|
-
emoji_table.each do |codes, emojiid|
|
272
|
-
output['au_sjisstr_to_emojiid'] += format(%Q{ ((sjisstr = #{ codes.inspect }.pack('n*')) && RUBY_VERSION >= '1.9.1' ? sjisstr.force_encoding('Shift_JIS') : sjisstr) => 0x%03X,\n}, emojiid)
|
273
|
-
end
|
274
|
-
output['au_sjisstr_to_emojiid'] += <<-EOF
|
275
|
-
}
|
276
|
-
|
277
|
-
# 単にEMOJI_TO_EMOJIID#index を使うと、
|
278
|
-
# 1つの絵文字が複数のIDに割り当てられている(DoCoMo SJIS-F97A など)場合
|
279
|
-
# 見つからなくなる
|
280
|
-
# 逆にEMOJIID_TO_EMOJIだけだと複数絵文字の組み合わせによるものがめんどくさい(たぶん)
|
281
|
-
EMOJIID_TO_EMOJI = {
|
282
|
-
EOF
|
283
|
-
emojiid_table.each do |emojiid, codes|
|
284
|
-
output['au_sjisstr_to_emojiid'] += format(%Q{ 0x%03X => ((sjisstr = #{ codes.inspect }.pack('n*')) && RUBY_VERSION >= '1.9.1' ? sjisstr.force_encoding('Shift_JIS') : sjisstr),\n}, emojiid)
|
285
|
-
end
|
286
|
-
output['au_sjisstr_to_emojiid'] += <<-EOF
|
287
|
-
}
|
288
|
-
|
289
|
-
# 1.8系、1.9系 互換性維持のため
|
290
|
-
if RUBY_VERSION >= '1.9.0'
|
291
|
-
def EMOJI_TO_EMOJIID.index(val)
|
292
|
-
key(val)
|
293
|
-
end
|
294
|
-
end
|
295
|
-
|
296
|
-
end
|
297
|
-
end
|
298
|
-
end
|
299
|
-
end
|
300
|
-
end
|
301
|
-
|
302
|
-
EOF
|
303
|
-
|
304
|
-
if unknown
|
305
|
-
puts "不明なコードがあります"
|
306
|
-
exit 1
|
307
|
-
end
|
308
|
-
|
309
|
-
|
310
|
-
# softbank
|
311
|
-
output['softbank_utf8str_to_emojiid'] = (<<-FILE)
|
312
|
-
# -*- coding: utf-8 -*-
|
313
|
-
|
314
|
-
# Softbank-UTF8バイナリとemoji4unicodeのIDとのマッピング
|
315
|
-
|
316
|
-
# format("0x%03X", Rack::Ketai::Carrier::Softbank::Filter::EMOJI_TO_EMOJIID[[0xE001].pack('U*')])
|
317
|
-
# => "0x19B" (男の子: Unicode E001)
|
318
|
-
# format("0x%03X", Rack::Ketai::Carrier::Softbank::Filter::EMOJI_TO_EMOJIID[[0xE04A, 0xE049].pack('U*')])
|
319
|
-
# => "0x00F" (晴れときどきくもり = 晴れ+くもり : U+E04A+U+E049)
|
320
|
-
|
321
|
-
module Rack
|
322
|
-
module Ketai
|
323
|
-
module Carrier
|
324
|
-
class Softbank
|
325
|
-
class Filter
|
326
|
-
EMOJI_TO_EMOJIID = {
|
327
|
-
FILE
|
328
|
-
|
329
|
-
unknown = false
|
330
|
-
emoji_table = { }
|
331
|
-
emojiid_table = { }
|
332
|
-
emoji.each do |id, data|
|
333
|
-
next unless (codes = conv_table[:softbank][id]) && !codes.empty?
|
334
|
-
softbank_unicodes = codes.collect{ |code| eval("0x#{code}") }
|
335
|
-
|
336
|
-
emojiid = id.to_i(16)
|
337
|
-
emoji_table[softbank_unicodes] ||= emojiid
|
338
|
-
emojiid_table[emojiid] = softbank_unicodes
|
339
|
-
end
|
340
|
-
emoji_table.each do |codes, emojiid|
|
341
|
-
output['softbank_utf8str_to_emojiid'] += format(%Q{ "%s" => 0x%03X,\n}, codes.pack('U*'), emojiid)
|
342
|
-
end
|
343
|
-
output['softbank_utf8str_to_emojiid'] += <<-EOF
|
344
|
-
}
|
345
|
-
|
346
|
-
# 単にEMOJI_TO_EMOJIID#index を使うと、
|
347
|
-
# 1つの絵文字が複数のIDに割り当てられている(DoCoMo SJIS-F97A など)場合
|
348
|
-
# 見つからなくなる
|
349
|
-
# 逆にEMOJIID_TO_EMOJIだけだと複数絵文字の組み合わせによるものがめんどくさい(たぶん)
|
350
|
-
EMOJIID_TO_EMOJI = {
|
351
|
-
EOF
|
352
|
-
emojiid_table.each do |emojiid, codes|
|
353
|
-
output['softbank_utf8str_to_emojiid'] += format(%Q{ 0x%03X => "%s",\n}, emojiid, codes.pack('U*'))
|
354
|
-
end
|
355
|
-
output['softbank_utf8str_to_emojiid'] += <<-EOF
|
356
|
-
}
|
357
|
-
|
358
|
-
# 1.8系、1.9系 互換性維持のため
|
359
|
-
if RUBY_VERSION >= '1.9.0'
|
360
|
-
def EMOJI_TO_EMOJIID.index(val)
|
361
|
-
key(val)
|
362
|
-
end
|
363
|
-
end
|
364
|
-
|
365
|
-
end
|
366
|
-
end
|
367
|
-
end
|
368
|
-
end
|
369
|
-
end
|
370
|
-
|
371
|
-
EOF
|
372
|
-
|
373
|
-
if unknown
|
374
|
-
puts "不明なコードがあります"
|
375
|
-
exit 1
|
376
|
-
end
|
377
|
-
|
378
|
-
# 絵文字の代替テキストマップ
|
379
|
-
output['emojidata'] = (<<-FILE)
|
380
|
-
# -*- coding: utf-8 -*-
|
381
|
-
|
382
|
-
# Softbank-UTF8バイナリとemoji4unicodeのIDとのマッピング
|
383
|
-
|
384
|
-
# format("0x%03X", Rack::Ketai::Carrier::Softbank::Filter::EMOJI_TO_EMOJIID[[0xE001].pack('U*')])
|
385
|
-
# => "0x19B" (男の子: Unicode E001)
|
386
|
-
# format("0x%03X", Rack::Ketai::Carrier::Softbank::Filter::EMOJI_TO_EMOJIID[[0xE04A, 0xE049].pack('U*')])
|
387
|
-
# => "0x00F" (晴れときどきくもり = 晴れ+くもり : U+E04A+U+E049)
|
388
|
-
|
389
|
-
module Rack
|
390
|
-
module Ketai
|
391
|
-
class Filter
|
392
|
-
EMOJI_DATA = {
|
393
|
-
FILE
|
394
|
-
|
395
|
-
emoji.each do |id, data|
|
396
|
-
emojiid = id.to_i(16)
|
397
|
-
output['emojidata'] += format(" 0x%03X => #{data.inspect},\n", emojiid)
|
398
|
-
end
|
399
|
-
|
400
|
-
output['emojidata'] += <<-EOF
|
401
|
-
}
|
402
|
-
|
403
|
-
# 1.8系、1.9系 互換性維持のため
|
404
|
-
if RUBY_VERSION >= '1.9.0'
|
405
|
-
def EMOJI_DATA.index(val)
|
406
|
-
key(val)
|
407
|
-
end
|
408
|
-
end
|
409
|
-
|
410
|
-
end
|
411
|
-
end
|
412
|
-
end
|
413
|
-
|
414
|
-
EOF
|
415
|
-
|
416
|
-
|
417
|
-
#puts output['docomo_sjisstr_to_emojiid']
|
418
|
-
#puts output['au_sjisstr_to_emojiid']
|
419
|
-
#puts output['softbank_utf8str_to_emojiid']
|
420
|
-
|
421
|
-
require 'fileutils'
|
422
|
-
output.each do |fname, data|
|
423
|
-
fname = fname.gsub(/\_/, '')
|
424
|
-
dic_dir = File.join(SCRIPT_ROOT, '../lib/rack/ketai/carrier/emoji')
|
425
|
-
FileUtils.mkdir(dic_dir) unless FileTest.directory?(dic_dir)
|
426
|
-
File.open(File.join(dic_dir, "#{fname}.rb"), 'w') do |f|
|
427
|
-
f.write data
|
428
|
-
end
|
429
|
-
end
|
430
|
-
|