law_number_switch 0.0.10 → 0.0.17

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.
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