law_number_switch 0.0.6 → 0.0.10

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 +28 -17
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 52b1bcd4fba1aae4d9a4788120a77c124931a024
4
- data.tar.gz: 252f54bb6031623be09b59b8e4cb34b474cdf91f
3
+ metadata.gz: dd1e84ac20704a5a62c43dc2881055a5cb1725ec
4
+ data.tar.gz: 7370f86b8adfdd952bd2ab7da4cfb3117155a324
5
5
  SHA512:
6
- metadata.gz: aca8e77258472d38209f68d411ad2151ebb3f5471503658ad4d67dc9ddb9f9fbf9a50b22d7fde540d3e9bd11ce39330b988b3ccf224211dcdbe79e8ca293c677
7
- data.tar.gz: 477de0f8ab4261bf80aa551153a6f6e724c6eeec8e391c1b9c7a2bae324b9634e648bc8231c84d01eb26f75a6e5349ce04d06c4ec4fc901152a7e060af463af7
6
+ metadata.gz: fa35045b82933263c9b37c5928b35e25a25d28017d3c6830043b3974b17d5c4e2fe38b3b335a53fb7b7fc43d823d727595131dd6fa5d0bd0967230e8a1bab3c3
7
+ data.tar.gz: 96216c2b988dcdf918ca9fc67bf6eeb8fa607f6acdca8b860cfd4c8fb7057c237dafa848a2618288cf49c9623ac4c849c192b36335bfb49562623b87e3aa4006
@@ -1,7 +1,7 @@
1
1
  module LawNumberSwitch
2
2
  CN_NUMBER = ["", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十" ]
3
3
  CN_UNIT = ["", "十", "百", "千" ]
4
- CN_UNIT_BIG = ["", "萬", "億" ]
4
+ CN_UNIT_BIG = ["", "萬", "億", "兆" ]
5
5
 
6
6
  def to_cn_number
7
7
  string = self.to_cn_number_oneten
@@ -47,7 +47,6 @@ module LawNumberSwitch
47
47
 
48
48
  rst_arr << number + unit + unit_big
49
49
  end
50
-
51
50
  rst_arr.reverse.join
52
51
  end
53
52
 
@@ -68,12 +67,30 @@ module LawNumberSwitch
68
67
  end
69
68
 
70
69
  CN_NUMS = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"]
71
- CN_DECS = ["十", "百", "千", "萬", "億"]
72
- CN_NUMS_MAP = {'〇' => 0, '一' => 1, '二' => 2, '三' => 3, '四' => 4, '五' => 5,
73
- '六' => 6, '七' => 7, '八' => 8, '九' => 9, '零' => 0}
74
- CN_DECS_MAP = {'' => 1, '' => 10, '' => 100, '' => 1000, '' => 10000, '' => 100000000}
70
+ CN_DECS = ["十", "百", "千", "萬", "億", "兆", "拾", "佰", '仟']
71
+ CN_NUMS_MAP = {'〇' => 0, '一' => 1, '二' => 2, '兩' => 2, '三' => 3, '四' => 4, '五' => 5,
72
+ '六' => 6, '七' => 7, '八' => 8, '九' => 9, '零' => 0, '壹' => 1, '貳' => 2,
73
+ '參' => 3, '' => 4, '' => 5, '' => 6, '' => 7, '' => 8, '' => 9, '○' => 0}
74
+ CN_DECS_MAP = {'個' => 1, '十' => 10, '百' => 100, '千' => 1000, '萬' => 10000,
75
+ '億' => 100000000, '兆' => 100000000000, '拾' => 10, '佰' => 100, '仟' => 1000}
75
76
 
76
77
  def to_number
78
+ output = ''
79
+ string = ''
80
+ self.scan(/./) do |c|
81
+ if CN_NUMS_MAP[c] || CN_DECS_MAP[c]
82
+ string += c
83
+ else
84
+ c = string.to_number_case + c unless string.empty?
85
+ output += c
86
+ string = ''
87
+ end
88
+ end
89
+ output += string.to_number_case unless string.empty?
90
+ output
91
+ end
92
+
93
+ def to_number_case
77
94
  string = self
78
95
  CN_DECS.each do |d|
79
96
  no_ten = d + '十'
@@ -82,17 +99,12 @@ module LawNumberSwitch
82
99
  string = self.gsub(Regexp.new(no_ten), one_ten)
83
100
  end
84
101
  end
85
- if string =~ /零十/
86
- string = string.gsub(/零十/, "一十")
87
- end
88
- string.to_number_oneten
89
- end
90
-
91
- def to_number_oneten
92
- if self =~ /之/
93
- dash_number
102
+ string = string.gsub(/(?:○|〇)/, "零").gsub(/(?:零|○|〇)(?:十|拾)/, "一十")
103
+ .gsub(/廿/, "二十").gsub(/卅/, "三十")
104
+ if string =~ /之/
105
+ string.dash_number
94
106
  else
95
- int_number
107
+ string.int_number
96
108
  end
97
109
  end
98
110
 
@@ -158,7 +170,6 @@ module LawNumberSwitch
158
170
  w_arr << b_w
159
171
  w_arr.join
160
172
  end
161
-
162
173
  end
163
174
 
164
175
  String.include LawNumberSwitch
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: law_number_switch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - GaussJay
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-01 00:00:00.000000000 Z
11
+ date: 2015-10-01 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Swith chinese law number string and arabic numerals string to each other.
14
14
  email: