k2j 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e1a85f920c5c33e26186de2b016e0b687de4ef4c
4
+ data.tar.gz: c380f39b4bc67d4b2081cf7fc13768591f0d8b0f
5
+ SHA512:
6
+ metadata.gz: 3a911bb6092e74c08fe227bb753c1b798d53907257257f2a8fde54ab71f89237b1ab4922be24f685f744e487b2b8f1a81791fef8d5278dc24600714b0421427c
7
+ data.tar.gz: 013d9d90b6110f5dce941b3ca73e272b3738bae51a2b4f8f5274b7723447da5bded6cbf9b0019ea0b599c6749b7d372b58eb1bb85845ad47e4fffa72bfba0048
@@ -0,0 +1,35 @@
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /test/tmp/
9
+ /test/version_tmp/
10
+ /tmp/
11
+
12
+ ## Specific to RubyMotion:
13
+ .dat*
14
+ .repl_history
15
+ build/
16
+
17
+ ## Documentation cache and generated files:
18
+ /.yardoc/
19
+ /_yardoc/
20
+ /doc/
21
+ /rdoc/
22
+
23
+ ## Environment normalisation:
24
+ /.bundle/
25
+ /vendor/bundle
26
+ /lib/bundler/man/
27
+
28
+ # for a library or gem, you might want to ignore these files since the code is
29
+ # intended to run in multiple environments; otherwise, check them in:
30
+ # Gemfile.lock
31
+ # .ruby-version
32
+ # .ruby-gemset
33
+
34
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
35
+ .rvmrc
@@ -0,0 +1,2 @@
1
+ # k2j.rb
2
+ 한글 독음을 일본어 히라가나로 변환
@@ -0,0 +1,9 @@
1
+ require 'k2j/version'
2
+ require 'k2j/converter'
3
+
4
+ # K2J Module
5
+ #
6
+ # @see Converter
7
+ # @version 0.1.0
8
+ module K2J
9
+ end
@@ -0,0 +1,96 @@
1
+ # encoding: utf-8
2
+ require 'k2j/maps'
3
+
4
+ module K2J
5
+ # K2J Converter
6
+ #
7
+ # @version 0.1.0
8
+ class Converter
9
+ class << self
10
+ initialized = false
11
+
12
+ def initialize
13
+ break_map(K2J::Map::CHO, K2J::Map.method(:cho))
14
+ break_map(K2J::Map::JOONG, K2J::Map.method(:joong))
15
+ break_map(K2J::Map::JONG, K2J::Map.method(:jong))
16
+
17
+ @initialized = true
18
+ end
19
+
20
+ def convert(str)
21
+ initialize unless @initialized
22
+
23
+ result = ''
24
+ str.size.times do |i|
25
+ ch = str[i]
26
+
27
+ special = special_case(str[i - 1], ch, str[i + 1])
28
+ unless special.nil?
29
+ result << special
30
+ next
31
+ end
32
+
33
+ col = index_of(K2J::Map::CHO, K2J::Map.cho(ch))
34
+ row = index_of(K2J::Map::JOONG, K2J::Map.joong(ch))
35
+ gana = K2J::Map::HIRAGANA[col * 13 + row]
36
+
37
+ result << (gana.nil? ? ch : gana)
38
+
39
+ ad = index_of(K2J::Map::JONG, K2J::Map.jong(ch))
40
+ case ad
41
+ when 0
42
+ result << "ん"
43
+ when 1
44
+ result << "っ"
45
+ end
46
+ end
47
+
48
+ result
49
+ end
50
+
51
+ private
52
+ def special_case(ch1, ch2, ch3)
53
+ case ch2
54
+ when '-'
55
+ if ch1 != '-' and ch3 != '-'
56
+ "う"
57
+ elsif ch1 != '-'
58
+ '-'
59
+ else
60
+ ''
61
+ end
62
+ when '.'
63
+ "。"
64
+ when '와'
65
+ 'わ'
66
+ when '워'
67
+ 'を'
68
+ when "\n"
69
+ "\n"
70
+ when ' '
71
+ ' '
72
+ else
73
+ nil
74
+ end
75
+ end
76
+
77
+ def index_of(map, ch)
78
+ map.each_with_index do |k, i|
79
+ k.size.times do |j|
80
+ if map[i][j] == ch
81
+ return i
82
+ end
83
+ end
84
+ end
85
+ end
86
+
87
+ def break_map(map, func)
88
+ map.each_with_index do |k, i|
89
+ k.size.times do |j|
90
+ map[i] = map[i].gsub(map[i][j], func.call(map[i][j]))
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,41 @@
1
+ # encoding: utf-8
2
+
3
+ module K2J
4
+ module Map
5
+ KEY = ['ㅁ', 'ㅠ', 'ㅊ', 'ㅇ', 'ㄷ', 'ㄹ', 'ㅎ', 'ㅗ', 'ㅑ', 'ㅓ', 'ㅏ', 'ㅣ', 'ㅡ', 'ㅜ', 'ㅐ', 'ㅔ', 'ㅂ', 'ㄱ', 'ㄴ', 'ㅅ', 'ㅕ', 'ㅍ', 'ㅈ', 'ㅌ', 'ㅛ', 'ㅋ']
6
+ CHO = ["아", "카까", "가", "사", "자", "타차짜따", "다", "나", "하", "바", "파빠", "마", "라"]
7
+ JOONG = ["아", "이", "우으", "에", "오", "x", "x", "x", "x", "x", "야", "유", "요"]
8
+ JONG = ["안앙암", "앗앚앋앛압악"]
9
+ HIRAGANA = [
10
+ "あ", "い", "う", "え", "お", "ぁ", "ぃ", "ぅ", "ぇ", "ぉ", "や", "ゆ", "よ",
11
+ "か", "き", "く", "け", "こ", "x", "x", "x", "x", "x", "きゃ", "きゅ", "きょ",
12
+ "が", "ぎ", "ぐ", "げ", "ご", "x", "x", "x", "x", "x", "ぎゃ", "ぎゅ", "ぎょ",
13
+ "さ", "し", "す", "せ", "そ", "x", "x", "x", "x", "x", "しゃ", "しゅ", "しょ",
14
+ "ざ", "じ", "ず", "ぜ", "ぞ", "x", "x", "x", "x", "x", "じゃ", "じゅ", "じょ",
15
+ "た", "ち", "つ", "て", "と", "x", "x", "x", "x", "x", "ちゃ", "ちゅ", "ちょ",
16
+ "だ", "ぢ", "づ", "で", "ど", "x", "x", "x", "x", "x", "ぢゃ", "ぢゅ", "ぢょ",
17
+ "な", "に", "ぬ", "ね", "の", "x", "x", "x", "x", "x", "にゃ", "にゅ", "にょ",
18
+ "は", "ひ", "ふ", "へ", "ほ", "x", "x", "x", "x", "x", "ひゃ", "ひゅ", "ひょ",
19
+ "ば", "び", "ぶ", "べ", "ぼ", "x", "x", "x", "x", "x", "びゃ", "びゅ", "びょ",
20
+ "ぱ", "ぴ", "ぷ", "ぺ", "ぽ", "x", "x", "x", "x", "x", "ぴゃ", "ぴゅ", "ぴょ",
21
+ "ま", "み", "む", "め", "も", "x", "x", "x", "x", "x", "みゃ", "みゅ", "みょ",
22
+ "ら", "り", "る", "れ", "ろ", "x", "x", "x", "x", "x", "りゃ", "りゅ", "りょ"]
23
+
24
+ def cho(a)
25
+ r = ((a[0].ord - 44032) / 28) / 21
26
+ (r + 4352).chr(Encoding::UTF_8)
27
+ end
28
+
29
+ def joong(a)
30
+ r = ((a[0].ord - 44032) / 28) % 21
31
+ (r + 4449).chr(Encoding::UTF_8)
32
+ end
33
+
34
+ def jong(a)
35
+ r = (a[0].ord - 44032) % 28
36
+ (r + 4520 - 1).chr(Encoding::UTF_8)
37
+ end
38
+
39
+ module_function :cho, :joong, :jong
40
+ end
41
+ end
@@ -0,0 +1,4 @@
1
+ module K2J
2
+ # version of the module
3
+ VERSION = '0.1.0'
4
+ end
metadata ADDED
@@ -0,0 +1,50 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: k2j
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - SuHun Han (ssut)
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-12-12 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Hangul to hiragana.
14
+ email: ssut@ssut.me
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - ".gitignore"
20
+ - README.md
21
+ - lib/k2j.rb
22
+ - lib/k2j/converter.rb
23
+ - lib/k2j/maps.rb
24
+ - lib/k2j/version.rb
25
+ homepage: https://github.com/ssut/k2j.rb
26
+ licenses:
27
+ - MIT
28
+ metadata: {}
29
+ post_install_message:
30
+ rdoc_options: []
31
+ require_paths:
32
+ - lib
33
+ required_ruby_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ required_rubygems_version: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ requirements: []
44
+ rubyforge_project:
45
+ rubygems_version: 2.4.5
46
+ signing_key:
47
+ specification_version: 4
48
+ summary: Hangul to hiragana.
49
+ test_files: []
50
+ has_rdoc: