polish_number 1.0.0 → 1.1.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c29d10d48748ee6e5acc518c186ad089effacdae
4
- data.tar.gz: 832bf701bc19030b64126aad792fdb40b5275920
3
+ metadata.gz: 77827ce15243e32d648e16cd8a91289d3331e1c4
4
+ data.tar.gz: a110ec98a596daf35564e98353dae026e7ad8979
5
5
  SHA512:
6
- metadata.gz: 5b09d6380df895fdd40731ce88ac19f9df240d402cb5a36cab1180fdef466f24969cbeeb091817e7a8b32c9dd2f9175b4d4babafebdb58c59a67f4c0eee39701
7
- data.tar.gz: d385345a180eed8c0b1cab8f85c4fa4aaccf1b0d7e5de2b4e919b97ba4d6d3226af003fc3148965cb6ff4eacebb93af90b36c29c665c5ac432282fca3bcd6bdc
6
+ metadata.gz: 4c0a7e90298f992b71cbd6f20775bd069af83bb1d2dda1e4772fabbeaaacc3d79dff9e135c7b92c981d113bb919354e86e27815983489f1ba204850e6c3e03a7
7
+ data.tar.gz: e71e03fe8614bc9d554c9d5f829c2864db8e64a620941b0fdc0dfd5635bc976c6688d8c8a2a2eaf85ddf607027ce10ac8b440e93210672da4e8f0dfdea603e04
@@ -1 +1 @@
1
- 2.1.0
1
+ 2.1.5
@@ -4,6 +4,7 @@ rvm:
4
4
  - 2.0.0
5
5
  - 2.1.0
6
6
  - 2.1.1
7
+ - 2.1.5
7
8
  - ruby-head
8
9
  - jruby-19mode # JRuby in 1.9 mode
9
10
  - rbx
data/README.md CHANGED
@@ -33,3 +33,5 @@ Or install it yourself as:
33
33
  3. Commit your changes (`git commit -am 'Add some feature'`)
34
34
  4. Push to the branch (`git push origin my-new-feature`)
35
35
  5. Create new Pull Request
36
+
37
+ [![Analytics](https://ga-beacon.appspot.com/UA-49257773-1/README.md?pixel)](https://github.com/igrigorik/ga-beacon)
@@ -19,6 +19,8 @@ module PolishNumber
19
19
 
20
20
  THOUSANDS = {:one => 'tysiąc', :few => 'tysiące', :many => 'tysięcy'}
21
21
 
22
+ MILLIONS = {:one => 'milion', :few => 'miliony', :many => 'milionów'}
23
+
22
24
  CURRENCIES = {
23
25
  :PLN => {:one => 'złoty', :few => 'złote', :many => 'złotych'}
24
26
  }
@@ -30,21 +32,24 @@ module PolishNumber
30
32
 
31
33
  number = number.to_i
32
34
 
33
- unless (0..999999).include? number
34
- raise ArgumentError, 'number should be in 0..999999 range'
35
+ unless (0..999999999).include? number
36
+ raise ArgumentError, 'number should be in 0..999999999 range'
35
37
  end
36
38
 
37
39
  if number == 0
38
40
  result = ZERO.dup
39
41
  else
40
- formatted_number = sprintf('%06.0f', number)
42
+ formatted_number = sprintf('%09.0f', number)
41
43
  digits = formatted_number.chars.map { |char| char.to_i }
42
44
 
43
45
  result = ''
44
46
  result << process_0_999(digits[0..2])
45
- result << thousands(number/1000, digits[0..2])
47
+ result << millions(number/1000000, digits[0..2])
46
48
  result << ' '
47
49
  result << process_0_999(digits[3..5])
50
+ result << thousands(number/1000, digits[3..5])
51
+ result << ' '
52
+ result << process_0_999(digits[6..9])
48
53
  result.strip!
49
54
  end
50
55
 
@@ -81,6 +86,14 @@ module PolishNumber
81
86
  end
82
87
  end
83
88
 
89
+ def self.millions(number, digits)
90
+ if number == 0
91
+ ''
92
+ else
93
+ MILLIONS[classify(number, digits)]
94
+ end
95
+ end
96
+
84
97
  def self.classify(number, digits)
85
98
  if number == 1
86
99
  :one
@@ -1,3 +1,3 @@
1
1
  module PolishNumber
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -30,7 +30,9 @@ describe :PolishNumber do
30
30
  10000 => 'dziesięć tysięcy',
31
31
  22141 => 'dwadzieścia dwa tysiące sto czterdzieści jeden',
32
32
  123754 => 'sto dwadzieścia trzy tysiące siedemset pięćdziesiąt cztery',
33
- 999999 => 'dziewięćset dziewięćdziesiąt dziewięć tysięcy dziewięćset dziewięćdziesiąt dziewięć'
33
+ 999999 => 'dziewięćset dziewięćdziesiąt dziewięć tysięcy dziewięćset dziewięćdziesiąt dziewięć',
34
+ 1999999 => 'jeden milion dziewięćset dziewięćdziesiąt dziewięć tysięcy dziewięćset dziewięćdziesiąt dziewięć',
35
+ 5123754 => 'pięć milionów sto dwadzieścia trzy tysiące siedemset pięćdziesiąt cztery'
34
36
  }.each do |number, translation|
35
37
  it "should translate #{number} to '#{translation}'" do
36
38
  PolishNumber.translate(number).should == translation
@@ -81,7 +83,9 @@ describe :PolishNumber do
81
83
  10000 => 'dziesięć tysięcy złotych',
82
84
  22141 => 'dwadzieścia dwa tysiące sto czterdzieści jeden złotych',
83
85
  123754 => 'sto dwadzieścia trzy tysiące siedemset pięćdziesiąt cztery złote',
84
- 999999 => 'dziewięćset dziewięćdziesiąt dziewięć tysięcy dziewięćset dziewięćdziesiąt dziewięć złotych'
86
+ 999999 => 'dziewięćset dziewięćdziesiąt dziewięć tysięcy dziewięćset dziewięćdziesiąt dziewięć złotych',
87
+ 1999999 => 'jeden milion dziewięćset dziewięćdziesiąt dziewięć tysięcy dziewięćset dziewięćdziesiąt dziewięć złotych',
88
+ 5123754 => 'pięć milionów sto dwadzieścia trzy tysiące siedemset pięćdziesiąt cztery złote'
85
89
  }.each do |number, translation|
86
90
  it "should translate #{number} to '#{translation}'" do
87
91
  PolishNumber.translate(number, :currency => :PLN).should == translation
@@ -92,8 +96,8 @@ describe :PolishNumber do
92
96
  lambda { PolishNumber.translate(-1) }.should.raise(ArgumentError)
93
97
  end
94
98
 
95
- it "should raise ArgumentError when number is greater than 999999.99" do
96
- lambda { PolishNumber.translate(1_000_000) }.should.raise(ArgumentError)
99
+ it "should raise ArgumentError when number is greater than 999999999.99" do
100
+ lambda { PolishNumber.translate(1_000_000_000) }.should.raise(ArgumentError)
97
101
  end
98
102
 
99
103
  it "should raise ArgumentError when currency is unknown" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polish_number
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wojciech Piekutowski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-21 00:00:00.000000000 Z
11
+ date: 2014-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -107,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
107
  version: '0'
108
108
  requirements: []
109
109
  rubyforge_project:
110
- rubygems_version: 2.2.2
110
+ rubygems_version: 2.4.3
111
111
  signing_key:
112
112
  specification_version: 4
113
113
  summary: Translates numbers to Polish words