1 require File.expand_path('../lib/jisx0208', __FILE__)
5 :name => "SHIFT_JIS-DOCOMO",
6 :src_zone => [0xF8..0xFC, 0x40..0xFC, 8],
9 [0xE63E..0xE757, JISX0208::Char.from_sjis(0xF89F)],
13 :name => "ISO-2022-JP-KDDI",
14 :src_zone => [0x21..0x7E, 0x21..0x7E, 8],
17 [0xE468..0xE5B4, JISX0208::Char.new(0x7521)],
18 [0xE5B5..0xE5CC, JISX0208::Char.new(0x7867)],
19 [0xE5CD..0xE5DF, JISX0208::Char.new(0x7921)],
20 [0xEA80..0xEAFA, JISX0208::Char.new(0x7934)],
21 [0xEAFB..0xEB0D, JISX0208::Char.new(0x7854)],
22 [0xEB0E..0xEB8E, JISX0208::Char.new(0x7A51)],
26 :name => "SHIFT_JIS-KDDI",
27 :src_zone => [0xF3..0xFC, 0x40..0xFC, 8],
30 [0xE468..0xE5B4, JISX0208::Char.from_sjis(0xF640)],
31 [0xE5B5..0xE5CC, JISX0208::Char.from_sjis(0xF7E5)],
32 [0xE5CD..0xE5DF, JISX0208::Char.from_sjis(0xF340)],
33 [0xEA80..0xEAFA, JISX0208::Char.from_sjis(0xF353)],
34 [0xEAFB..0xEB0D, JISX0208::Char.from_sjis(0xF7D2)],
35 [0xEB0E..0xEB8E, JISX0208::Char.from_sjis(0xF3CF)],
39 :name => "SHIFT_JIS-SOFTBANK",
40 :src_zone => [0xF3..0xFC, 0x40..0xFC, 8],
43 [0xE001..0xE05A, JISX0208::Char.from_sjis(0xF941)],
44 [0xE101..0xE15A, JISX0208::Char.from_sjis(0xF741)],
45 [0xE201..0xE25A, JISX0208::Char.from_sjis(0xF7A1)],
46 [0xE301..0xE34D, JISX0208::Char.from_sjis(0xF9A1)],
47 [0xE401..0xE44C, JISX0208::Char.from_sjis(0xFB41)],
48 [0xE501..0xE53E, JISX0208::Char.from_sjis(0xFBA1)],
55 [*args.map{|range| "0x%02X-0x%02X" % [range.begin, range.end] }, bits].join(' / ')
59 (<<END_HEADER_TEMPLATE % [params[:name], zone(*params[:src_zone]), params[:dst_ilseq]])
60 # DO NOT EDIT THIS FILE DIRECTLY
71 def generate_to_ucs(params, pairs)
72 pairs.sort_by! {|u, c| c }
73 name = "EMOJI_#{params[:name]}%UCS"
74 File.open("#{name}.src", "w") do |io|
75 io.print header(params.merge(name: name.tr('%', '/')))
78 io.print pairs.inject("") {|acc, uc| acc += "0x%04X = 0x%04X\n" % uc.reverse }
83 def generate_from_ucs(params, pairs)
84 pairs.sort_by! {|u, c| u }
85 name = "UCS%EMOJI_#{params[:name]}"
86 File.open("#{name}.src", "w") do |io|
87 io.print header(params.merge(name: name.tr('%', '/')))
90 io.print pairs.inject("") {|acc, uc| acc += "0x%04X = 0x%04X\n" % uc }
95 def make_pairs(code_map)
96 code_map.inject([]) {|acc, (range, ch)|
97 acc += range.map{|uni| pair = [uni, Integer(ch)]; ch = ch.succ; next pair }
101 ENCODES.each do |params|
102 pairs = make_pairs(params[:map], ¶ms[:conv])
103 generate_to_ucs(params, pairs)
104 generate_from_ucs(params, pairs)
107 # generate KDDI-UNDOC for Shift_JIS-KDDI
108 kddi_sjis_map = ENCODES.select{|enc| enc[:name] == "SHIFT_JIS-KDDI"}.first[:map]
109 pairs = kddi_sjis_map.inject([]) {|acc, (range, ch)|
110 acc += range.map{|uni| pair = [ch.to_sjis - 0x700, Integer(ch)]; ch = ch.succ; next pair }
113 :name => "SHIFT_JIS-KDDI-UNDOC",
114 :src_zone => [0xF3..0xFC, 0x40..0xFC, 8],
115 :dst_ilseq => 0xFFFE,
117 generate_from_ucs(params, pairs)
118 generate_to_ucs(params, pairs)
120 # generate KDDI-UNDOC for ISO-2022-JP-KDDI
121 kddi_2022_map = ENCODES.select{|enc| enc[:name] == "ISO-2022-JP-KDDI"}.first[:map]
122 pairs = kddi_2022_map.each_with_index.inject([]) {|acc, ((range, ch), i)|
123 sjis = kddi_sjis_map[i][1]
124 acc += range.map{|uni| pair = [sjis.to_sjis - 0x700, Integer(ch)]; ch = ch.succ; sjis = sjis.succ; next pair }
127 :name => "ISO-2022-JP-KDDI-UNDOC",
128 :src_zone => [0x21..0x7E, 0x21..0x7E, 8],
129 :dst_ilseq => 0xFFFE,
131 generate_from_ucs(params, pairs)