law_number_switch 0.0.10 → 0.0.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/law_number_switch.rb +22 -4
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dd1e84ac20704a5a62c43dc2881055a5cb1725ec
4
- data.tar.gz: 7370f86b8adfdd952bd2ab7da4cfb3117155a324
3
+ metadata.gz: aad8e0cca43174c63459f6343b01d41fdfdf606a
4
+ data.tar.gz: 2ca9fab8b41549c2ce4fd1af309dc7d8c0bfc669
5
5
  SHA512:
6
- metadata.gz: fa35045b82933263c9b37c5928b35e25a25d28017d3c6830043b3974b17d5c4e2fe38b3b335a53fb7b7fc43d823d727595131dd6fa5d0bd0967230e8a1bab3c3
7
- data.tar.gz: 96216c2b988dcdf918ca9fc67bf6eeb8fa607f6acdca8b860cfd4c8fb7057c237dafa848a2618288cf49c9623ac4c849c192b36335bfb49562623b87e3aa4006
6
+ metadata.gz: 43b183fbf7f903bfc8e0d201b68f77fe55c634aa16a1e00ee5c9ebd01ad1f6840c48ff895236b2441d9995bcb2c2b279faca5eb37d9adf2d733a96ff6d83bd92
7
+ data.tar.gz: aef3eeffd4e2b0c0318dd2dc297107b1bbb36c5de65d38e249a47b2d3ccce3079c9c8d09c00ad74fa2ea8fa5858d20af92b20c9b6ad3f205e1c77eae3f240b93
@@ -78,7 +78,7 @@ module LawNumberSwitch
78
78
  output = ''
79
79
  string = ''
80
80
  self.scan(/./) do |c|
81
- if CN_NUMS_MAP[c] || CN_DECS_MAP[c]
81
+ if CN_NUMS_MAP[c] || CN_DECS_MAP[c] || c == '之'
82
82
  string += c
83
83
  else
84
84
  c = string.to_number_case + c unless string.empty?
@@ -92,22 +92,40 @@ module LawNumberSwitch
92
92
 
93
93
  def to_number_case
94
94
  string = self
95
+ no_unit = 0
96
+ string = string.gsub(/(?:○|〇)/, "零").gsub(/(?:零|○|〇)(?:十|拾)/, "一十")
97
+ .gsub(/廿/, "二十").gsub(/卅/, "三十")
95
98
  CN_DECS.each do |d|
96
99
  no_ten = d + '十'
97
100
  one_ten = d + '一' + '十'
98
101
  if string =~ Regexp.new(no_ten)
99
102
  string = self.gsub(Regexp.new(no_ten), one_ten)
100
103
  end
104
+ if string !~ Regexp.new(d)
105
+ no_unit += 1
106
+ end
101
107
  end
102
- string = string.gsub(/(?:○|〇)/, "零").gsub(/(?:零|○|〇)(?:十|拾)/, "一十")
103
- .gsub(/廿/, "二十").gsub(/卅/, "三十")
104
- if string =~ /之/
108
+ if no_unit == CN_DECS.length
109
+ string.to_number_only
110
+ elsif string =~ /之/
105
111
  string.dash_number
106
112
  else
107
113
  string.int_number
108
114
  end
109
115
  end
110
116
 
117
+ def to_number_only
118
+ number_only = ''
119
+ self.scan(/./) do |c|
120
+ if c == '之'
121
+ number_only += "-"
122
+ else
123
+ number_only += CN_NUMS_MAP[c].to_s
124
+ end
125
+ end
126
+ number_only
127
+ end
128
+
111
129
  def int_number
112
130
  num_str = ''
113
131
  last = nil
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: law_number_switch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - GaussJay