unicode_japanese 0.2

Sign up to get free protection for your applications and to get access to all the features.
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2008 [name of plugin creator]
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README ADDED
@@ -0,0 +1,21 @@
1
+ UnicodeJapanese
2
+ ===============
3
+
4
+ Japanese charset converter especially for hankaku and zenkaku characters
5
+
6
+
7
+ Original
8
+ ========
9
+
10
+ This library is ported from CPAN : Unicode::Japanese.
11
+ The patterns and tables are derived from
12
+ http://search.cpan.org/src/HIO/Unicode-Japanese-0.38/lib/Unicode/Japanese.pm
13
+
14
+
15
+ Example
16
+ =======
17
+
18
+ Unicode::Japanese.new("スズキ アイリ").z2h
19
+ # => "スズキ アイリ"
20
+
21
+ Copyright (c) 2008 maiha@wota.jp, released under the MIT license
data/Rakefile ADDED
@@ -0,0 +1,22 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/rdoctask'
4
+
5
+ desc 'Default: run unit tests.'
6
+ task :default => :test
7
+
8
+ desc 'Test the unicode_japanese plugin.'
9
+ Rake::TestTask.new(:test) do |t|
10
+ t.libs << 'lib'
11
+ t.pattern = 'test/**/*_test.rb'
12
+ t.verbose = true
13
+ end
14
+
15
+ desc 'Generate documentation for the unicode_japanese plugin.'
16
+ Rake::RDocTask.new(:rdoc) do |rdoc|
17
+ rdoc.rdoc_dir = 'rdoc'
18
+ rdoc.title = 'UnicodeJapanese'
19
+ rdoc.options << '--line-numbers' << '--inline-source'
20
+ rdoc.rdoc_files.include('README')
21
+ rdoc.rdoc_files.include('lib/**/*.rb')
22
+ end
@@ -0,0 +1,46 @@
1
+ module Unicode
2
+ class Japanese
3
+ module Pattern
4
+ module_function
5
+ def z2hKanaK
6
+ @z2hKanaK ||= /(\xe3\x80\x81|\xe3\x80\x82|\xe3\x83\xbb|\xe3\x82\x9b|\xe3\x82\x9c|\xe3\x83\xbc|\xe3\x80\x8c|\xe3\x80\x8d|\xe3\x82\xa1|\xe3\x82\xa2|\xe3\x82\xa3|\xe3\x82\xa4|\xe3\x82\xa5|\xe3\x82\xa6|\xe3\x82\xa7|\xe3\x82\xa8|\xe3\x82\xa9|\xe3\x82\xaa|\xe3\x82\xab|\xe3\x82\xad|\xe3\x82\xaf|\xe3\x82\xb1|\xe3\x82\xb3|\xe3\x82\xb5|\xe3\x82\xb7|\xe3\x82\xb9|\xe3\x82\xbb|\xe3\x82\xbd|\xe3\x82\xbf|\xe3\x83\x81|\xe3\x83\x83|\xe3\x83\x84|\xe3\x83\x86|\xe3\x83\x88|\xe3\x83\x8a|\xe3\x83\x8b|\xe3\x83\x8c|\xe3\x83\x8d|\xe3\x83\x8e|\xe3\x83\x8f|\xe3\x83\x92|\xe3\x83\x95|\xe3\x83\x98|\xe3\x83\x9b|\xe3\x83\x9e|\xe3\x83\x9f|\xe3\x83\xa0|\xe3\x83\xa1|\xe3\x83\xa2|\xe3\x83\xa3|\xe3\x83\xa4|\xe3\x83\xa5|\xe3\x83\xa6|\xe3\x83\xa7|\xe3\x83\xa8|\xe3\x83\xa9|\xe3\x83\xaa|\xe3\x83\xab|\xe3\x83\xac|\xe3\x83\xad|\xe3\x83\xaf|\xe3\x83\xb2|\xe3\x83\xb3)/o
7
+ end
8
+
9
+ def z2hKanaD
10
+ @z2hKanaD ||= /(\xe3\x82\xac|\xe3\x82\xae|\xe3\x82\xb0|\xe3\x82\xb2|\xe3\x82\xb4|\xe3\x82\xb6|\xe3\x82\xb8|\xe3\x82\xba|\xe3\x82\xbc|\xe3\x82\xbe|\xe3\x83\x80|\xe3\x83\x82|\xe3\x83\x85|\xe3\x83\x87|\xe3\x83\x89|\xe3\x83\x90|\xe3\x83\x91|\xe3\x83\x93|\xe3\x83\x94|\xe3\x83\x96|\xe3\x83\x97|\xe3\x83\x99|\xe3\x83\x9a|\xe3\x83\x9c|\xe3\x83\x9d|\xe3\x83\xb4)/o
11
+ end
12
+
13
+ def z2hNum
14
+ @z2hNum ||= /(\xef\xbc\x90|\xef\xbc\x91|\xef\xbc\x92|\xef\xbc\x93|\xef\xbc\x94|\xef\xbc\x95|\xef\xbc\x96|\xef\xbc\x97|\xef\xbc\x98|\xef\xbc\x99)/o
15
+ end
16
+
17
+ def z2hAlpha
18
+ @z2hAlpha ||= /(\xef\xbc\xa1|\xef\xbc\xa2|\xef\xbc\xa3|\xef\xbc\xa4|\xef\xbc\xa5|\xef\xbc\xa6|\xef\xbc\xa7|\xef\xbc\xa8|\xef\xbc\xa9|\xef\xbc\xaa|\xef\xbc\xab|\xef\xbc\xac|\xef\xbc\xad|\xef\xbc\xae|\xef\xbc\xaf|\xef\xbc\xb0|\xef\xbc\xb1|\xef\xbc\xb2|\xef\xbc\xb3|\xef\xbc\xb4|\xef\xbc\xb5|\xef\xbc\xb6|\xef\xbc\xb7|\xef\xbc\xb8|\xef\xbc\xb9|\xef\xbc\xba|\xef\xbd\x81|\xef\xbd\x82|\xef\xbd\x83|\xef\xbd\x84|\xef\xbd\x85|\xef\xbd\x86|\xef\xbd\x87|\xef\xbd\x88|\xef\xbd\x89|\xef\xbd\x8a|\xef\xbd\x8b|\xef\xbd\x8c|\xef\xbd\x8d|\xef\xbd\x8e|\xef\xbd\x8f|\xef\xbd\x90|\xef\xbd\x91|\xef\xbd\x92|\xef\xbd\x93|\xef\xbd\x94|\xef\xbd\x95|\xef\xbd\x96|\xef\xbd\x97|\xef\xbd\x98|\xef\xbd\x99|\xef\xbd\x9a)/o
19
+ end
20
+
21
+ def z2hSym
22
+ @z2hSym ||= /(\xe3\x80\x80|\xef\xbc\x8c|\xef\xbc\x8e|\xef\xbc\x9a|\xef\xbc\x9b|\xef\xbc\x9f|\xef\xbc\x81|\xef\xbd\x80|\xef\xbc\xbe|\xef\xbc\xbf|\xef\xbc\x8f|\xef\xbd\x9e|\xef\xbd\x9c|\xe2\x80\x99|\xe2\x80\x9d|\xef\xbc\x88|\xef\xbc\x89|\xef\xbc\xbb|\xef\xbc\xbd|\xef\xbd\x9b|\xef\xbd\x9d|\xef\xbc\x8b|\xef\xbc\x8d|\xef\xbc\x9d|\xef\xbc\x9c|\xef\xbc\x9e|\xef\xbf\xa5|\xef\xbc\x84|\xef\xbc\x85|\xef\xbc\x83|\xef\xbc\x86|\xef\xbc\x8a|\xef\xbc\xa0|\xe3\x80\x9c)/o
23
+ end
24
+
25
+ def h2zKanaK
26
+ @h2zKanaK ||= /(\xef\xbd\xa1|\xef\xbd\xa2|\xef\xbd\xa3|\xef\xbd\xa4|\xef\xbd\xa5|\xef\xbd\xa6|\xef\xbd\xa7|\xef\xbd\xa8|\xef\xbd\xa9|\xef\xbd\xaa|\xef\xbd\xab|\xef\xbd\xac|\xef\xbd\xad|\xef\xbd\xae|\xef\xbd\xaf|\xef\xbd\xb0|\xef\xbd\xb1|\xef\xbd\xb2|\xef\xbd\xb3|\xef\xbd\xb4|\xef\xbd\xb5|\xef\xbd\xb6|\xef\xbd\xb7|\xef\xbd\xb8|\xef\xbd\xb9|\xef\xbd\xba|\xef\xbd\xbb|\xef\xbd\xbc|\xef\xbd\xbd|\xef\xbd\xbe|\xef\xbd\xbf|\xef\xbe\x80|\xef\xbe\x81|\xef\xbe\x82|\xef\xbe\x83|\xef\xbe\x84|\xef\xbe\x85|\xef\xbe\x86|\xef\xbe\x87|\xef\xbe\x88|\xef\xbe\x89|\xef\xbe\x8a|\xef\xbe\x8b|\xef\xbe\x8c|\xef\xbe\x8d|\xef\xbe\x8e|\xef\xbe\x8f|\xef\xbe\x90|\xef\xbe\x91|\xef\xbe\x92|\xef\xbe\x93|\xef\xbe\x94|\xef\xbe\x95|\xef\xbe\x96|\xef\xbe\x97|\xef\xbe\x98|\xef\xbe\x99|\xef\xbe\x9a|\xef\xbe\x9b|\xef\xbe\x9c|\xef\xbe\x9d|\xef\xbe\x9e|\xef\xbe\x9f)/o
27
+ end
28
+
29
+ def h2zKanaD
30
+ @h2zKanaD ||= /(\xef\xbd\xb3\xef\xbe\x9e|\xef\xbd\xb6\xef\xbe\x9e|\xef\xbd\xb7\xef\xbe\x9e|\xef\xbd\xb8\xef\xbe\x9e|\xef\xbd\xb9\xef\xbe\x9e|\xef\xbd\xba\xef\xbe\x9e|\xef\xbd\xbb\xef\xbe\x9e|\xef\xbd\xbc\xef\xbe\x9e|\xef\xbd\xbd\xef\xbe\x9e|\xef\xbd\xbe\xef\xbe\x9e|\xef\xbd\xbf\xef\xbe\x9e|\xef\xbe\x80\xef\xbe\x9e|\xef\xbe\x81\xef\xbe\x9e|\xef\xbe\x82\xef\xbe\x9e|\xef\xbe\x83\xef\xbe\x9e|\xef\xbe\x84\xef\xbe\x9e|\xef\xbe\x8a\xef\xbe\x9e|\xef\xbe\x8a\xef\xbe\x9f|\xef\xbe\x8b\xef\xbe\x9e|\xef\xbe\x8b\xef\xbe\x9f|\xef\xbe\x8c\xef\xbe\x9e|\xef\xbe\x8c\xef\xbe\x9f|\xef\xbe\x8d\xef\xbe\x9e|\xef\xbe\x8d\xef\xbe\x9f|\xef\xbe\x8e\xef\xbe\x9e|\xef\xbe\x8e\xef\xbe\x9f)/o
31
+ end
32
+
33
+ def h2zNum
34
+ @h2zNum ||= /(0|1|2|3|4|5|6|7|8|9)/o
35
+ end
36
+
37
+ def h2zAlpha
38
+ @h2zAlpha ||= /(A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z)/o
39
+ end
40
+
41
+ def h2zSym
42
+ @h2zSym ||= /(\x20|\x21|\x22|\x23|\x24|\x25|\x26|\x27|\x28|\x29|\x2a|\x2b|\x2c|\x2d|\x2e|\x2f|\x3a|\x3b|\x3c|\x3d|\x3e|\x3f|\x40|\x5b|\x5c|\x5d|\x5e|_|\x60|\x7b|\x7c|\x7d|\x7e)/o
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,375 @@
1
+ module Unicode
2
+ class Japanese
3
+ module Table
4
+ module_function
5
+ def z2hAlpha
6
+ @z2hAlpha ||= {
7
+ "\xef\xbc\xa1" => "A", "\xef\xbc\xa2" => "B",
8
+ "\xef\xbc\xa3" => "C", "\xef\xbc\xa4" => "D",
9
+ "\xef\xbc\xa5" => "E", "\xef\xbc\xa6" => "F",
10
+ "\xef\xbc\xa7" => "G", "\xef\xbc\xa8" => "H",
11
+ "\xef\xbc\xa9" => "I", "\xef\xbc\xaa" => "J",
12
+ "\xef\xbc\xab" => "K", "\xef\xbc\xac" => "L",
13
+ "\xef\xbc\xad" => "M", "\xef\xbc\xae" => "N",
14
+ "\xef\xbc\xaf" => "O", "\xef\xbc\xb0" => "P",
15
+ "\xef\xbc\xb1" => "Q", "\xef\xbc\xb2" => "R",
16
+ "\xef\xbc\xb3" => "S", "\xef\xbc\xb4" => "T",
17
+ "\xef\xbc\xb5" => "U", "\xef\xbc\xb6" => "V",
18
+ "\xef\xbc\xb7" => "W", "\xef\xbc\xb8" => "X",
19
+ "\xef\xbc\xb9" => "Y", "\xef\xbc\xba" => "Z",
20
+ "\xef\xbd\x81" => "a", "\xef\xbd\x82" => "b",
21
+ "\xef\xbd\x83" => "c", "\xef\xbd\x84" => "d",
22
+ "\xef\xbd\x85" => "e", "\xef\xbd\x86" => "f",
23
+ "\xef\xbd\x87" => "g", "\xef\xbd\x88" => "h",
24
+ "\xef\xbd\x89" => "i", "\xef\xbd\x8a" => "j",
25
+ "\xef\xbd\x8b" => "k", "\xef\xbd\x8c" => "l",
26
+ "\xef\xbd\x8d" => "m", "\xef\xbd\x8e" => "n",
27
+ "\xef\xbd\x8f" => "o", "\xef\xbd\x90" => "p",
28
+ "\xef\xbd\x91" => "q", "\xef\xbd\x92" => "r",
29
+ "\xef\xbd\x93" => "s", "\xef\xbd\x94" => "t",
30
+ "\xef\xbd\x95" => "u", "\xef\xbd\x96" => "v",
31
+ "\xef\xbd\x97" => "w", "\xef\xbd\x98" => "x",
32
+ "\xef\xbd\x99" => "y", "\xef\xbd\x9a" => "z",
33
+ }
34
+ end
35
+
36
+ def h2zNum
37
+ @h2zNum ||= {
38
+ "0" => "\xef\xbc\x90", "1" => "\xef\xbc\x91",
39
+ "2" => "\xef\xbc\x92", "3" => "\xef\xbc\x93",
40
+ "4" => "\xef\xbc\x94", "5" => "\xef\xbc\x95",
41
+ "6" => "\xef\xbc\x96", "7" => "\xef\xbc\x97",
42
+ "8" => "\xef\xbc\x98", "9" => "\xef\xbc\x99",
43
+ }
44
+ end
45
+
46
+ def z2hNum
47
+ @z2hNum ||= {
48
+ "\xef\xbc\x90" => "0", "\xef\xbc\x91" => "1",
49
+ "\xef\xbc\x92" => "2", "\xef\xbc\x93" => "3",
50
+ "\xef\xbc\x94" => "4", "\xef\xbc\x95" => "5",
51
+ "\xef\xbc\x96" => "6", "\xef\xbc\x97" => "7",
52
+ "\xef\xbc\x98" => "8", "\xef\xbc\x99" => "9",
53
+ }
54
+ end
55
+
56
+ def h2zAlpha
57
+ @h2zAlpha ||= {
58
+ "A" => "\xef\xbc\xa1", "B" => "\xef\xbc\xa2",
59
+ "C" => "\xef\xbc\xa3", "D" => "\xef\xbc\xa4",
60
+ "E" => "\xef\xbc\xa5", "F" => "\xef\xbc\xa6",
61
+ "G" => "\xef\xbc\xa7", "H" => "\xef\xbc\xa8",
62
+ "I" => "\xef\xbc\xa9", "J" => "\xef\xbc\xaa",
63
+ "K" => "\xef\xbc\xab", "L" => "\xef\xbc\xac",
64
+ "M" => "\xef\xbc\xad", "N" => "\xef\xbc\xae",
65
+ "O" => "\xef\xbc\xaf", "P" => "\xef\xbc\xb0",
66
+ "Q" => "\xef\xbc\xb1", "R" => "\xef\xbc\xb2",
67
+ "S" => "\xef\xbc\xb3", "T" => "\xef\xbc\xb4",
68
+ "U" => "\xef\xbc\xb5", "V" => "\xef\xbc\xb6",
69
+ "W" => "\xef\xbc\xb7", "X" => "\xef\xbc\xb8",
70
+ "Y" => "\xef\xbc\xb9", "Z" => "\xef\xbc\xba",
71
+ "a" => "\xef\xbd\x81", "b" => "\xef\xbd\x82",
72
+ "c" => "\xef\xbd\x83", "d" => "\xef\xbd\x84",
73
+ "e" => "\xef\xbd\x85", "f" => "\xef\xbd\x86",
74
+ "g" => "\xef\xbd\x87", "h" => "\xef\xbd\x88",
75
+ "i" => "\xef\xbd\x89", "j" => "\xef\xbd\x8a",
76
+ "k" => "\xef\xbd\x8b", "l" => "\xef\xbd\x8c",
77
+ "m" => "\xef\xbd\x8d", "n" => "\xef\xbd\x8e",
78
+ "o" => "\xef\xbd\x8f", "p" => "\xef\xbd\x90",
79
+ "q" => "\xef\xbd\x91", "r" => "\xef\xbd\x92",
80
+ "s" => "\xef\xbd\x93", "t" => "\xef\xbd\x94",
81
+ "u" => "\xef\xbd\x95", "v" => "\xef\xbd\x96",
82
+ "w" => "\xef\xbd\x97", "x" => "\xef\xbd\x98",
83
+ "y" => "\xef\xbd\x99", "z" => "\xef\xbd\x9a",
84
+ }
85
+ end
86
+
87
+ def z2hKanaK
88
+ @z2hKanaK ||= {
89
+ "\xe3\x80\x81" => "\xef\xbd\xa4", "\xe3\x80\x82" => "\xef\xbd\xa1",
90
+ "\xe3\x83\xbb" => "\xef\xbd\xa5", "\xe3\x82\x9b" => "\xef\xbe\x9e",
91
+ "\xe3\x82\x9c" => "\xef\xbe\x9f", "\xe3\x83\xbc" => "\xef\xbd\xb0",
92
+ "\xe3\x80\x8c" => "\xef\xbd\xa2", "\xe3\x80\x8d" => "\xef\xbd\xa3",
93
+ "\xe3\x82\xa1" => "\xef\xbd\xa7", "\xe3\x82\xa2" => "\xef\xbd\xb1",
94
+ "\xe3\x82\xa3" => "\xef\xbd\xa8", "\xe3\x82\xa4" => "\xef\xbd\xb2",
95
+ "\xe3\x82\xa5" => "\xef\xbd\xa9", "\xe3\x82\xa6" => "\xef\xbd\xb3",
96
+ "\xe3\x82\xa7" => "\xef\xbd\xaa", "\xe3\x82\xa8" => "\xef\xbd\xb4",
97
+ "\xe3\x82\xa9" => "\xef\xbd\xab", "\xe3\x82\xaa" => "\xef\xbd\xb5",
98
+ "\xe3\x82\xab" => "\xef\xbd\xb6", "\xe3\x82\xad" => "\xef\xbd\xb7",
99
+ "\xe3\x82\xaf" => "\xef\xbd\xb8", "\xe3\x82\xb1" => "\xef\xbd\xb9",
100
+ "\xe3\x82\xb3" => "\xef\xbd\xba", "\xe3\x82\xb5" => "\xef\xbd\xbb",
101
+ "\xe3\x82\xb7" => "\xef\xbd\xbc", "\xe3\x82\xb9" => "\xef\xbd\xbd",
102
+ "\xe3\x82\xbb" => "\xef\xbd\xbe", "\xe3\x82\xbd" => "\xef\xbd\xbf",
103
+ "\xe3\x82\xbf" => "\xef\xbe\x80", "\xe3\x83\x81" => "\xef\xbe\x81",
104
+ "\xe3\x83\x83" => "\xef\xbd\xaf", "\xe3\x83\x84" => "\xef\xbe\x82",
105
+ "\xe3\x83\x86" => "\xef\xbe\x83", "\xe3\x83\x88" => "\xef\xbe\x84",
106
+ "\xe3\x83\x8a" => "\xef\xbe\x85", "\xe3\x83\x8b" => "\xef\xbe\x86",
107
+ "\xe3\x83\x8c" => "\xef\xbe\x87", "\xe3\x83\x8d" => "\xef\xbe\x88",
108
+ "\xe3\x83\x8e" => "\xef\xbe\x89", "\xe3\x83\x8f" => "\xef\xbe\x8a",
109
+ "\xe3\x83\x92" => "\xef\xbe\x8b", "\xe3\x83\x95" => "\xef\xbe\x8c",
110
+ "\xe3\x83\x98" => "\xef\xbe\x8d", "\xe3\x83\x9b" => "\xef\xbe\x8e",
111
+ "\xe3\x83\x9e" => "\xef\xbe\x8f", "\xe3\x83\x9f" => "\xef\xbe\x90",
112
+ "\xe3\x83\xa0" => "\xef\xbe\x91", "\xe3\x83\xa1" => "\xef\xbe\x92",
113
+ "\xe3\x83\xa2" => "\xef\xbe\x93", "\xe3\x83\xa3" => "\xef\xbd\xac",
114
+ "\xe3\x83\xa4" => "\xef\xbe\x94", "\xe3\x83\xa5" => "\xef\xbd\xad",
115
+ "\xe3\x83\xa6" => "\xef\xbe\x95", "\xe3\x83\xa7" => "\xef\xbd\xae",
116
+ "\xe3\x83\xa8" => "\xef\xbe\x96", "\xe3\x83\xa9" => "\xef\xbe\x97",
117
+ "\xe3\x83\xaa" => "\xef\xbe\x98", "\xe3\x83\xab" => "\xef\xbe\x99",
118
+ "\xe3\x83\xac" => "\xef\xbe\x9a", "\xe3\x83\xad" => "\xef\xbe\x9b",
119
+ "\xe3\x83\xaf" => "\xef\xbe\x9c", "\xe3\x83\xb2" => "\xef\xbd\xa6",
120
+ "\xe3\x83\xb3" => "\xef\xbe\x9d",
121
+ }
122
+ end
123
+
124
+ def h2zSym
125
+ @h2zSym ||= {
126
+ "\x20" => "\xe3\x80\x80", "\x21" => "\xef\xbc\x81",
127
+ "\x22" => "\xe2\x80\x9d", "\x23" => "\xef\xbc\x83",
128
+ "\x24" => "\xef\xbc\x84", "\x25" => "\xef\xbc\x85",
129
+ "\x26" => "\xef\xbc\x86", "\x27" => "\xe2\x80\x99",
130
+ "\x28" => "\xef\xbc\x88", "\x29" => "\xef\xbc\x89",
131
+ "\x2a" => "\xef\xbc\x8a", "\x2b" => "\xef\xbc\x8b",
132
+ "\x2c" => "\xef\xbc\x8c", "\x2d" => "\xef\xbc\x8d",
133
+ "\x2e" => "\xef\xbc\x8e", "\x2f" => "\xef\xbc\x8f",
134
+ "\x3a" => "\xef\xbc\x9a", "\x3b" => "\xef\xbc\x9b",
135
+ "\x3c" => "\xef\xbc\x9c", "\x3d" => "\xef\xbc\x9d",
136
+ "\x3e" => "\xef\xbc\x9e", "\x3f" => "\xef\xbc\x9f",
137
+ "\x40" => "\xef\xbc\xa0", "\x5b" => "\xef\xbc\xbb",
138
+ "\x5c" => "\xef\xbf\xa5", "\x5d" => "\xef\xbc\xbd",
139
+ "\x5e" => "\xef\xbc\xbe", "_" => "\xef\xbc\xbf",
140
+ "\x60" => "\xef\xbd\x80", "\x7b" => "\xef\xbd\x9b",
141
+ "\x7c" => "\xef\xbd\x9c", "\x7d" => "\xef\xbd\x9d",
142
+ "\x7e" => "\xef\xbd\x9e",
143
+ }
144
+ end
145
+
146
+ def z2hSym
147
+ @z2hSym ||= {
148
+ "\xe3\x80\x80" => "\x20", "\xef\xbc\x8c" => "\x2c",
149
+ "\xef\xbc\x8e" => "\x2e", "\xef\xbc\x9a" => "\x3a",
150
+ "\xef\xbc\x9b" => "\x3b", "\xef\xbc\x9f" => "\x3f",
151
+ "\xef\xbc\x81" => "\x21", "\xef\xbd\x80" => "\x60",
152
+ "\xef\xbc\xbe" => "\x5e", "\xef\xbc\xbf" => "_",
153
+ "\xef\xbc\x8f" => "\x2f", "\xef\xbd\x9e" => "\x7e",
154
+ "\xef\xbd\x9c" => "\x7c", "\xe2\x80\x99" => "\x27",
155
+ "\xe2\x80\x9d" => "\x22", "\xef\xbc\x88" => "\x28",
156
+ "\xef\xbc\x89" => "\x29", "\xef\xbc\xbb" => "\x5b",
157
+ "\xef\xbc\xbd" => "\x5d", "\xef\xbd\x9b" => "\x7b",
158
+ "\xef\xbd\x9d" => "\x7d", "\xef\xbc\x8b" => "\x2b",
159
+ "\xef\xbc\x8d" => "\x2d", "\xef\xbc\x9d" => "\x3d",
160
+ "\xef\xbc\x9c" => "\x3c", "\xef\xbc\x9e" => "\x3e",
161
+ "\xef\xbf\xa5" => "\x5c", "\xef\xbc\x84" => "\x24",
162
+ "\xef\xbc\x85" => "\x25", "\xef\xbc\x83" => "\x23",
163
+ "\xef\xbc\x86" => "\x26", "\xef\xbc\x8a" => "\x2a",
164
+ "\xef\xbc\xa0" => "\x40", "\xe3\x80\x9c" => "\x7e",
165
+
166
+ }
167
+ end
168
+
169
+ def h2zKanaK
170
+ @h2zKanaK ||= {
171
+ "\xef\xbd\xa1" => "\xe3\x80\x82", "\xef\xbd\xa2" => "\xe3\x80\x8c",
172
+ "\xef\xbd\xa3" => "\xe3\x80\x8d", "\xef\xbd\xa4" => "\xe3\x80\x81",
173
+ "\xef\xbd\xa5" => "\xe3\x83\xbb", "\xef\xbd\xa6" => "\xe3\x83\xb2",
174
+ "\xef\xbd\xa7" => "\xe3\x82\xa1", "\xef\xbd\xa8" => "\xe3\x82\xa3",
175
+ "\xef\xbd\xa9" => "\xe3\x82\xa5", "\xef\xbd\xaa" => "\xe3\x82\xa7",
176
+ "\xef\xbd\xab" => "\xe3\x82\xa9", "\xef\xbd\xac" => "\xe3\x83\xa3",
177
+ "\xef\xbd\xad" => "\xe3\x83\xa5", "\xef\xbd\xae" => "\xe3\x83\xa7",
178
+ "\xef\xbd\xaf" => "\xe3\x83\x83", "\xef\xbd\xb0" => "\xe3\x83\xbc",
179
+ "\xef\xbd\xb1" => "\xe3\x82\xa2", "\xef\xbd\xb2" => "\xe3\x82\xa4",
180
+ "\xef\xbd\xb3" => "\xe3\x82\xa6", "\xef\xbd\xb4" => "\xe3\x82\xa8",
181
+ "\xef\xbd\xb5" => "\xe3\x82\xaa", "\xef\xbd\xb6" => "\xe3\x82\xab",
182
+ "\xef\xbd\xb7" => "\xe3\x82\xad", "\xef\xbd\xb8" => "\xe3\x82\xaf",
183
+ "\xef\xbd\xb9" => "\xe3\x82\xb1", "\xef\xbd\xba" => "\xe3\x82\xb3",
184
+ "\xef\xbd\xbb" => "\xe3\x82\xb5", "\xef\xbd\xbc" => "\xe3\x82\xb7",
185
+ "\xef\xbd\xbd" => "\xe3\x82\xb9", "\xef\xbd\xbe" => "\xe3\x82\xbb",
186
+ "\xef\xbd\xbf" => "\xe3\x82\xbd", "\xef\xbe\x80" => "\xe3\x82\xbf",
187
+ "\xef\xbe\x81" => "\xe3\x83\x81", "\xef\xbe\x82" => "\xe3\x83\x84",
188
+ "\xef\xbe\x83" => "\xe3\x83\x86", "\xef\xbe\x84" => "\xe3\x83\x88",
189
+ "\xef\xbe\x85" => "\xe3\x83\x8a", "\xef\xbe\x86" => "\xe3\x83\x8b",
190
+ "\xef\xbe\x87" => "\xe3\x83\x8c", "\xef\xbe\x88" => "\xe3\x83\x8d",
191
+ "\xef\xbe\x89" => "\xe3\x83\x8e", "\xef\xbe\x8a" => "\xe3\x83\x8f",
192
+ "\xef\xbe\x8b" => "\xe3\x83\x92", "\xef\xbe\x8c" => "\xe3\x83\x95",
193
+ "\xef\xbe\x8d" => "\xe3\x83\x98", "\xef\xbe\x8e" => "\xe3\x83\x9b",
194
+ "\xef\xbe\x8f" => "\xe3\x83\x9e", "\xef\xbe\x90" => "\xe3\x83\x9f",
195
+ "\xef\xbe\x91" => "\xe3\x83\xa0", "\xef\xbe\x92" => "\xe3\x83\xa1",
196
+ "\xef\xbe\x93" => "\xe3\x83\xa2", "\xef\xbe\x94" => "\xe3\x83\xa4",
197
+ "\xef\xbe\x95" => "\xe3\x83\xa6", "\xef\xbe\x96" => "\xe3\x83\xa8",
198
+ "\xef\xbe\x97" => "\xe3\x83\xa9", "\xef\xbe\x98" => "\xe3\x83\xaa",
199
+ "\xef\xbe\x99" => "\xe3\x83\xab", "\xef\xbe\x9a" => "\xe3\x83\xac",
200
+ "\xef\xbe\x9b" => "\xe3\x83\xad", "\xef\xbe\x9c" => "\xe3\x83\xaf",
201
+ "\xef\xbe\x9d" => "\xe3\x83\xb3", "\xef\xbe\x9e" => "\xe3\x82\x9b",
202
+ "\xef\xbe\x9f" => "\xe3\x82\x9c",
203
+ }
204
+ end
205
+
206
+ def z2hKanaK
207
+ @z2hKanaK = {
208
+ "\xe3\x80\x81" => "\xef\xbd\xa4", "\xe3\x80\x82" => "\xef\xbd\xa1",
209
+ "\xe3\x83\xbb" => "\xef\xbd\xa5", "\xe3\x82\x9b" => "\xef\xbe\x9e",
210
+ "\xe3\x82\x9c" => "\xef\xbe\x9f", "\xe3\x83\xbc" => "\xef\xbd\xb0",
211
+ "\xe3\x80\x8c" => "\xef\xbd\xa2", "\xe3\x80\x8d" => "\xef\xbd\xa3",
212
+ "\xe3\x82\xa1" => "\xef\xbd\xa7", "\xe3\x82\xa2" => "\xef\xbd\xb1",
213
+ "\xe3\x82\xa3" => "\xef\xbd\xa8", "\xe3\x82\xa4" => "\xef\xbd\xb2",
214
+ "\xe3\x82\xa5" => "\xef\xbd\xa9", "\xe3\x82\xa6" => "\xef\xbd\xb3",
215
+ "\xe3\x82\xa7" => "\xef\xbd\xaa", "\xe3\x82\xa8" => "\xef\xbd\xb4",
216
+ "\xe3\x82\xa9" => "\xef\xbd\xab", "\xe3\x82\xaa" => "\xef\xbd\xb5",
217
+ "\xe3\x82\xab" => "\xef\xbd\xb6", "\xe3\x82\xad" => "\xef\xbd\xb7",
218
+ "\xe3\x82\xaf" => "\xef\xbd\xb8", "\xe3\x82\xb1" => "\xef\xbd\xb9",
219
+ "\xe3\x82\xb3" => "\xef\xbd\xba", "\xe3\x82\xb5" => "\xef\xbd\xbb",
220
+ "\xe3\x82\xb7" => "\xef\xbd\xbc", "\xe3\x82\xb9" => "\xef\xbd\xbd",
221
+ "\xe3\x82\xbb" => "\xef\xbd\xbe", "\xe3\x82\xbd" => "\xef\xbd\xbf",
222
+ "\xe3\x82\xbf" => "\xef\xbe\x80", "\xe3\x83\x81" => "\xef\xbe\x81",
223
+ "\xe3\x83\x83" => "\xef\xbd\xaf", "\xe3\x83\x84" => "\xef\xbe\x82",
224
+ "\xe3\x83\x86" => "\xef\xbe\x83", "\xe3\x83\x88" => "\xef\xbe\x84",
225
+ "\xe3\x83\x8a" => "\xef\xbe\x85", "\xe3\x83\x8b" => "\xef\xbe\x86",
226
+ "\xe3\x83\x8c" => "\xef\xbe\x87", "\xe3\x83\x8d" => "\xef\xbe\x88",
227
+ "\xe3\x83\x8e" => "\xef\xbe\x89", "\xe3\x83\x8f" => "\xef\xbe\x8a",
228
+ "\xe3\x83\x92" => "\xef\xbe\x8b", "\xe3\x83\x95" => "\xef\xbe\x8c",
229
+ "\xe3\x83\x98" => "\xef\xbe\x8d", "\xe3\x83\x9b" => "\xef\xbe\x8e",
230
+ "\xe3\x83\x9e" => "\xef\xbe\x8f", "\xe3\x83\x9f" => "\xef\xbe\x90",
231
+ "\xe3\x83\xa0" => "\xef\xbe\x91", "\xe3\x83\xa1" => "\xef\xbe\x92",
232
+ "\xe3\x83\xa2" => "\xef\xbe\x93", "\xe3\x83\xa3" => "\xef\xbd\xac",
233
+ "\xe3\x83\xa4" => "\xef\xbe\x94", "\xe3\x83\xa5" => "\xef\xbd\xad",
234
+ "\xe3\x83\xa6" => "\xef\xbe\x95", "\xe3\x83\xa7" => "\xef\xbd\xae",
235
+ "\xe3\x83\xa8" => "\xef\xbe\x96", "\xe3\x83\xa9" => "\xef\xbe\x97",
236
+ "\xe3\x83\xaa" => "\xef\xbe\x98", "\xe3\x83\xab" => "\xef\xbe\x99",
237
+ "\xe3\x83\xac" => "\xef\xbe\x9a", "\xe3\x83\xad" => "\xef\xbe\x9b",
238
+ "\xe3\x83\xaf" => "\xef\xbe\x9c", "\xe3\x83\xb2" => "\xef\xbd\xa6",
239
+ "\xe3\x83\xb3" => "\xef\xbe\x9d",
240
+ }
241
+ end
242
+
243
+ def h2zKanaD
244
+ @h2zKanaD ||= {
245
+ "\xef\xbd\xb3\xef\xbe\x9e" => "\xe3\x83\xb4", "\xef\xbd\xb6\xef\xbe\x9e" => "\xe3\x82\xac",
246
+ "\xef\xbd\xb7\xef\xbe\x9e" => "\xe3\x82\xae", "\xef\xbd\xb8\xef\xbe\x9e" => "\xe3\x82\xb0",
247
+ "\xef\xbd\xb9\xef\xbe\x9e" => "\xe3\x82\xb2", "\xef\xbd\xba\xef\xbe\x9e" => "\xe3\x82\xb4",
248
+ "\xef\xbd\xbb\xef\xbe\x9e" => "\xe3\x82\xb6", "\xef\xbd\xbc\xef\xbe\x9e" => "\xe3\x82\xb8",
249
+ "\xef\xbd\xbd\xef\xbe\x9e" => "\xe3\x82\xba", "\xef\xbd\xbe\xef\xbe\x9e" => "\xe3\x82\xbc",
250
+ "\xef\xbd\xbf\xef\xbe\x9e" => "\xe3\x82\xbe", "\xef\xbe\x80\xef\xbe\x9e" => "\xe3\x83\x80",
251
+ "\xef\xbe\x81\xef\xbe\x9e" => "\xe3\x83\x82", "\xef\xbe\x82\xef\xbe\x9e" => "\xe3\x83\x85",
252
+ "\xef\xbe\x83\xef\xbe\x9e" => "\xe3\x83\x87", "\xef\xbe\x84\xef\xbe\x9e" => "\xe3\x83\x89",
253
+ "\xef\xbe\x8a\xef\xbe\x9e" => "\xe3\x83\x90", "\xef\xbe\x8a\xef\xbe\x9f" => "\xe3\x83\x91",
254
+ "\xef\xbe\x8b\xef\xbe\x9e" => "\xe3\x83\x93", "\xef\xbe\x8b\xef\xbe\x9f" => "\xe3\x83\x94",
255
+ "\xef\xbe\x8c\xef\xbe\x9e" => "\xe3\x83\x96", "\xef\xbe\x8c\xef\xbe\x9f" => "\xe3\x83\x97",
256
+ "\xef\xbe\x8d\xef\xbe\x9e" => "\xe3\x83\x99", "\xef\xbe\x8d\xef\xbe\x9f" => "\xe3\x83\x9a",
257
+ "\xef\xbe\x8e\xef\xbe\x9e" => "\xe3\x83\x9c", "\xef\xbe\x8e\xef\xbe\x9f" => "\xe3\x83\x9d",
258
+ }
259
+ end
260
+
261
+ def z2hKanaD
262
+ @z2hKanaD ||= {
263
+ "\xe3\x82\xac" => "\xef\xbd\xb6\xef\xbe\x9e", "\xe3\x82\xae" => "\xef\xbd\xb7\xef\xbe\x9e",
264
+ "\xe3\x82\xb0" => "\xef\xbd\xb8\xef\xbe\x9e", "\xe3\x82\xb2" => "\xef\xbd\xb9\xef\xbe\x9e",
265
+ "\xe3\x82\xb4" => "\xef\xbd\xba\xef\xbe\x9e", "\xe3\x82\xb6" => "\xef\xbd\xbb\xef\xbe\x9e",
266
+ "\xe3\x82\xb8" => "\xef\xbd\xbc\xef\xbe\x9e", "\xe3\x82\xba" => "\xef\xbd\xbd\xef\xbe\x9e",
267
+ "\xe3\x82\xbc" => "\xef\xbd\xbe\xef\xbe\x9e", "\xe3\x82\xbe" => "\xef\xbd\xbf\xef\xbe\x9e",
268
+ "\xe3\x83\x80" => "\xef\xbe\x80\xef\xbe\x9e", "\xe3\x83\x82" => "\xef\xbe\x81\xef\xbe\x9e",
269
+ "\xe3\x83\x85" => "\xef\xbe\x82\xef\xbe\x9e", "\xe3\x83\x87" => "\xef\xbe\x83\xef\xbe\x9e",
270
+ "\xe3\x83\x89" => "\xef\xbe\x84\xef\xbe\x9e", "\xe3\x83\x90" => "\xef\xbe\x8a\xef\xbe\x9e",
271
+ "\xe3\x83\x91" => "\xef\xbe\x8a\xef\xbe\x9f", "\xe3\x83\x93" => "\xef\xbe\x8b\xef\xbe\x9e",
272
+ "\xe3\x83\x94" => "\xef\xbe\x8b\xef\xbe\x9f", "\xe3\x83\x96" => "\xef\xbe\x8c\xef\xbe\x9e",
273
+ "\xe3\x83\x97" => "\xef\xbe\x8c\xef\xbe\x9f", "\xe3\x83\x99" => "\xef\xbe\x8d\xef\xbe\x9e",
274
+ "\xe3\x83\x9a" => "\xef\xbe\x8d\xef\xbe\x9f", "\xe3\x83\x9c" => "\xef\xbe\x8e\xef\xbe\x9e",
275
+ "\xe3\x83\x9d" => "\xef\xbe\x8e\xef\xbe\x9f", "\xe3\x83\xb4" => "\xef\xbd\xb3\xef\xbe\x9e",
276
+
277
+ }
278
+ end
279
+
280
+ def hira2kata
281
+ @hira2kata ||= {
282
+ "\xe3\x81\x81" => "\xe3\x82\xa1", "\xe3\x81\x82" => "\xe3\x82\xa2",
283
+ "\xe3\x81\x83" => "\xe3\x82\xa3", "\xe3\x81\x84" => "\xe3\x82\xa4",
284
+ "\xe3\x81\x85" => "\xe3\x82\xa5", "\xe3\x81\x86" => "\xe3\x82\xa6",
285
+ "\xe3\x81\x87" => "\xe3\x82\xa7", "\xe3\x81\x88" => "\xe3\x82\xa8",
286
+ "\xe3\x81\x89" => "\xe3\x82\xa9", "\xe3\x81\x8a" => "\xe3\x82\xaa",
287
+ "\xe3\x81\x8b" => "\xe3\x82\xab", "\xe3\x81\x8c" => "\xe3\x82\xac",
288
+ "\xe3\x81\x8d" => "\xe3\x82\xad", "\xe3\x81\x8e" => "\xe3\x82\xae",
289
+ "\xe3\x81\x8f" => "\xe3\x82\xaf", "\xe3\x81\x90" => "\xe3\x82\xb0",
290
+ "\xe3\x81\x91" => "\xe3\x82\xb1", "\xe3\x81\x92" => "\xe3\x82\xb2",
291
+ "\xe3\x81\x93" => "\xe3\x82\xb3", "\xe3\x81\x94" => "\xe3\x82\xb4",
292
+ "\xe3\x81\x95" => "\xe3\x82\xb5", "\xe3\x81\x96" => "\xe3\x82\xb6",
293
+ "\xe3\x81\x97" => "\xe3\x82\xb7", "\xe3\x81\x98" => "\xe3\x82\xb8",
294
+ "\xe3\x81\x99" => "\xe3\x82\xb9", "\xe3\x81\x9a" => "\xe3\x82\xba",
295
+ "\xe3\x81\x9b" => "\xe3\x82\xbb", "\xe3\x81\x9c" => "\xe3\x82\xbc",
296
+ "\xe3\x81\x9d" => "\xe3\x82\xbd", "\xe3\x81\x9e" => "\xe3\x82\xbe",
297
+ "\xe3\x81\x9f" => "\xe3\x82\xbf", "\xe3\x81\xa0" => "\xe3\x83\x80",
298
+ "\xe3\x81\xa1" => "\xe3\x83\x81", "\xe3\x81\xa2" => "\xe3\x83\x82",
299
+ "\xe3\x81\xa3" => "\xe3\x83\x83", "\xe3\x81\xa4" => "\xe3\x83\x84",
300
+ "\xe3\x81\xa5" => "\xe3\x83\x85", "\xe3\x81\xa6" => "\xe3\x83\x86",
301
+ "\xe3\x81\xa7" => "\xe3\x83\x87", "\xe3\x81\xa8" => "\xe3\x83\x88",
302
+ "\xe3\x81\xa9" => "\xe3\x83\x89", "\xe3\x81\xaa" => "\xe3\x83\x8a",
303
+ "\xe3\x81\xab" => "\xe3\x83\x8b", "\xe3\x81\xac" => "\xe3\x83\x8c",
304
+ "\xe3\x81\xad" => "\xe3\x83\x8d", "\xe3\x81\xae" => "\xe3\x83\x8e",
305
+ "\xe3\x81\xaf" => "\xe3\x83\x8f", "\xe3\x81\xb0" => "\xe3\x83\x90",
306
+ "\xe3\x81\xb1" => "\xe3\x83\x91", "\xe3\x81\xb2" => "\xe3\x83\x92",
307
+ "\xe3\x81\xb3" => "\xe3\x83\x93", "\xe3\x81\xb4" => "\xe3\x83\x94",
308
+ "\xe3\x81\xb5" => "\xe3\x83\x95", "\xe3\x81\xb6" => "\xe3\x83\x96",
309
+ "\xe3\x81\xb7" => "\xe3\x83\x97", "\xe3\x81\xb8" => "\xe3\x83\x98",
310
+ "\xe3\x81\xb9" => "\xe3\x83\x99", "\xe3\x81\xba" => "\xe3\x83\x9a",
311
+ "\xe3\x81\xbb" => "\xe3\x83\x9b", "\xe3\x81\xbc" => "\xe3\x83\x9c",
312
+ "\xe3\x81\xbd" => "\xe3\x83\x9d", "\xe3\x81\xbe" => "\xe3\x83\x9e",
313
+ "\xe3\x81\xbf" => "\xe3\x83\x9f", "\xe3\x82\x80" => "\xe3\x83\xa0",
314
+ "\xe3\x82\x81" => "\xe3\x83\xa1", "\xe3\x82\x82" => "\xe3\x83\xa2",
315
+ "\xe3\x82\x83" => "\xe3\x83\xa3", "\xe3\x82\x84" => "\xe3\x83\xa4",
316
+ "\xe3\x82\x85" => "\xe3\x83\xa5", "\xe3\x82\x86" => "\xe3\x83\xa6",
317
+ "\xe3\x82\x87" => "\xe3\x83\xa7", "\xe3\x82\x88" => "\xe3\x83\xa8",
318
+ "\xe3\x82\x89" => "\xe3\x83\xa9", "\xe3\x82\x8a" => "\xe3\x83\xaa",
319
+ "\xe3\x82\x8b" => "\xe3\x83\xab", "\xe3\x82\x8c" => "\xe3\x83\xac",
320
+ "\xe3\x82\x8d" => "\xe3\x83\xad", "\xe3\x82\x8e" => "\xe3\x83\xae",
321
+ "\xe3\x82\x8f" => "\xe3\x83\xaf", "\xe3\x82\x90" => "\xe3\x83\xb0",
322
+ "\xe3\x82\x91" => "\xe3\x83\xb1", "\xe3\x82\x92" => "\xe3\x83\xb2",
323
+ "\xe3\x82\x93" => "\xe3\x83\xb3",
324
+ }
325
+ end
326
+
327
+ def kata2hira
328
+ @kata2hira ||= {
329
+ "\xe3\x82\xa1" => "\xe3\x81\x81", "\xe3\x82\xa2" => "\xe3\x81\x82",
330
+ "\xe3\x82\xa3" => "\xe3\x81\x83", "\xe3\x82\xa4" => "\xe3\x81\x84",
331
+ "\xe3\x82\xa5" => "\xe3\x81\x85", "\xe3\x82\xa6" => "\xe3\x81\x86",
332
+ "\xe3\x82\xa7" => "\xe3\x81\x87", "\xe3\x82\xa8" => "\xe3\x81\x88",
333
+ "\xe3\x82\xa9" => "\xe3\x81\x89", "\xe3\x82\xaa" => "\xe3\x81\x8a",
334
+ "\xe3\x82\xab" => "\xe3\x81\x8b", "\xe3\x82\xac" => "\xe3\x81\x8c",
335
+ "\xe3\x82\xad" => "\xe3\x81\x8d", "\xe3\x82\xae" => "\xe3\x81\x8e",
336
+ "\xe3\x82\xaf" => "\xe3\x81\x8f", "\xe3\x82\xb0" => "\xe3\x81\x90",
337
+ "\xe3\x82\xb1" => "\xe3\x81\x91", "\xe3\x82\xb2" => "\xe3\x81\x92",
338
+ "\xe3\x82\xb3" => "\xe3\x81\x93", "\xe3\x82\xb4" => "\xe3\x81\x94",
339
+ "\xe3\x82\xb5" => "\xe3\x81\x95", "\xe3\x82\xb6" => "\xe3\x81\x96",
340
+ "\xe3\x82\xb7" => "\xe3\x81\x97", "\xe3\x82\xb8" => "\xe3\x81\x98",
341
+ "\xe3\x82\xb9" => "\xe3\x81\x99", "\xe3\x82\xba" => "\xe3\x81\x9a",
342
+ "\xe3\x82\xbb" => "\xe3\x81\x9b", "\xe3\x82\xbc" => "\xe3\x81\x9c",
343
+ "\xe3\x82\xbd" => "\xe3\x81\x9d", "\xe3\x82\xbe" => "\xe3\x81\x9e",
344
+ "\xe3\x82\xbf" => "\xe3\x81\x9f", "\xe3\x83\x80" => "\xe3\x81\xa0",
345
+ "\xe3\x83\x81" => "\xe3\x81\xa1", "\xe3\x83\x82" => "\xe3\x81\xa2",
346
+ "\xe3\x83\x83" => "\xe3\x81\xa3", "\xe3\x83\x84" => "\xe3\x81\xa4",
347
+ "\xe3\x83\x85" => "\xe3\x81\xa5", "\xe3\x83\x86" => "\xe3\x81\xa6",
348
+ "\xe3\x83\x87" => "\xe3\x81\xa7", "\xe3\x83\x88" => "\xe3\x81\xa8",
349
+ "\xe3\x83\x89" => "\xe3\x81\xa9", "\xe3\x83\x8a" => "\xe3\x81\xaa",
350
+ "\xe3\x83\x8b" => "\xe3\x81\xab", "\xe3\x83\x8c" => "\xe3\x81\xac",
351
+ "\xe3\x83\x8d" => "\xe3\x81\xad", "\xe3\x83\x8e" => "\xe3\x81\xae",
352
+ "\xe3\x83\x8f" => "\xe3\x81\xaf", "\xe3\x83\x90" => "\xe3\x81\xb0",
353
+ "\xe3\x83\x91" => "\xe3\x81\xb1", "\xe3\x83\x92" => "\xe3\x81\xb2",
354
+ "\xe3\x83\x93" => "\xe3\x81\xb3", "\xe3\x83\x94" => "\xe3\x81\xb4",
355
+ "\xe3\x83\x95" => "\xe3\x81\xb5", "\xe3\x83\x96" => "\xe3\x81\xb6",
356
+ "\xe3\x83\x97" => "\xe3\x81\xb7", "\xe3\x83\x98" => "\xe3\x81\xb8",
357
+ "\xe3\x83\x99" => "\xe3\x81\xb9", "\xe3\x83\x9a" => "\xe3\x81\xba",
358
+ "\xe3\x83\x9b" => "\xe3\x81\xbb", "\xe3\x83\x9c" => "\xe3\x81\xbc",
359
+ "\xe3\x83\x9d" => "\xe3\x81\xbd", "\xe3\x83\x9e" => "\xe3\x81\xbe",
360
+ "\xe3\x83\x9f" => "\xe3\x81\xbf", "\xe3\x83\xa0" => "\xe3\x82\x80",
361
+ "\xe3\x83\xa1" => "\xe3\x82\x81", "\xe3\x83\xa2" => "\xe3\x82\x82",
362
+ "\xe3\x83\xa3" => "\xe3\x82\x83", "\xe3\x83\xa4" => "\xe3\x82\x84",
363
+ "\xe3\x83\xa5" => "\xe3\x82\x85", "\xe3\x83\xa6" => "\xe3\x82\x86",
364
+ "\xe3\x83\xa7" => "\xe3\x82\x87", "\xe3\x83\xa8" => "\xe3\x82\x88",
365
+ "\xe3\x83\xa9" => "\xe3\x82\x89", "\xe3\x83\xaa" => "\xe3\x82\x8a",
366
+ "\xe3\x83\xab" => "\xe3\x82\x8b", "\xe3\x83\xac" => "\xe3\x82\x8c",
367
+ "\xe3\x83\xad" => "\xe3\x82\x8d", "\xe3\x83\xae" => "\xe3\x82\x8e",
368
+ "\xe3\x83\xaf" => "\xe3\x82\x8f", "\xe3\x83\xb0" => "\xe3\x82\x90",
369
+ "\xe3\x83\xb1" => "\xe3\x82\x91", "\xe3\x83\xb2" => "\xe3\x82\x92",
370
+ "\xe3\x83\xb3" => "\xe3\x82\x93",
371
+ }
372
+ end
373
+ end
374
+ end
375
+ end
@@ -0,0 +1,36 @@
1
+ module Unicode
2
+ class Japanese
3
+
4
+ class << self
5
+ def convert(action, string)
6
+ pattern = Pattern.__send__(action)# rescue raise(NotImplementedError, "Undefined Pattern: #{action}")
7
+ table = Table .__send__(action)# rescue raise(NotImplementedError, "Undefined Table: #{action}")
8
+ string.gsub!(pattern){table[$1]}
9
+ return string
10
+ end
11
+
12
+ def z2h(str)
13
+ str = str.to_s.dup
14
+ convert('z2hKanaD', str)
15
+ convert('z2hKanaK', str)
16
+ convert('z2hNum', str)
17
+ convert('z2hAlpha', str)
18
+ convert('z2hSym', str)
19
+ str
20
+ end
21
+
22
+ def h2z(str)
23
+ str = str.to_s.dup
24
+ convert('h2zKanaD', str)
25
+ convert('h2zKanaK', str)
26
+ convert('h2zNum', str)
27
+ convert('h2zAlpha', str)
28
+ convert('h2zSym', str)
29
+ str
30
+ end
31
+
32
+ end
33
+
34
+
35
+ end
36
+ end
@@ -0,0 +1,3 @@
1
+ require 'unicode/japanese'
2
+ require 'unicode/japanese/pattern'
3
+ require 'unicode/japanese/table'
@@ -0,0 +1,30 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../init'
3
+
4
+ class UnicodeJapaneseTest < Test::Unit::TestCase
5
+
6
+ ######################################################################
7
+ ### Basic
8
+
9
+ def test_accept_nil
10
+ assert_nothing_raised do
11
+ Unicode::Japanese.z2h(nil)
12
+ end
13
+ end
14
+
15
+ def test_dup
16
+ assert_equal "ア", Unicode::Japanese.z2h("ア")
17
+ end
18
+
19
+ ######################################################################
20
+ ### Convertions
21
+
22
+ def test_z2h
23
+ assert_equal "スズキ アイリ", Unicode::Japanese.z2h("スズキ アイリ")
24
+ end
25
+
26
+ def test_h2z
27
+ assert_equal "スズキ アイリ", Unicode::Japanese.h2z("スズキ アイリ")
28
+ end
29
+
30
+ end
@@ -0,0 +1,12 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = "unicode_japanese"
3
+ s.version = "0.2"
4
+ s.date = "2008-11-08"
5
+ s.summary = ""
6
+ s.email = "maiha@wota.jp"
7
+ s.homepage = "https://github.com/sunfmin/unicode_japanese"
8
+ s.description = ""
9
+ s.has_rdoc = true
10
+ s.authors = ["maiha"]
11
+ s.files = %w(MIT-LICENSE lib/unicode/japanese.rb lib/unicode/japanese/table.rb lib/unicode/japanese/pattern.rb lib/unicode_japanese.rb test/unicode_japanese_test.rb unicode_japanese.gemspec Rakefile README)
12
+ end
metadata ADDED
@@ -0,0 +1,74 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: unicode_japanese
3
+ version: !ruby/object:Gem::Version
4
+ hash: 15
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 2
9
+ version: "0.2"
10
+ platform: ruby
11
+ authors:
12
+ - maiha
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2008-11-08 00:00:00 +08:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description: ""
22
+ email: maiha@wota.jp
23
+ executables: []
24
+
25
+ extensions: []
26
+
27
+ extra_rdoc_files: []
28
+
29
+ files:
30
+ - MIT-LICENSE
31
+ - lib/unicode/japanese.rb
32
+ - lib/unicode/japanese/table.rb
33
+ - lib/unicode/japanese/pattern.rb
34
+ - lib/unicode_japanese.rb
35
+ - test/unicode_japanese_test.rb
36
+ - unicode_japanese.gemspec
37
+ - Rakefile
38
+ - README
39
+ has_rdoc: true
40
+ homepage: https://github.com/sunfmin/unicode_japanese
41
+ licenses: []
42
+
43
+ post_install_message:
44
+ rdoc_options: []
45
+
46
+ require_paths:
47
+ - lib
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ hash: 3
54
+ segments:
55
+ - 0
56
+ version: "0"
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ hash: 3
63
+ segments:
64
+ - 0
65
+ version: "0"
66
+ requirements: []
67
+
68
+ rubyforge_project:
69
+ rubygems_version: 1.4.1
70
+ signing_key:
71
+ specification_version: 3
72
+ summary: ""
73
+ test_files: []
74
+