amount_inflector 3.0.0 → 3.0.1
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.
- data/Gemfile +1 -1
- data/README.md +5 -0
- data/VERSION +1 -1
- data/amount_inflector.gemspec +5 -5
- data/lib/amount_inflector/amount_inflector.rb +1 -0
- data/lib/amount_inflector/number_to_kune.rb +35 -39
- data/spec/amount_inflector/number_to_kune_spec.rb +13 -4
- metadata +7 -7
data/Gemfile
CHANGED
data/README.md
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.0.
|
1
|
+
3.0.1
|
data/amount_inflector.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "amount_inflector"
|
8
|
-
s.version = "3.0.
|
8
|
+
s.version = "3.0.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kresimir Bojcic"]
|
12
|
-
s.date = "2012-11-
|
12
|
+
s.date = "2012-11-13"
|
13
13
|
s.description = "Amount Inflector for year/month/week/day (Croatian)"
|
14
14
|
s.email = "kresimir.bojcic@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -43,16 +43,16 @@ Gem::Specification.new do |s|
|
|
43
43
|
|
44
44
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
45
45
|
s.add_development_dependency(%q<rspec-rails>, ["~> 2.4.0"])
|
46
|
-
s.add_development_dependency(%q<bundler>, ["
|
46
|
+
s.add_development_dependency(%q<bundler>, [">= 0"])
|
47
47
|
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
48
48
|
else
|
49
49
|
s.add_dependency(%q<rspec-rails>, ["~> 2.4.0"])
|
50
|
-
s.add_dependency(%q<bundler>, ["
|
50
|
+
s.add_dependency(%q<bundler>, [">= 0"])
|
51
51
|
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
52
52
|
end
|
53
53
|
else
|
54
54
|
s.add_dependency(%q<rspec-rails>, ["~> 2.4.0"])
|
55
|
-
s.add_dependency(%q<bundler>, ["
|
55
|
+
s.add_dependency(%q<bundler>, [">= 0"])
|
56
56
|
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
57
57
|
end
|
58
58
|
end
|
@@ -11,6 +11,7 @@ class AmountInflector
|
|
11
11
|
:tisuca => { one:"tisuću", few:"tisuće", many:"tisuća" },
|
12
12
|
:milijun => { one:"milijun", few:"milijuna", many:"milijuna" },
|
13
13
|
:milijarda => { one:"milijarda", few:"milijarde", many:"milijardi" }
|
14
|
+
:promet => { one:"promet", few:"prometa", many:"prometa" }
|
14
15
|
}
|
15
16
|
|
16
17
|
def self.inflect(amount, unit)
|
@@ -10,10 +10,8 @@ class NumberToKune
|
|
10
10
|
WORDS = {
|
11
11
|
"0" => "nula",
|
12
12
|
"1" => "jedna",
|
13
|
-
"1_tisuca" => "jednu",
|
14
|
-
"
|
15
|
-
"2" => "dvije",
|
16
|
-
"2_milijun" => "dva",
|
13
|
+
"1_tisuca" => "jednu", "1_milijun" => "jedan",
|
14
|
+
"2" => "dvije", "2_milijun" => "dva",
|
17
15
|
"3" => "tri",
|
18
16
|
"4" => "četiri",
|
19
17
|
"5" => "pet",
|
@@ -32,10 +30,8 @@ class NumberToKune
|
|
32
30
|
"18" => "osamnaest",
|
33
31
|
"19" => "devetnaest",
|
34
32
|
"20" => "dvadeset",
|
35
|
-
"21" => "dvadesetjedna",
|
36
|
-
"
|
37
|
-
"22" => "dvadesetdvije",
|
38
|
-
"22_milijun" => "dvadesetdva",
|
33
|
+
"21" => "dvadesetjedna", "21_milijun" => "dvadesetjedan",
|
34
|
+
"22" => "dvadesetdvije", "22_milijun" => "dvadesetdva",
|
39
35
|
"30" => "trideset",
|
40
36
|
"40" => "četrdeset",
|
41
37
|
"50" => "pedeset",
|
@@ -69,48 +65,48 @@ class NumberToKune
|
|
69
65
|
result += " i #{translate_to_words(after_decimal.to_s, '')} #{AmountInflector.inflect_unit(after_decimal.to_i, :lipa)}"
|
70
66
|
end
|
71
67
|
|
72
|
-
private
|
73
|
-
|
74
68
|
def translate_to_words(amount, in_words, unit = nil)
|
75
|
-
return in_words if amount.nil? || amount.size == 0 ||
|
69
|
+
return in_words if amount.nil? || amount.size == 0 || amount.gsub("0","").size == 0
|
70
|
+
return '' if amount == "1" && !unit.nil?
|
71
|
+
raise "Nisu podrzani iznosi preko bilijun, a poslan je iznos #{amount}" if amount.to_i >= 1_000_000_000_000
|
76
72
|
|
77
73
|
amount = amount.to_i.to_s
|
78
|
-
if amount.to_i
|
79
|
-
|
80
|
-
if as_word(amount, unit) != nil
|
81
|
-
in_words += as_word(amount, unit)
|
82
|
-
decoded = amount.size
|
83
|
-
else
|
84
|
-
in_words += as_word(amount[0] + "0" * (amount.size - 1), unit)
|
85
|
-
decoded = 1
|
86
|
-
end
|
87
|
-
translate_to_words(take_off(amount, decoded), in_words, unit)
|
88
|
-
end
|
89
|
-
elsif amount.to_i < 1_000_000
|
90
|
-
decompose(amount, :tisuca, in_words)
|
91
|
-
elsif amount.to_i < 1_000_000_000
|
92
|
-
decompose(amount, :milijun, in_words)
|
93
|
-
elsif amount.to_i < 1_000_000_000_000
|
94
|
-
decompose(amount, :milijarda, in_words)
|
74
|
+
if amount.to_i >= 1000
|
75
|
+
decompose(amount, in_words)
|
95
76
|
else
|
96
|
-
|
77
|
+
in_words += replaced_word(amount, unit)
|
78
|
+
translate_to_words(remove_first_n(amount, replaced_size(amount, unit)), in_words, unit)
|
97
79
|
end
|
98
80
|
end
|
99
81
|
|
82
|
+
def replaced_word(amount, unit)
|
83
|
+
as_word(amount, unit) || as_word(zeroed(amount), unit)
|
84
|
+
end
|
85
|
+
|
86
|
+
def replaced_size(amount, unit)
|
87
|
+
as_word(amount, unit).nil? ? 1 : amount.size
|
88
|
+
end
|
89
|
+
|
90
|
+
def zeroed(amount)
|
91
|
+
amount[0] + "0" * (amount.size - 1)
|
92
|
+
end
|
93
|
+
|
100
94
|
def as_word(amount, unit = nil)
|
101
|
-
|
95
|
+
WORDS["#{amount}_#{unit.nil? ? '' : unit}"] || WORDS[amount]
|
96
|
+
end
|
97
|
+
|
98
|
+
def remove_first_n(source, n = 1)
|
99
|
+
source[n..-1]
|
102
100
|
end
|
103
101
|
|
104
|
-
def
|
105
|
-
|
106
|
-
(0...number_to_take_off).each { result.chop! }
|
107
|
-
result.reverse
|
102
|
+
def amount_unit(amount)
|
103
|
+
KOEFS.select { |key,value| amount.to_i >= value }.map { |key,value| key }.reverse[0]
|
108
104
|
end
|
109
105
|
|
110
|
-
def decompose(amount,
|
111
|
-
|
112
|
-
|
113
|
-
in_words += AmountInflector.inflect_unit(
|
114
|
-
translate_to_words(amount
|
106
|
+
def decompose(amount, in_words)
|
107
|
+
unit = amount_unit(amount)
|
108
|
+
without_unit = (amount.to_i / KOEFS.fetch(unit)).to_s
|
109
|
+
in_words += translate_to_words(without_unit.to_s, '', unit) + AmountInflector.inflect_unit(without_unit.to_i, unit)
|
110
|
+
translate_to_words(remove_first_n(amount, without_unit.size), in_words, unit)
|
115
111
|
end
|
116
112
|
end
|
@@ -2,17 +2,22 @@
|
|
2
2
|
require 'amount_inflector/number_to_kune.rb'
|
3
3
|
|
4
4
|
describe NumberToKune do
|
5
|
-
it 'converts to kunas' do
|
5
|
+
it 'converts to kunas under 1000' do
|
6
6
|
NumberToKune.convert(21).should == "dvadesetjedna kuna i nula lipa"
|
7
7
|
NumberToKune.convert(100).should == "sto kuna i nula lipa"
|
8
8
|
NumberToKune.convert(200).should == "dvjesto kuna i nula lipa"
|
9
9
|
NumberToKune.convert(200.26).should == "dvjesto kuna i dvadesetšest lipa"
|
10
|
-
NumberToKune.convert(1_200.26).should == "tisućudvjesto kuna i dvadesetšest lipa"
|
11
10
|
NumberToKune.convert(10).should == "deset kuna i nula lipa"
|
12
11
|
NumberToKune.convert(3).should == "tri kune i nula lipa"
|
13
12
|
NumberToKune.convert(18).should == "osamnaest kuna i nula lipa"
|
14
13
|
NumberToKune.convert(24).should == "dvadesetčetiri kune i nula lipa"
|
15
14
|
NumberToKune.convert(27).should == "dvadesetsedam kuna i nula lipa"
|
15
|
+
NumberToKune.convert(22).should == "dvadesetdvije kune i nula lipa"
|
16
|
+
NumberToKune.convert(0.00).should == "nula kuna i nula lipa"
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'converts to kunas over 1000' do
|
20
|
+
NumberToKune.convert(1_200.26).should == "tisućudvjesto kuna i dvadesetšest lipa"
|
16
21
|
NumberToKune.convert(1000).should == "tisuću kuna i nula lipa"
|
17
22
|
NumberToKune.convert(101_000).should == "stojednutisuću kuna i nula lipa"
|
18
23
|
NumberToKune.convert(1965).should == "tisućudevetstošezdesetpet kuna i nula lipa"
|
@@ -33,10 +38,14 @@ describe NumberToKune do
|
|
33
38
|
NumberToKune.convert(926_543_864).should == "devetstodvadesetšestmilijunapetstočetrdesettritisućeosamstošezdesetčetiri kune i nula lipa"
|
34
39
|
NumberToKune.convert(19_926_543_864).should == "devetnaestmilijardidevetstodvadesetšestmilijunapetstočetrdesettritisućeosamstošezdesetčetiri kune i nula lipa"
|
35
40
|
NumberToKune.convert(121_926_543_864).should == "stodvadesetjednamilijardadevetstodvadesetšestmilijunapetstočetrdesettritisućeosamstošezdesetčetiri kune i nula lipa"
|
36
|
-
NumberToKune.convert(22).should == "dvadesetdvije kune i nula lipa"
|
37
41
|
NumberToKune.convert(22_000_000).should == "dvadesetdvamilijuna kuna i nula lipa"
|
38
|
-
NumberToKune.convert(0.00).should == "nula kuna i nula lipa"
|
39
42
|
NumberToKune.convert(97_543.21).should == "devedesetsedamtisućapetstočetrdesettri kune i dvadesetjedna lipa"
|
40
43
|
end
|
41
44
|
|
45
|
+
it 'reports on a too big number of a number' do
|
46
|
+
lambda do
|
47
|
+
NumberToKune.convert(10000000000000)
|
48
|
+
end.should raise_error 'Nisu podrzani iznosi preko bilijun, a poslan je iznos 10000000000000'
|
49
|
+
end
|
50
|
+
|
42
51
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amount_inflector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.1
|
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-11-
|
12
|
+
date: 2012-11-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec-rails
|
@@ -32,17 +32,17 @@ dependencies:
|
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
35
|
-
- -
|
35
|
+
- - ! '>='
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
37
|
+
version: '0'
|
38
38
|
type: :development
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
|
-
- -
|
43
|
+
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
45
|
+
version: '0'
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: jeweler
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -96,7 +96,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
96
96
|
version: '0'
|
97
97
|
segments:
|
98
98
|
- 0
|
99
|
-
hash:
|
99
|
+
hash: 866616536439487970
|
100
100
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
101
|
none: false
|
102
102
|
requirements:
|