gimchi 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,147 @@
1
+ # gimchi
2
+
3
+ ## 개요
4
+
5
+ Gimchi는 한글 스트링을 다롭니다.
6
+ 국립 국어원 어문 규정에 정의된 한글의 표준 발음법과
7
+ 로마자 표기법을 (일부) 구현한 것이 주요 기능입니다.
8
+
9
+ 또한 다음의 기능들을 제공합니다.
10
+ - 주어진 캐릭터가 한글인지 판단
11
+ - 한글을 초성, 중성, 종성으로 분리하고, 이를 다시 합치는 기능
12
+ - 숫자 표기를 한글 표현으로 변환
13
+
14
+ ## 설치
15
+ ```
16
+ gem install gimchi
17
+ ```
18
+
19
+ ## 사용법
20
+
21
+ ### Gimchi::Korean 인스턴스의 생성
22
+ ```ruby
23
+ require 'gimchi'
24
+
25
+ ko = Gimchi::Korean.new
26
+ ```
27
+
28
+ ### 한글 캐릭터 여부 판단
29
+ ```ruby
30
+ ko.korean_char? 'ㄱ' # true
31
+ ko.complete_korean_char? 'ㄱ' # false
32
+
33
+ ko.korean_char? 'ㅏ' # true
34
+ ko.complete_korean_char? 'ㅏ' # false
35
+
36
+ ko.korean_char? '가' # true
37
+ ko.complete_korean_char? '가' # true
38
+
39
+ # Alias of korean_char?
40
+ ko.kchar? '가' # true
41
+ ```
42
+
43
+ ### Gimchi::Korean::Char
44
+ ```ruby
45
+ kc = ko.kchar "한"
46
+ kc.class # Gimchi::Korean::Char
47
+
48
+ kc.chosung # "ㅎ"
49
+ kc.jungsung # "ㅏ"
50
+ kc.jongsung # "ㄴ"
51
+ kc.to_a # ["ㅎ", "ㅏ", "ㄴ"]
52
+ kc.to_s # "한"
53
+
54
+ kc.complete? # true
55
+ kc.partial? # false
56
+ ko.kchar("ㅏ").partial? # true
57
+
58
+ # Modifying its elements
59
+ kc.chosung = 'ㄷ'
60
+ kc.jongsung = 'ㄹ'
61
+ kc.to_s # "달"
62
+ kc.complete? # true
63
+ kc.partial? # false
64
+
65
+ kc.chosung = nil
66
+ kc.jongsung = nil
67
+ kc.complete? # false
68
+ kc.partial? # true
69
+
70
+ # Alias of kchar
71
+ kc = ko.korean_char "한"
72
+
73
+ # Array of Gimchi::Korean::Char's
74
+ arr = ko.dissect '이것은 한글입니다.'
75
+ # [이, 것, 은, " ", 한, 글, 입, 니, 다, "."]
76
+
77
+ arr[0].class # Gimchi::Korean::Char
78
+ ```
79
+
80
+ ### 숫자 읽기
81
+ ```ruby
82
+ ko.read_number(1999) # "천 구백 구십 구"
83
+ ko.read_number(- 100.123) # "마이너스 백점일이삼"
84
+ ko.read_number("153,191,100,678.3214")
85
+ # "천 오백 삼십 일억 구천 백 십만 육백 칠십 팔점삼이일사"
86
+
87
+ # 나이, 시간 ( -살, -시 )
88
+ ko.read_number("20살") # "스무살"
89
+ ko.read_number("13 살") # "열세 살"
90
+ ko.read_number("7시 30분") # "일곱시 삼십분"
91
+ ```
92
+
93
+ ### 표준 발음 (부분 구현)
94
+ ```ruby
95
+ str = "됐어 됐어 이제 그런 가르침은 됐어 매일 아침 7 시 30 분까지 우릴 조그만 교실로 몰아넣고"
96
+ ko.pronounce str
97
+ # "돼써 돼써 이제 그런 가르치믄 돼써 매일 아침 일곱 시 삼십 분까지 우릴 조그만 교실로 모라너코"
98
+
99
+ ko.pronounce str, :slur => true
100
+ # "돼써 돼써 이제 그런 가르치믄 돼써 매이 라치 밀곱 씨 삼십 뿐까지 우릴 조그만 교실로 모라너코"
101
+
102
+ ko.pronounce str, :pronounce_each_char => true
103
+ # "됃어 됃어 이제 그런 가르침은 됃어 매일 아침 일곱 시 삼십 분까지 우릴 조그만 교실로 몰아너고"
104
+
105
+ ko.pronounce str, :number => false
106
+ # "돼써 돼써 이제 그런 가르치믄 돼써 매일 아침 7 시 30 분까지 우릴 조그만 교실로 모라너코"
107
+ ```
108
+
109
+ ### 로마자 표기 (부분 구현)
110
+ ```ruby
111
+ str = "됐어 됐어 이제 그런 가르침은 됐어 매일 아침 7 시 30 분까지 우릴 조그만 교실로 몰아넣고"
112
+
113
+ ko.romanize str
114
+ # "Dwaesseo dwaesseo ije geureon gareuchimeun dwaesseo mae-il achim ilgop si samsip bunkkaji uril jogeuman gyosillo moraneoko"
115
+ ko.romanize str, :slur => true
116
+ # "Dwaesseo dwaesseo ije geureon gareuchimeun dwaesseo mae-i rachi milgop ssi samsip ppunkkaji uril jogeuman gyosillo moraneoko"
117
+ ko.romanize str, :as_pronounced => false
118
+ # "Dwaet-eo dwaet-eo ije geureon gareuchim-eun dwaet-eo mae-il achim ilgop si samsip bunkkaji uril jogeuman gyosillo mol-aneogo"
119
+ ko.romanize str, :number => false
120
+ # "Dwaesseo dwaesseo ije geureon gareuchimeun dwaesseo mae-il achim 7 si 30 bunkkaji uril jogeuman gyosillo moraneoko"
121
+ ```
122
+
123
+ ## 구현의 한계
124
+
125
+ 표준 발음법과 로마어 표기법을 모두 구현하기 위해서는 형태소 분석과 충분한
126
+ 사전, 그리고 문맥의 의미 분석이 필요합니다. 이 모든 것이 준비된다고 할 지라도
127
+ 완벽한 결과를 얻는 것은 불가능합니다.
128
+ 이는 현재 gimchi가 목표로 하는 것이 아니며 gimchi는 간단한 구현으로 어느 수준
129
+ 이상의 결과를 얻는 것을 목표로 합니다. 현재 구현의 한계 내에서 정확도를 올리기
130
+ 위해 Ad-hoc한 patch 등이 코드에 상당량 포함된 상태인데 이를 정제하고 체계화하는
131
+ 노력이 필요합니다.
132
+
133
+ ## Contributing to gimchi
134
+
135
+ * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
136
+ * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
137
+ * Fork the project
138
+ * Start a feature/bugfix branch
139
+ * Commit and push until you are happy with your contribution
140
+ * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
141
+ * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
142
+
143
+ ## Copyright
144
+
145
+ Copyright (c) 2011 Junegunn Choi. See LICENSE.txt for
146
+ further details.
147
+
@@ -34,31 +34,46 @@ ko.complete_korean_char? 'ㅏ' # false
34
34
 
35
35
  ko.korean_char? '가' # true
36
36
  ko.complete_korean_char? '가' # true
37
+
38
+ # Shorthand of korean_char?
39
+ ko.kchar? '가' # true
37
40
  ```
38
41
 
39
42
  ### Usage of Gimchi::Korean::Char
40
43
  ```ruby
44
+ kc = ko.kchar "한"
45
+ kc.class # Gimchi::Korean::Char
46
+
47
+ kc.chosung # "ㅎ"
48
+ kc.jungsung # "ㅏ"
49
+ kc.jongsung # "ㄴ"
50
+ kc.to_a # ["ㅎ", "ㅏ", "ㄴ"]
51
+ kc.to_s # "한"
52
+
53
+ kc.complete? # true
54
+ kc.partial? # false
55
+ ko.kchar("ㅏ").partial? # true
56
+
57
+ # Modifying its elements
58
+ kc.chosung = 'ㄷ'
59
+ kc.jongsung = 'ㄹ'
60
+ kc.to_s # "달"
61
+ kc.complete? # true
62
+ kc.partial? # false
63
+
64
+ kc.chosung = nil
65
+ kc.jongsung = nil
66
+ kc.complete? # false
67
+ kc.partial? # true
68
+
69
+ # Alias of kchar
70
+ kc = ko.korean_char "한"
71
+
72
+ # Array of Gimchi::Korean::Char's
41
73
  arr = ko.dissect '이것은 한글입니다.'
42
74
  # [이, 것, 은, " ", 한, 글, 입, 니, 다, "."]
43
75
 
