zhongwen_tools 0.18.4 → 0.19.0
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.
- checksums.yaml +7 -0
- data/lib/zhongwen_tools/number.rb +23 -33
- data/lib/zhongwen_tools/regex.rb +15 -3
- data/lib/zhongwen_tools/romanization/pinyin.rb +17 -4
- data/lib/zhongwen_tools/version.rb +1 -1
- data/test/test_number.rb +7 -7
- metadata +49 -50
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 87292bf853bdd642cf95b4f28d163ba79ca92ffd
|
|
4
|
+
data.tar.gz: 4ecc9dce49d0eba08b910f0dceea0da7001a3fde
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: b39dfe2644f3f10776635d601fccb2d383ba356769556f8338135b7b9b46ada44753bd9d554816b8277b21f0b236fc9d0cc031abc05e16e81787e4764c1280d1
|
|
7
|
+
data.tar.gz: 56f86364a7b9a882353287a85648af8b110b09205493f7d918fca5d69a950367e33f9c71a0d3a3871724df9395ac4c3b6f1ae8b592d5c845db4d3344389fa87c
|
|
@@ -4,23 +4,19 @@ require 'zhongwen_tools/zhongwen'
|
|
|
4
4
|
require 'zhongwen_tools/romanization/pinyin'
|
|
5
5
|
require 'zhongwen_tools/number/number_table'
|
|
6
6
|
|
|
7
|
-
# Number.to_pyn, to_i, to_zhs, etc.
|
|
8
7
|
module ZhongwenTools
|
|
8
|
+
# Number.to_pyn, to_i, to_zhs, etc.
|
|
9
9
|
module Number
|
|
10
10
|
def self.number?(obj)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
if klass == String
|
|
11
|
+
case obj
|
|
12
|
+
when String
|
|
14
13
|
regex = /([\d]|#{ZhongwenTools::Regex.zh_numbers}){1,}/
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
true
|
|
18
|
-
elsif klass == Fixnum
|
|
14
|
+
"#{obj}".gsub(regex, '') == ''
|
|
15
|
+
when Integer, Fixnum, Float
|
|
19
16
|
true
|
|
20
17
|
end
|
|
21
18
|
end
|
|
22
19
|
|
|
23
|
-
#needs to be a class method
|
|
24
20
|
%w(i zhs zht pyn).each do |action|
|
|
25
21
|
define_singleton_method("to_#{ action }") do |*args|
|
|
26
22
|
obj, from, separator = args
|
|
@@ -31,9 +27,8 @@ module ZhongwenTools
|
|
|
31
27
|
end
|
|
32
28
|
|
|
33
29
|
def self.to_zh(obj, type = :zhs, from = nil)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if type == :zht
|
|
30
|
+
case type.to_sym
|
|
31
|
+
when :zht
|
|
37
32
|
to_zht(obj, from)
|
|
38
33
|
else
|
|
39
34
|
to_zhs(obj, from)
|
|
@@ -51,7 +46,7 @@ module ZhongwenTools
|
|
|
51
46
|
if to == :i
|
|
52
47
|
combine_integers(number)
|
|
53
48
|
elsif to == :pyn
|
|
54
|
-
regex = /#{ %w(yi4 wan4 qian1 bai2 shi2).map{ |x| 'ling2\-' + x }.join('|')}/
|
|
49
|
+
regex = /#{ %w(yi4 wan4 qian1 bai2 shi2).map { |x| 'ling2\-' + x }.join('|')}/
|
|
55
50
|
finalize_number(number, '-').gsub(regex, '').gsub(/\-+/, '-').gsub(/\-$/, '')
|
|
56
51
|
else
|
|
57
52
|
finalize_number(number)
|
|
@@ -65,15 +60,13 @@ module ZhongwenTools
|
|
|
65
60
|
:i
|
|
66
61
|
else
|
|
67
62
|
if ZhongwenTools::Zhongwen.zh?(obj)
|
|
68
|
-
# need to check zhs or zht
|
|
69
63
|
if zht?(obj)
|
|
70
64
|
:zht
|
|
71
65
|
else
|
|
72
66
|
:zhs
|
|
73
67
|
end
|
|
74
|
-
else #assume it is pyn
|
|
75
|
-
#
|
|
76
|
-
# might need to convert to pyn
|
|
68
|
+
else # assume it is pyn
|
|
69
|
+
# FIXME: might need to convert to pyn
|
|
77
70
|
:pyn
|
|
78
71
|
end
|
|
79
72
|
end
|
|
@@ -105,13 +98,13 @@ module ZhongwenTools
|
|
|
105
98
|
pyns = ZhongwenTools::Romanization::Pinyin.split_pyn(pyn)
|
|
106
99
|
|
|
107
100
|
pyns.map do |p|
|
|
108
|
-
convert_number(p).fetch(
|
|
101
|
+
convert_number(p).fetch(to) { p }
|
|
109
102
|
end
|
|
110
103
|
end
|
|
111
104
|
|
|
112
105
|
def self.convert_from_zh(to, number)
|
|
113
106
|
converted_number = number.chars.map do |zh|
|
|
114
|
-
convert_number(zh).fetch(to){ zh }
|
|
107
|
+
convert_number(zh).fetch(to) { zh }
|
|
115
108
|
end
|
|
116
109
|
|
|
117
110
|
converted_number
|
|
@@ -127,7 +120,7 @@ module ZhongwenTools
|
|
|
127
120
|
integers.each_with_index do |curr_num, i|
|
|
128
121
|
next if skipped == i
|
|
129
122
|
|
|
130
|
-
if (i+2) <= length
|
|
123
|
+
if (i + 2) <= length
|
|
131
124
|
number, i = combine_integer(integers, number, curr_num, i)
|
|
132
125
|
skipped = i + 1
|
|
133
126
|
else
|
|
@@ -139,18 +132,16 @@ module ZhongwenTools
|
|
|
139
132
|
end
|
|
140
133
|
|
|
141
134
|
def self.year?(integers)
|
|
142
|
-
integers.select{ |i| i < 10 }.size == integers.size
|
|
135
|
+
integers.select { |i| i < 10 }.size == integers.size
|
|
143
136
|
end
|
|
144
137
|
|
|
145
138
|
def self.combine_year(integers)
|
|
146
|
-
integers.map
|
|
139
|
+
integers.map(&:to_s).join.to_i
|
|
147
140
|
end
|
|
148
141
|
|
|
149
|
-
def self.combine_integer
|
|
142
|
+
def self.combine_integer(integers, result, curr_num, i)
|
|
150
143
|
next_number = integers[i + 1]
|
|
151
|
-
if number_multiplier?
|
|
152
|
-
result += next_number * curr_num
|
|
153
|
-
end
|
|
144
|
+
result += next_number * curr_num if number_multiplier?(next_number)
|
|
154
145
|
|
|
155
146
|
[result, i]
|
|
156
147
|
end
|
|
@@ -163,8 +154,7 @@ module ZhongwenTools
|
|
|
163
154
|
[10, 100, 1_000, 10_000, 100_000_000].include? number
|
|
164
155
|
end
|
|
165
156
|
|
|
166
|
-
|
|
167
|
-
def self.convert_from_integer to, int
|
|
157
|
+
def self.convert_from_integer(to, int)
|
|
168
158
|
# FIXME: this will fail for numbers over 1 billion.
|
|
169
159
|
result = []
|
|
170
160
|
nums = convert_integer_to_reversed_array_of_integers(int)
|
|
@@ -191,11 +181,11 @@ module ZhongwenTools
|
|
|
191
181
|
end
|
|
192
182
|
|
|
193
183
|
def self.convert_integer_to_reversed_array_of_integers(int)
|
|
194
|
-
int.to_s.chars.to_a.reverse.map
|
|
184
|
+
int.to_s.chars.to_a.reverse.map(&:to_i)
|
|
195
185
|
end
|
|
196
186
|
|
|
197
187
|
def self.wan_ok?(num, wan, i)
|
|
198
|
-
|
|
188
|
+
(num == 1 && (10**(i) / 10_000**wan) != 10) || num != 1
|
|
199
189
|
end
|
|
200
190
|
|
|
201
191
|
def self.wan_level(wan, i)
|
|
@@ -210,18 +200,18 @@ module ZhongwenTools
|
|
|
210
200
|
end
|
|
211
201
|
|
|
212
202
|
def self.convert_integer(int, to)
|
|
213
|
-
NUMBERS_TABLE.find{ |x| x[:i] == int }.fetch(to){ 0 }
|
|
203
|
+
NUMBERS_TABLE.find { |x| x[:i] == int }.fetch(to) { 0 }
|
|
214
204
|
end
|
|
215
205
|
|
|
216
206
|
def self.convert_number(number)
|
|
217
|
-
NUMBERS_TABLE.find{ |x| x[:zhs] == number || x[:zht] == number
|
|
207
|
+
NUMBERS_TABLE.find { |x| x[:zhs] == number || x[:zht] == number || x[:pyn] == number }
|
|
218
208
|
end
|
|
219
209
|
|
|
220
210
|
def self.finalize_number(number, separator = '')
|
|
221
211
|
# FIXME: is finalize_number the best name you can think of?
|
|
222
212
|
# NOTE: Figuring out usage of "liang" vs. "er" is pretty
|
|
223
213
|
# difficult, so always use "er" instead.
|
|
224
|
-
number.join(separator).gsub(/零[#{ Regex.zh_number_multiple }]*/u,'')
|
|
214
|
+
number.join(separator).gsub(/零[#{ Regex.zh_number_multiple }]*/u, '')
|
|
225
215
|
end
|
|
226
216
|
end
|
|
227
217
|
end
|
data/lib/zhongwen_tools/regex.rb
CHANGED
|
@@ -10,6 +10,18 @@ module ZhongwenTools
|
|
|
10
10
|
@py ||= /(#{pyn_regexes.map { |_k, v| v.to_s[7..-2].gsub(/[aeiouv]/, py_tones) }.join('|')}([\s\-])?)/
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
+
def self.pinyin_caps
|
|
14
|
+
@pinyin_caps ||= /#{py}|[ĀÁǍÀĒÉĚÈĪÍǏÌŌÓǑÒ]|#{py_syllabic_nasals}/
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.pyn_and_pynt
|
|
18
|
+
@pyn_and_pynt ||= /(#{ Regex.pyn }|#{ Regex.pinyin_toneless })/
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.capture_pinyin_toneless
|
|
22
|
+
@capture_pinyin_toneless ||= /(#{ Regex.pinyin_toneless })/
|
|
23
|
+
end
|
|
24
|
+
|
|
13
25
|
def self.pinyin_num
|
|
14
26
|
# FIXME: n?g? might need to be replaced with (ng|n)?
|
|
15
27
|
/(([BPMFDTNLGKHZCSRJQXWYbpmfdtnlgkhzcsrjqxwy]?[h]?)(A[io]?|a[io]?|i[aeu]?o?|Ei?|ei?|Ou?|ou?|u[aoe]?i?|ve?)?(n?g?)(r?)([1-5])(\-+)?)/
|
|
@@ -24,11 +36,11 @@ module ZhongwenTools
|
|
|
24
36
|
end
|
|
25
37
|
|
|
26
38
|
def self.capital_letters
|
|
27
|
-
/(#{Regexp.union(ZhongwenTools::Caps::CAPS.keys)})/
|
|
39
|
+
@capital_letters ||= /(#{Regexp.union(ZhongwenTools::Caps::CAPS.keys)})/
|
|
28
40
|
end
|
|
29
41
|
|
|
30
42
|
def self.lowercase_letters
|
|
31
|
-
/(#{Regexp.union(ZhongwenTools::Caps::CAPS.values)})/
|
|
43
|
+
@lowercase_letters ||= /(#{Regexp.union(ZhongwenTools::Caps::CAPS.values)})/
|
|
32
44
|
end
|
|
33
45
|
|
|
34
46
|
def self.zh
|
|
@@ -41,7 +53,7 @@ module ZhongwenTools
|
|
|
41
53
|
|
|
42
54
|
def self.zh_punc
|
|
43
55
|
# TODO: includes non-zh punctuation codes. Should only include punctuation in CJK ranges.
|
|
44
|
-
/[\u2E00-\u2E2E]|[\u2E30-\u2E3B]|[\u3001-\u3003]|[\u3008-\u3011]|[\u3014-\u301F]|[\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF]|[\uA60D-\uA60F]|[\uA673\uA67E]|[\uA6F2-\uA6F7]|[\uA874-\uA877]|[\uA8CE\uA8CF]|[\uA8F8-\uA8FA]|[\uA92E\uA92F\uA95F]|[\uA9C1-\uA9CD]|[\uA9DE\uA9DF]|[\uAA5C-\uAA5F]|[\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F]|[\uFE10-\uFE19]|[\uFE30-\uFE52]|[\uFE54-\uFE61]|[\uFE63\uFE68\uFE6A\uFE6B]|[\uFF01-\uFF03]|[\uFF05-\uFF0A]|[\uFF0C-\uFF0F]|[\uFF1A\uFF1B\uFF1F\uFF20]|[\uFF3B-\uFF3D]|[\uFF3F\uFF5B\uFF5D]|[\uFF5F-\uFF65]/
|
|
56
|
+
@zh_punc ||= /[\u2E00-\u2E2E]|[\u2E30-\u2E3B]|[\u3001-\u3003]|[\u3008-\u3011]|[\u3014-\u301F]|[\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF]|[\uA60D-\uA60F]|[\uA673\uA67E]|[\uA6F2-\uA6F7]|[\uA874-\uA877]|[\uA8CE\uA8CF]|[\uA8F8-\uA8FA]|[\uA92E\uA92F\uA95F]|[\uA9C1-\uA9CD]|[\uA9DE\uA9DF]|[\uAA5C-\uAA5F]|[\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F]|[\uFE10-\uFE19]|[\uFE30-\uFE52]|[\uFE54-\uFE61]|[\uFE63\uFE68\uFE6A\uFE6B]|[\uFF01-\uFF03]|[\uFF05-\uFF0A]|[\uFF0C-\uFF0F]|[\uFF1A\uFF1B\uFF1F\uFF20]|[\uFF3B-\uFF3D]|[\uFF3F\uFF5B\uFF5D]|[\uFF5F-\uFF65]/
|
|
45
57
|
end
|
|
46
58
|
|
|
47
59
|
def self.zh_numbers
|
|
@@ -38,10 +38,15 @@ module ZhongwenTools
|
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
def self.split_pyn(str)
|
|
41
|
+
# NOTE: This methods is called quite frequently. Unfortunately, it was
|
|
42
|
+
# slower than it needed to be. After looking into several
|
|
43
|
+
# optimizations, I ended up settling on one that cached the Regexp
|
|
44
|
+
# creation.
|
|
41
45
|
# FIXME: ignore punctuation
|
|
42
|
-
regex = str[
|
|
43
|
-
# NOTE: p[/[^\-]*/].to_s is 25% faster than gsub('-', '')
|
|
44
|
-
|
|
46
|
+
regex = str[simple_tone_numbers].nil? ? Regex.capture_pinyin_toneless : Regex.pyn_and_pynt
|
|
47
|
+
# NOTE: Fast Ruby: p[/[^\-]*/].to_s is 25% faster than gsub('-', '')
|
|
48
|
+
strip_regex = not_hyphen_regex
|
|
49
|
+
str.scan(regex).flat_map { |arr| arr[0].strip[strip_regex].to_s }
|
|
45
50
|
end
|
|
46
51
|
|
|
47
52
|
def self.split_py(str)
|
|
@@ -110,6 +115,14 @@ module ZhongwenTools
|
|
|
110
115
|
|
|
111
116
|
private
|
|
112
117
|
|
|
118
|
+
def self.simple_tone_numbers
|
|
119
|
+
@simple_tone_numbers ||= /[1-5]/
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def self.not_hyphen_regex
|
|
123
|
+
@not_hyphen_regex ||= /[^\-]*/
|
|
124
|
+
end
|
|
125
|
+
|
|
113
126
|
def self.pyn_matches_properly?(pyn_arr, normalized_str)
|
|
114
127
|
pyn_arr.join('') == normalized_str
|
|
115
128
|
end
|
|
@@ -190,7 +203,7 @@ module ZhongwenTools
|
|
|
190
203
|
end
|
|
191
204
|
|
|
192
205
|
def self.capitalized?(str)
|
|
193
|
-
first_letter = str[
|
|
206
|
+
first_letter = str[ZhongwenTools::Regex.pinyin_caps][0]
|
|
194
207
|
|
|
195
208
|
first_letter != Caps.downcase(first_letter)
|
|
196
209
|
end
|
data/test/test_number.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
|
-
|
|
2
|
+
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
|
3
3
|
|
|
4
4
|
require './test/test_helper'
|
|
5
5
|
require 'zhongwen_tools/number'
|
|
@@ -9,21 +9,22 @@ class TestNumber < Minitest::Test
|
|
|
9
9
|
{ zhs: '一万二千七', zht: '一萬二千七', i: 12_007, pyn: 'yi1-wan4-er4-qian1-qi1' },
|
|
10
10
|
{ zhs: '三千六十三', zht: '三千六十三', i: 3_063, pyn: 'san1-qian1-liu4-shi2-san1' },
|
|
11
11
|
{ zhs: '一百五十', zht: '一百五十', i: 150, pyn: 'yi1-bai2-wu3-shi2' },
|
|
12
|
-
#{ zhs: '三千亿', i: 300_000_000_000, pyn: '' },
|
|
12
|
+
# { zhs: '三千亿', i: 300_000_000_000, pyn: '' },
|
|
13
13
|
]
|
|
14
14
|
|
|
15
15
|
@liang_number = { zhs: '一万两千七', i: 12_007, pyn: '' }
|
|
16
16
|
@date_numbers = [
|
|
17
17
|
{ zhs: '一九六六', i: 1966, pyn: '' },
|
|
18
|
-
{ zhs: '二零零八', i: 2008, pyn: '' }
|
|
18
|
+
{ zhs: '二零零八', i: 2008, pyn: '' }
|
|
19
19
|
]
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
def test_number?
|
|
23
23
|
assert ZhongwenTools::Number.number? '一'
|
|
24
24
|
assert ZhongwenTools::Number.number? 1
|
|
25
|
+
assert ZhongwenTools::Number.number? 1.0
|
|
25
26
|
|
|
26
|
-
@numbers.map{ |n| n[:zhs]}.each do |zh|
|
|
27
|
+
@numbers.map { |n| n[:zhs] }.each do |zh|
|
|
27
28
|
assert ZhongwenTools::Number.number?(zh), "#{zh}"
|
|
28
29
|
end
|
|
29
30
|
end
|
|
@@ -35,7 +36,6 @@ class TestNumber < Minitest::Test
|
|
|
35
36
|
assert_equal n[:pyn], ZhongwenTools::Number.to_pyn(n[type])
|
|
36
37
|
end
|
|
37
38
|
end
|
|
38
|
-
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
def test_to_zhs
|
|
@@ -73,13 +73,13 @@ class TestNumber < Minitest::Test
|
|
|
73
73
|
end
|
|
74
74
|
|
|
75
75
|
@date_numbers.each do |n|
|
|
76
|
-
|
|
76
|
+
assert_equal n[:i], ZhongwenTools::Number.to_i(n[:zhs])
|
|
77
77
|
end
|
|
78
78
|
end
|
|
79
79
|
|
|
80
80
|
def test_large_numbers
|
|
81
81
|
assert_equal '五十万', ZhongwenTools::Number.to_zhs(500_000)
|
|
82
82
|
assert_equal '五十亿', ZhongwenTools::Number.to_zhs(5_000_000_000)
|
|
83
|
-
#assert_equal '五万亿', ZhongwenTools::Number.to_zhs(5_000_000_000_000)
|
|
83
|
+
# assert_equal '五万亿', ZhongwenTools::Number.to_zhs(5_000_000_000_000)
|
|
84
84
|
end
|
|
85
85
|
end
|
metadata
CHANGED
|
@@ -1,164 +1,163 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: zhongwen_tools
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
5
|
-
prerelease:
|
|
4
|
+
version: 0.19.0
|
|
6
5
|
platform: ruby
|
|
7
6
|
authors:
|
|
8
7
|
- Steven Daniels
|
|
9
8
|
autorequire:
|
|
10
9
|
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date: 2015-
|
|
11
|
+
date: 2015-08-18 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
|
15
14
|
name: rake
|
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
|
17
|
-
none: false
|
|
18
16
|
requirements:
|
|
19
|
-
- - ~>
|
|
17
|
+
- - "~>"
|
|
20
18
|
- !ruby/object:Gem::Version
|
|
21
19
|
version: '10.1'
|
|
22
20
|
type: :development
|
|
23
21
|
prerelease: false
|
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
-
none: false
|
|
26
23
|
requirements:
|
|
27
|
-
- - ~>
|
|
24
|
+
- - "~>"
|
|
28
25
|
- !ruby/object:Gem::Version
|
|
29
26
|
version: '10.1'
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
|
31
28
|
name: simplecov
|
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
|
33
|
-
none: false
|
|
34
30
|
requirements:
|
|
35
|
-
- - ~>
|
|
31
|
+
- - "~>"
|
|
36
32
|
- !ruby/object:Gem::Version
|
|
37
33
|
version: '0.9'
|
|
38
|
-
- -
|
|
34
|
+
- - ">="
|
|
39
35
|
- !ruby/object:Gem::Version
|
|
40
36
|
version: 0.9.1
|
|
41
37
|
type: :development
|
|
42
38
|
prerelease: false
|
|
43
39
|
version_requirements: !ruby/object:Gem::Requirement
|
|
44
|
-
none: false
|
|
45
40
|
requirements:
|
|
46
|
-
- - ~>
|
|
41
|
+
- - "~>"
|
|
47
42
|
- !ruby/object:Gem::Version
|
|
48
43
|
version: '0.9'
|
|
49
|
-
- -
|
|
44
|
+
- - ">="
|
|
50
45
|
- !ruby/object:Gem::Version
|
|
51
46
|
version: 0.9.1
|
|
52
47
|
- !ruby/object:Gem::Dependency
|
|
53
48
|
name: simplecov-gem-adapter
|
|
54
49
|
requirement: !ruby/object:Gem::Requirement
|
|
55
|
-
none: false
|
|
56
50
|
requirements:
|
|
57
|
-
- - ~>
|
|
51
|
+
- - "~>"
|
|
58
52
|
- !ruby/object:Gem::Version
|
|
59
53
|
version: '1.0'
|
|
60
|
-
- -
|
|
54
|
+
- - ">="
|
|
61
55
|
- !ruby/object:Gem::Version
|
|
62
56
|
version: 1.0.1
|
|
63
57
|
type: :development
|
|
64
58
|
prerelease: false
|
|
65
59
|
version_requirements: !ruby/object:Gem::Requirement
|
|
66
|
-
none: false
|
|
67
60
|
requirements:
|
|
68
|
-
- - ~>
|
|
61
|
+
- - "~>"
|
|
69
62
|
- !ruby/object:Gem::Version
|
|
70
63
|
version: '1.0'
|
|
71
|
-
- -
|
|
64
|
+
- - ">="
|
|
72
65
|
- !ruby/object:Gem::Version
|
|
73
66
|
version: 1.0.1
|
|
74
67
|
- !ruby/object:Gem::Dependency
|
|
75
68
|
name: coveralls
|
|
76
69
|
requirement: !ruby/object:Gem::Requirement
|
|
77
|
-
none: false
|
|
78
70
|
requirements:
|
|
79
|
-
- - ~>
|
|
71
|
+
- - "~>"
|
|
80
72
|
- !ruby/object:Gem::Version
|
|
81
73
|
version: '0.7'
|
|
82
|
-
- -
|
|
74
|
+
- - ">="
|
|
83
75
|
- !ruby/object:Gem::Version
|
|
84
76
|
version: 0.7.0
|
|
85
77
|
type: :development
|
|
86
78
|
prerelease: false
|
|
87
79
|
version_requirements: !ruby/object:Gem::Requirement
|
|
88
|
-
none: false
|
|
89
80
|
requirements:
|
|
90
|
-
- - ~>
|
|
81
|
+
- - "~>"
|
|
91
82
|
- !ruby/object:Gem::Version
|
|
92
83
|
version: '0.7'
|
|
93
|
-
- -
|
|
84
|
+
- - ">="
|
|
94
85
|
- !ruby/object:Gem::Version
|
|
95
86
|
version: 0.7.0
|
|
96
87
|
- !ruby/object:Gem::Dependency
|
|
97
88
|
name: minitest
|
|
98
89
|
requirement: !ruby/object:Gem::Requirement
|
|
99
|
-
none: false
|
|
100
90
|
requirements:
|
|
101
|
-
- - ~>
|
|
91
|
+
- - "~>"
|
|
102
92
|
- !ruby/object:Gem::Version
|
|
103
93
|
version: '5.5'
|
|
104
|
-
- -
|
|
94
|
+
- - ">="
|
|
105
95
|
- !ruby/object:Gem::Version
|
|
106
96
|
version: 5.5.1
|
|
107
97
|
type: :development
|
|
108
98
|
prerelease: false
|
|
109
99
|
version_requirements: !ruby/object:Gem::Requirement
|
|
110
|
-
none: false
|
|
111
100
|
requirements:
|
|
112
|
-
- - ~>
|
|
101
|
+
- - "~>"
|
|
113
102
|
- !ruby/object:Gem::Version
|
|
114
103
|
version: '5.5'
|
|
115
|
-
- -
|
|
104
|
+
- - ">="
|
|
116
105
|
- !ruby/object:Gem::Version
|
|
117
106
|
version: 5.5.1
|
|
118
107
|
- !ruby/object:Gem::Dependency
|
|
119
108
|
name: pry
|
|
120
109
|
requirement: !ruby/object:Gem::Requirement
|
|
121
|
-
none: false
|
|
122
110
|
requirements:
|
|
123
|
-
- - ~>
|
|
111
|
+
- - "~>"
|
|
124
112
|
- !ruby/object:Gem::Version
|
|
125
113
|
version: '0.10'
|
|
126
|
-
- -
|
|
114
|
+
- - ">="
|
|
127
115
|
- !ruby/object:Gem::Version
|
|
128
116
|
version: 0.10.1
|
|
129
117
|
type: :development
|
|
130
118
|
prerelease: false
|
|
131
119
|
version_requirements: !ruby/object:Gem::Requirement
|
|
132
|
-
none: false
|
|
133
120
|
requirements:
|
|
134
|
-
- - ~>
|
|
121
|
+
- - "~>"
|
|
135
122
|
- !ruby/object:Gem::Version
|
|
136
123
|
version: '0.10'
|
|
137
|
-
- -
|
|
124
|
+
- - ">="
|
|
138
125
|
- !ruby/object:Gem::Version
|
|
139
126
|
version: 0.10.1
|
|
140
127
|
- !ruby/object:Gem::Dependency
|
|
141
128
|
name: minitest-reporters
|
|
142
129
|
requirement: !ruby/object:Gem::Requirement
|
|
143
|
-
none: false
|
|
144
130
|
requirements:
|
|
145
|
-
- - ~>
|
|
131
|
+
- - "~>"
|
|
146
132
|
- !ruby/object:Gem::Version
|
|
147
133
|
version: '1.0'
|
|
148
|
-
- -
|
|
134
|
+
- - ">="
|
|
149
135
|
- !ruby/object:Gem::Version
|
|
150
136
|
version: 1.0.10
|
|
151
137
|
type: :development
|
|
152
138
|
prerelease: false
|
|
153
139
|
version_requirements: !ruby/object:Gem::Requirement
|
|
154
|
-
none: false
|
|
155
140
|
requirements:
|
|
156
|
-
- - ~>
|
|
141
|
+
- - "~>"
|
|
157
142
|
- !ruby/object:Gem::Version
|
|
158
143
|
version: '1.0'
|
|
159
|
-
- -
|
|
144
|
+
- - ">="
|
|
160
145
|
- !ruby/object:Gem::Version
|
|
161
146
|
version: 1.0.10
|
|
147
|
+
- !ruby/object:Gem::Dependency
|
|
148
|
+
name: memory_profiler
|
|
149
|
+
requirement: !ruby/object:Gem::Requirement
|
|
150
|
+
requirements:
|
|
151
|
+
- - '='
|
|
152
|
+
- !ruby/object:Gem::Version
|
|
153
|
+
version: 0.0.4
|
|
154
|
+
type: :development
|
|
155
|
+
prerelease: false
|
|
156
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
157
|
+
requirements:
|
|
158
|
+
- - '='
|
|
159
|
+
- !ruby/object:Gem::Version
|
|
160
|
+
version: 0.0.4
|
|
162
161
|
description: Chinese tools for romanization conversions and other helpful string functions
|
|
163
162
|
for Chinese.
|
|
164
163
|
email:
|
|
@@ -167,7 +166,7 @@ executables: []
|
|
|
167
166
|
extensions: []
|
|
168
167
|
extra_rdoc_files: []
|
|
169
168
|
files:
|
|
170
|
-
- .travis.yml
|
|
169
|
+
- ".travis.yml"
|
|
171
170
|
- Gemfile
|
|
172
171
|
- README.md
|
|
173
172
|
- Rakefile
|
|
@@ -217,27 +216,26 @@ files:
|
|
|
217
216
|
homepage: https://github.com/stevendaniels/zhongwen_tools
|
|
218
217
|
licenses:
|
|
219
218
|
- MIT
|
|
219
|
+
metadata: {}
|
|
220
220
|
post_install_message:
|
|
221
221
|
rdoc_options: []
|
|
222
222
|
require_paths:
|
|
223
223
|
- lib
|
|
224
224
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
225
|
-
none: false
|
|
226
225
|
requirements:
|
|
227
|
-
- -
|
|
226
|
+
- - ">="
|
|
228
227
|
- !ruby/object:Gem::Version
|
|
229
228
|
version: '0'
|
|
230
229
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
231
|
-
none: false
|
|
232
230
|
requirements:
|
|
233
|
-
- -
|
|
231
|
+
- - ">="
|
|
234
232
|
- !ruby/object:Gem::Version
|
|
235
233
|
version: '0'
|
|
236
234
|
requirements: []
|
|
237
235
|
rubyforge_project: zhongwen_tools
|
|
238
|
-
rubygems_version:
|
|
236
|
+
rubygems_version: 2.4.5
|
|
239
237
|
signing_key:
|
|
240
|
-
specification_version:
|
|
238
|
+
specification_version: 4
|
|
241
239
|
summary: Zhongwen Tools provide romanization conversions and helper methods for Chinese.
|
|
242
240
|
test_files:
|
|
243
241
|
- test/test_caps.rb
|
|
@@ -255,3 +253,4 @@ test_files:
|
|
|
255
253
|
- test/test_unicode.rb
|
|
256
254
|
- test/test_uri.rb
|
|
257
255
|
- test/test_zhongwen.rb
|
|
256
|
+
has_rdoc:
|