zhongwen_tools 0.18.4 → 0.19.0
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|