44
- arr[4].class # Gimchi::Korean::Char
45
-
46
- arr[4].chosung # "ㅎ"
47
- arr[4].jungsung # "ㅏ"
48
- arr[4].jongsung # "ㄴ"
49
- arr[4].to_a # ["ㅎ", "ㅏ", "ㄴ"]
50
- arr[4].to_s # "한"
51
-
52
- arr[4].chosung = 'ㄷ'
53
- arr[4].jongsung = 'ㄹ'
54
- arr[4].to_s # "달"
55
- arr[4].complete? # true
56
- arr[4].partial? # false
57
-
58
- arr[4].chosung = nil
59
- arr[4].jongsung = nil
60
- arr[4].complete? # false
61
- arr[4].partial? # true
76
+ arr[0].class # Gimchi::Korean::Char
62
77
  ```
63
78
 
64
79
  ### Reading numbers in Korean
@@ -17,10 +17,9 @@ class Korean
17
17
  # @param [Gimchi::Korean] kor Gimchi::Korean instance
18
18
  # @param [String] kchar Korean character string
19
19
  def initialize kor, kchar
20
- raise ArgumentError('Not a korean character') unless kor.korean_char? kchar
20
+ raise ArgumentError.new('Not a korean character') unless kor.korean_char? kchar
21
21
 
22
22
  @kor = kor
23
- @cur = []
24
23
  if @kor.complete_korean_char? kchar
25
24
  c = kchar.unpack('U').first
26
25
  n = c - 0xAC00
@@ -101,6 +100,10 @@ class Korean
101
100
  chosung.nil? || jungsung.nil?
102
101
  end
103
102
 
103
+ def inspect
104
+ "#{to_s}(#{to_a.join('/')})"
105
+ end
106
+
104
107
  private
105
108
  # Three components of Korean::Char are extended to support #vowel? and #consonant? method.
106
109
  module Component
@@ -56,6 +56,7 @@ class Korean
56
56
  complete_korean_char?(ch) ||
57
57
  (chosungs + jungsungs + jongsungs).include?(ch)
58
58
  end
59
+ alias kchar? korean_char?
59
60
 
60
61
  # Checks if the given character is a "complete" korean character.
61
62
  # "Complete" Korean character must have chosung and jungsung, with optional jongsung.
@@ -76,6 +77,14 @@ class Korean
76
77
  }
77
78
  end
78
79
 
80
+ # Returns a Korean::Char object for the given Korean character.
81
+ # @param [String] ch Korean character in String
82
+ # @return [Korean::Char] Korean::Char instance
83
+ def kchar ch
84
+ Korean::Char.new(self, ch)
85
+ end
86
+ alias korean_char kchar
87
+
79
88
  # Reads numeric expressions in Korean way.
80
89
  # @param [String, Number] str Numeric type or String containing numeric expressions
81
90
  # @return [String] Output string
@@ -7,15 +7,38 @@ class TestGimchi < Test::Unit::TestCase
7
7
  def test_korean_char
8
8
  ko = Gimchi::Korean.new
9
9
  assert_equal true, ko.korean_char?('ㄱ') # true
10
+ assert_equal true, ko.kchar?('ㄱ') # true
10
11
  assert_equal true, ko.korean_char?('ㅏ') # true
11
12
  assert_equal true, ko.korean_char?('가') # true
12
13
  assert_equal true, ko.korean_char?('값') # true
14
+ assert_equal true, ko.kchar?('값') # true
13
15
 
14
16
  assert_equal false, ko.korean_char?('a') # false
15
17
  assert_equal false, ko.korean_char?('1') # false
16
18
  assert_raise(ArgumentError) { ko.korean_char?('두자') }
19
+ assert_raise(ArgumentError) { ko.kchar?('두자') }
17
20
  end
18
21
 
22
+ def test_kchar
23
+ ko = Gimchi::Korean.new
24
+ # Alias
25
+ [ko.kchar('한'), ko.korean_char('한')].each do |kc|
26
+ assert_equal Gimchi::Korean::Char, kc.class
27
+ assert_equal "ㅎ", kc.chosung
28
+ assert_equal "ㅏ", kc.jungsung
29
+ assert_equal "ㄴ", kc.jongsung
30
+ assert_equal ["ㅎ", "ㅏ", "ㄴ"], kc.to_a
31
+ assert_equal "한", kc.to_s
32
+ assert_equal true, kc.complete?
33
+ assert_equal false, kc.partial?
34
+ end
35
+
36
+ assert_raise(ArgumentError) { ko.kchar('한글') }
37
+ assert_raise(ArgumentError) { ko.kchar('A') }
38
+
39
+ assert_equal true, ko.kchar("ㅏ").partial?
40
+ end
41
+
19
42
  def test_complete_korean_char
20
43
  ko = Gimchi::Korean.new
21
44
 
@@ -44,6 +67,7 @@ class TestGimchi < Test::Unit::TestCase
44
67
  assert_equal 'ㅇ', ch.chosung
45
68
  assert_equal 'ㅡ', ch.jungsung
46
69
  assert_equal 'ㄴ', ch.jongsung
70
+ assert_equal "은(ㅇ/ㅡ/ㄴ)", ch.inspect
47
71
 
48
72
  ch.chosung = 'ㄱ'
49
73
  ch.jongsung = 'ㅁ'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gimchi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-10-17 00:00:00.000000000Z
12
+ date: 2011-12-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
- requirement: &2151822000 !ruby/object:Gem::Requirement
16
+ requirement: &2152021800 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.0.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *2151822000
24
+ version_requirements: *2152021800
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: jeweler
27
- requirement: &2151820760 !ruby/object:Gem::Requirement
27
+ requirement: &2152177100 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.5.2
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *2151820760
35
+ version_requirements: *2152177100
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rcov
38
- requirement: &2151819420 !ruby/object:Gem::Requirement
38
+ requirement: &2152174620 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2151819420
46
+ version_requirements: *2152174620
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: ansi
49
- requirement: &2151818040 !ruby/object:Gem::Requirement
49
+ requirement: &2152190900 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: 1.2.2
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2151818040
57
+ version_requirements: *2152190900
58
58
  description: Gimchi knows how to pronounce Korean strings and how to write them in
59
59
  roman alphabet.
60
60
  email: junegunn.c@gmail.com
@@ -62,7 +62,7 @@ executables: []
62
62
  extensions: []
63
63
  extra_rdoc_files:
64
64
  - LICENSE.txt
65
- - README.ko.rdoc
65
+ - README.ko.markdown
66
66
  - README.markdown
67
67
  files:
68
68
  - config/default.yml
@@ -72,7 +72,7 @@ files:
72
72
  - lib/gimchi/patch_1.8.rb
73
73
  - lib/gimchi/pronouncer.rb
74
74
  - LICENSE.txt
75
- - README.ko.rdoc
75
+ - README.ko.markdown
76
76
  - README.markdown
77
77
  - test/helper.rb
78
78
  - test/pronunciation.yml
@@ -93,7 +93,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
93
93
  version: '0'
94
94
  segments:
95
95
  - 0
96
- hash: -2449462105389622479
96
+ hash: -4230473525462168510
97
97
  required_rubygems_version: !ruby/object:Gem::Requirement
98
98
  none: false
99
99
  requirements:
@@ -102,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
102
  version: '0'
103
103
  requirements: []
104
104
  rubyforge_project:
105
- rubygems_version: 1.8.6
105
+ rubygems_version: 1.8.10
106
106
  signing_key:
107
107
  specification_version: 3
108
108
  summary: Gimchi reads Korean.
@@ -1,118 +0,0 @@
1
- = gimchi
2
-
3
- == 개요
4
-
5
- Gimchi는 한글 스트링을 다롭니다.
6
- 국립 국어원 어문 규정에 정의된 한글의 표준 발음법과
7
- 로마자 표기법을 (일부) 구현한 것이 주요 기능입니다.
8
-
9
- 또한 다음의 기능들을 제공합니다.
10
- - 주어진 캐릭터가 한글인지 판단
11
- - 한글을 초성, 중성, 종성으로 분리하고, 이를 다시 합치는 기능
12
- - 숫자 표기를 한글 표현으로 변환
13
-
14
- == 설치
15
- gem install gimchi
16
-
17
- == 사용법
18
-
19
- === Gimchi::Korean 인스턴스의 생성
20
- require 'gimchi'
21
-
22
- ko = Gimchi::Korean.new
23
-
24
- === 한글 캐릭터 여부 판단
25
- ko.korean_char? 'ㄱ' # true
26
- ko.complete_korean_char? 'ㄱ' # false
27
-
28
- ko.korean_char? 'ㅏ' # true
29
- ko.complete_korean_char? 'ㅏ' # false
30
-
31
- ko.korean_char? '가' # true
32
- ko.complete_korean_char? '가' # true
33
-
34
- === Gimchi::Korean::Char
35
- arr = ko.dissect '이것은 한글입니다.'
36
- # [이, 것, 은, " ", 한, 글, 입, 니, 다, "."]
37
-
38
- arr[4].class # Gimchi::Korean::Char
39
-
40
- arr[4].chosung # "ㅎ"
41
- arr[4].jungsung # "ㅏ"
42
- arr[4].jongsung # "ㄴ"
43
- arr[4].to_a # ["ㅎ", "ㅏ", "ㄴ"]
44
- arr[4].to_s # "한"
45
-
46
- arr[4].chosung = 'ㄷ'
47
- arr[4].jongsung = 'ㄹ'
48
- arr[4].to_s # "달"
49
- arr[4].complete? # true
50
- arr[4].partial? # false
51
-
52
- arr[4].chosung = nil
53
- arr[4].jongsung = nil
54
- arr[4].complete? # false
55
- arr[4].partial? # true
56
-
57
- === 숫자 읽기
58
- ko.read_number(1999) # "천 구백 구십 구"
59
- ko.read_number(- 100.123) # "마이너스 백점일이삼"
60
- ko.read_number("153,191,100,678.3214")
61
- # "천 오백 삼십 일억 구천 백 십만 육백 칠십 팔점삼이일사"
62
-
63
- # 나이, 시간 ( -살, -시 )
64
- ko.read_number("20살") # "스무살"
65
- ko.read_number("13 살") # "열세 살"
66
- ko.read_number("7시 30분") # "일곱시 삼십분"
67
-
68
- === 표준 발음 (부분 구현)
69
- str = "됐어 됐어 이제 그런 가르침은 됐어 매일 아침 7 시 30 분까지 우릴 조그만 교실로 몰아넣고"
70
- ko.pronounce str
71
- # "돼써 돼써 이제 그런 가르치믄 돼써 매일 아침 일곱 시 삼십 분까지 우릴 조그만 교실로 모라너코"
72
-
73
- ko.pronounce str, :slur => true
74
- # "돼써 돼써 이제 그런 가르치믄 돼써 매이 라치 밀곱 씨 삼십 뿐까지 우릴 조그만 교실로 모라너코"
75
-
76
- ko.pronounce str, :pronounce_each_char => true
77
- # "됃어 됃어 이제 그런 가르침은 됃어 매일 아침 일곱 시 삼십 분까지 우릴 조그만 교실로 몰아너고"
78
-
79
- ko.pronounce str, :number => false
80
- # "돼써 돼써 이제 그런 가르치믄 돼써 매일 아침 7 시 30 분까지 우릴 조그만 교실로 모라너코"
81
-
82
- === 로마자 표기 (부분 구현)
83
- str = "됐어 됐어 이제 그런 가르침은 됐어 매일 아침 7 시 30 분까지 우릴 조그만 교실로 몰아넣고"
84
-
85
- ko.romanize str
86
- # "Dwaesseo dwaesseo ije geureon gareuchimeun dwaesseo mae-il achim ilgop si samsip bunkkaji uril jogeuman gyosillo moraneoko"
87
- ko.romanize str, :slur => true
88
- # "Dwaesseo dwaesseo ije geureon gareuchimeun dwaesseo mae-i rachi milgop ssi samsip ppunkkaji uril jogeuman gyosillo moraneoko"
89
- ko.romanize str, :as_pronounced => false
90
- # "Dwaet-eo dwaet-eo ije geureon gareuchim-eun dwaet-eo mae-il achim ilgop si samsip bunkkaji uril jogeuman gyosillo mol-aneogo"
91
- ko.romanize str, :number => false
92
- # "Dwaesseo dwaesseo ije geureon gareuchimeun dwaesseo mae-il achim 7 si 30 bunkkaji uril jogeuman gyosillo moraneoko"
93
-
94
- == 구현의 한계
95
-
96
- 표준 발음법과 로마어 표기법을 모두 구현하기 위해서는 형태소 분석과 충분한
97
- 사전, 그리고 문맥의 의미 분석이 필요합니다. 이 모든 것이 준비된다고 할 지라도
98
- 완벽한 결과를 얻는 것은 불가능합니다.
99
- 이는 현재 gimchi가 목표로 하는 것이 아니며 gimchi는 간단한 구현으로 어느 수준
100
- 이상의 결과를 얻는 것을 목표로 합니다. 현재 구현의 한계 내에서 정확도를 올리기
101
- 위해 Ad-hoc한 patch 등이 코드에 상당량 포함된 상태인데 이를 정제하고 체계화하는
102
- 노력이 필요합니다.
103
-
104
- == Contributing to gimchi
105
-
106
- * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
107
- * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
108
- * Fork the project
109
- * Start a feature/bugfix branch
110
- * Commit and push until you are happy with your contribution
111
- * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
112
- * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
113
-
114
- == Copyright
115
-
116
- Copyright (c) 2011 Junegunn Choi. See LICENSE.txt for
117
- further details.
118
-