number_to_cn 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/.DS_Store ADDED
Binary file
data/.gitignore CHANGED
@@ -8,6 +8,8 @@ InstalledFiles
8
8
  _yardoc
9
9
  coverage
10
10
  doc/
11
+ coverage
12
+ InstalledFiles
11
13
  lib/bundler/man
12
14
  pkg
13
15
  rdoc
@@ -15,3 +17,8 @@ spec/reports
15
17
  test/tmp
16
18
  test/version_tmp
17
19
  tmp
20
+
21
+ # YARD artifacts
22
+ .yardoc
23
+ _yardoc
24
+ doc/
data/README.md CHANGED
@@ -18,7 +18,17 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- TODO: Write usage instructions here
21
+ so simple to use:
22
+
23
+ require 'number_to_cn'
24
+
25
+ 123.to_cn_words #=>
26
+
27
+ 123.to_cn_clearly #=>
28
+
29
+ 0.1.to_cn_words #=>
30
+
31
+ 0.to_cn_words #=>
22
32
 
23
33
  ## Contributing
24
34
 
@@ -27,3 +37,9 @@ TODO: Write usage instructions here
27
37
  3. Commit your changes (`git commit -am 'Added some feature'`)
28
38
  4. Push to the branch (`git push origin my-new-feature`)
29
39
  5. Create new Pull Request
40
+ =======
41
+ number_to_cn
42
+ ============
43
+
44
+ transfer number into chinese characters
45
+ >>>>>>> 6447d6a2f58a576d6d94a6ed5896b33cf1a43204
data/lib/.DS_Store ADDED
Binary file
@@ -0,0 +1,5 @@
1
+ require 'number_to_cn/methods.rb'
2
+
3
+ class Float
4
+ include NumberToCn
5
+ end
@@ -2,4 +2,4 @@ require 'number_to_cn/methods.rb'
2
2
 
3
3
  class Integer
4
4
  include NumberToCn
5
- end
5
+ end
@@ -1,43 +1,59 @@
1
1
  #encoding:utf-8
2
2
  module NumberToCn
3
-
4
3
  CN_T_TRANS = [ "", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾" ]
4
+ CN_T_TRANS_WITH_ZERO = [ "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾" ]
5
5
  CN_T_POSITION = [ "", "拾", "佰", "仟" ]
6
- CN_T_BIG = [ "", "萬", "亿"]
6
+ CN_T_BIG = [ "", "萬", "亿", "萬"]
7
7
 
8
8
  def to_cn_words
9
- num_arr = self.to_s.split("").reverse
10
- rst_arr = []
11
-
12
- writable = -1
13
- #1:0是需要写的。
14
- #0:0不需要写;
15
- #-1:全不需要写;
16
-
17
- num_arr.each_with_index do |value, index|
18
- writable = -1 if index%4 == 0
19
-
20
- cc = (index % 4 == 0) ? CN_T_BIG[index/4] : ""
21
- aa = CN_T_TRANS[value.to_i]
22
-
23
- if value.to_i == 0
24
- writable = (writable == 1) ? 0 : -1
25
- else
26
- writable = 1
9
+ if self.class == Fixnum
10
+ return "零" if self == 0
11
+ num_arr = self.to_s.split("").reverse
12
+ rst_arr = []
13
+
14
+ writable = -1
15
+ #1:0是需要写的。
16
+ #0:0不需要写;
17
+ #-1:全不需要写;
18
+
19
+ num_arr.each_with_index do |value, index|
20
+ writable = -1 if index%4 == 0
21
+
22
+ cc = (index % 4 == 0) ? CN_T_BIG[index/4] : ""
23
+ aa = CN_T_TRANS[value.to_i]
24
+
25
+ if value.to_i == 0
26
+ writable = (writable == 1) ? 0 : -1
27
+ else
28
+ writable = 1
29
+ end
30
+
31
+ if writable == 1
32
+ bb = CN_T_POSITION[index%4]
33
+ elsif writable == -1
34
+ bb = ""
35
+ else
36
+ bb = "零"
37
+ end
38
+
39
+ rst_arr << aa + bb + cc
27
40
  end
28
41
 
29
- if writable == 1
30
- bb = CN_T_POSITION[index%4]
31
- elsif writable == -1
32
- bb = ""
33
- else
34
- bb = "零"
35
- end
36
-
37
- rst_arr << aa + bb + cc
42
+ rst_arr.reverse.join
43
+ elsif self.class == Float
44
+ before_point = self.to_s.split(".")[0]
45
+ after_point = self.to_s.split(".")[1]
46
+ "#{before_point.to_i.to_cn_words}点#{after_point.to_i.to_cn_clearly}"
38
47
  end
39
-
40
- rst_arr.reverse.join
41
48
  end
42
49
 
50
+ def to_cn_clearly
51
+ digits_arr = self.to_s.split('')
52
+ rst = ""
53
+ digits_arr.map do |d|
54
+ rst << CN_T_TRANS_WITH_ZERO[d.to_i]
55
+ end
56
+ rst
57
+ end
58
+
43
59
  end
@@ -1,3 +1,3 @@
1
1
  module NumberToCn
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/number_to_cn.rb CHANGED
@@ -1,3 +1,4 @@
1
1
  #encoding: utf-8
2
2
  require "number_to_cn/version"
3
- require "ext/integer_ext"
3
+ require "ext/integer_ext"
4
+ require "ext/float_ext"
@@ -3,7 +3,18 @@ require 'spec_helper'
3
3
 
4
4
  describe NumberToCn do
5
5
  it "should go works" do
6
- (2203.to_cn_words).should == "贰仟贰佰零叁"
6
+ (2203.to_cn_words).should eq("贰仟贰佰零叁")
7
7
  end
8
+
9
+ it "worked for zero" do
10
+ (0.to_cn_words).should eq("零")
11
+ end
12
+
13
+ it "worked for float" do
14
+ ((33.0).to_cn_words).should eq("叁拾叁点零")
15
+ end
8
16
 
17
+ it "works in clear transfer" do
18
+ (203.to_cn_clearly).should eq("贰零叁")
19
+ end
9
20
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: number_to_cn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-23 00:00:00.000000000 Z
12
+ date: 2012-07-19 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: simply gem for put digits number into cn.
15
15
  email:
@@ -18,11 +18,14 @@ executables: []
18
18
  extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
21
+ - .DS_Store
21
22
  - .gitignore
22
23
  - Gemfile
23
24
  - LICENSE
24
25
  - README.md
25
26
  - Rakefile
27
+ - lib/.DS_Store
28
+ - lib/ext/float_ext.rb
26
29
  - lib/ext/integer_ext.rb
27
30
  - lib/number_to_cn.rb
28
31
  - lib/number_to_cn/methods.rb
@@ -50,7 +53,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
50
53
  version: '0'
51
54
  requirements: []
52
55
  rubyforge_project:
53
- rubygems_version: 1.8.17
56
+ rubygems_version: 1.8.24
54
57
  signing_key:
55
58
  specification_version: 3
56
59
  summary: ! '123.to_cn_words #'