ziffern 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/ziffern.rb +15 -13
  4. data/ziffern_spec.rb +15 -12
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 315e0993fe513ac37395d1f11482815cc99bd338
4
- data.tar.gz: efb38af4eb9f3a046e42e35d5488c03aadc0778b
3
+ metadata.gz: d46e6090528de5ba4744026e7b24e3fa57bd74ac
4
+ data.tar.gz: e597e79f69f4bed8851f55b505fcc27a05676d59
5
5
  SHA512:
6
- metadata.gz: 0be10fde397f6ab2f527f8b6f4e357b8ed128b7be1304f1c77be85538a01968f6f6b79d934baf2215701a8df26ed1c5d724f2302a7de08d167b41048a31c16f9
7
- data.tar.gz: b45e9c8c42634e11555da8079f3527220c1fa17444e14ba5f15bf4af8d34344c2e6a9f71cddd558b6a0eb95227250cd8d2456c7a7cddf0cdabc599c305b26974
6
+ metadata.gz: b71fc874f5c1255920801d7574bcfa6c198fb0b0e9b9bcf9b14eb8b26db0cd99e43051803f1e81d81718fd9b386027614661793cd5ea3ae66c517a87b0ae9082
7
+ data.tar.gz: a857c43870ebe02af318fa5a7b623783d55b27fe209138647d6e6123fb7595be63dc2535165d06d3f0be9fdde47b57153fea9b0fc64e55b4553ca31450d74f79
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  **Number to text, in _German_!**
4
4
 
5
- Handles _positive and negative_ numbers up to **125 digits**, with _unlimited decimals_.
5
+ Handles _positive and negative_ numbers up to **126 digits**, with _unlimited decimals_.
6
6
 
7
7
  Just create an instance of the class and use the `#to_german` method to convert numbers,
8
8
  it accepts floats, integers and strings, and will raise subclasses of `ArgumentError` if
data/ziffern.rb CHANGED
@@ -2,14 +2,16 @@ class Ziffern
2
2
 
3
3
  # http://de.wikipedia.org/wiki/Zahlennamen
4
4
 
5
- NINETEEN = %w{ null eins zwei drei vier fünf sechs sieben acht neun zehn elf zwölf
6
- dreizehn vierzehn fünfzehn sechzehn siebzehn achtzehn neunzehn }
5
+ NINETEEN = %w[ null eins zwei drei vier fünf sechs sieben acht neun zehn elf zwölf
6
+ dreizehn vierzehn fünfzehn sechzehn siebzehn achtzehn neunzehn ]
7
7
 
8
- TENS = %w{ zwanzig dreißig vierzig fünfzig sechzig siebzig achtzig neunzig }.unshift(nil, nil)
8
+ TENS = [nil, nil] + %w[ zwanzig dreißig vierzig fünfzig sechzig siebzig achtzig neunzig ]
9
9
 
10
- BIG = %w{ M B Tr Quadr Quint Sext Sept Okt Non Dez Undez Dodez Tredez
11
- Quattuordez Quindez Sedez Septendez Dodevigint Undevigint Vigint }.flat_map do |prefix|
12
- %W( #{prefix}illion #{prefix}illiarde )
10
+ BIG = %w[
11
+ M B Tr Quadr Quint Sext Sept Okt Non Dez Undez Dodez Tredez
12
+ Quattuordez Quindez Sedez Septendez Dodevigint Undevigint Vigint
13
+ ].flat_map do |prefix|
14
+ %W[ #{prefix}illion #{prefix}illiarde ]
13
15
  end
14
16
 
15
17
  TooLargeNumberError = Class.new(ArgumentError)
@@ -78,10 +80,10 @@ class Ziffern
78
80
  end
79
81
 
80
82
  def convert_millions(number_of_millions)
81
- groups = group_with_big_names(number_of_millions)
82
- fail TooLargeNumberError if groups.size > BIG.size
83
+ pairs = pair_with_big_names(number_of_millions)
84
+ fail TooLargeNumberError if pairs.size > BIG.size
83
85
 
84
- groups
86
+ pairs
85
87
  .reject { |amount,| amount.zero? }
86
88
  .map { |amount, name| quantify_big_name(amount, name) }
87
89
  .join(' ')
@@ -95,15 +97,15 @@ class Ziffern
95
97
  end
96
98
 
97
99
  # 12345678 => [[12, "Billion"], [345, "Milliarde"], [678, "Million"]]
98
- def group_with_big_names(number_of_millions)
99
- groups = []
100
+ def pair_with_big_names(number_of_millions)
101
+ number_groups = []
100
102
 
101
103
  until number_of_millions.zero?
102
104
  number_of_millions, last_3 = number_of_millions.divmod(1000)
103
- groups << last_3
105
+ number_groups << last_3
104
106
  end
105
107
 
106
- groups.zip(BIG).reverse
108
+ number_groups.zip(BIG).reverse
107
109
  end
108
110
 
109
111
  def convert_decimals(number)
data/ziffern_spec.rb CHANGED
@@ -14,16 +14,6 @@ describe Ziffern do
14
14
  end
15
15
  end
16
16
 
17
- context 'error handling' do
18
- it 'throws an ArgumentError if the number is bigger than it can handle' do
19
- expect { subject.to_german(10 ** 126) }.to raise_error Ziffern::TooLargeNumberError
20
- end
21
-
22
- it 'throws an error on faulty input' do
23
- expect { subject.to_german("invalid.5") }.to raise_error Ziffern::InvalidNumberError
24
- end
25
- end
26
-
27
17
  context 'numbers up to 20' do
28
18
  test_german_numbers({
29
19
  0 => "null",
@@ -50,7 +40,7 @@ describe Ziffern do
50
40
  })
51
41
  end
52
42
 
53
- context 'up to one million' do
43
+ context 'numbers up to one million' do
54
44
  test_german_numbers({
55
45
  1000 => "eintausend",
56
46
  1234 => "eintausendzweihundertvierunddreißig",
@@ -84,9 +74,9 @@ describe Ziffern do
84
74
  test_german_numbers({
85
75
  0.1234 => "null Komma eins zwei drei vier",
86
76
  5.6789 => "fünf Komma sechs sieben acht neun",
77
+ 5.0 => "fünf Komma null",
87
78
  -5.6 => "minus fünf Komma sechs",
88
79
  -567.89 => "minus fünfhundertsiebenundsechzig Komma acht neun",
89
- 5.0 => "fünf Komma null",
90
80
  -0.001 => "minus null Komma null null eins"
91
81
  })
92
82
  end
@@ -99,4 +89,17 @@ describe Ziffern do
99
89
  })
100
90
  end
101
91
 
92
+ context 'errors' do
93
+ it 'raises an error if the number is bigger than it can handle' do
94
+ expect { subject.to_german(10 ** 126) }.to raise_error Ziffern::TooLargeNumberError
95
+ expect { subject.to_german(-10 ** 126) }.to raise_error Ziffern::TooLargeNumberError
96
+ end
97
+
98
+ it 'raises an error on faulty input' do
99
+ expect { subject.to_german("invalid") }.to raise_error Ziffern::InvalidNumberError
100
+ expect { subject.to_german("invalid.5") }.to raise_error Ziffern::InvalidNumberError
101
+ expect { subject.to_german("5.5u") }.to raise_error Ziffern::InvalidNumberError
102
+ end
103
+ end
104
+
102
105
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ziffern
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jimmy Börjesson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-14 00:00:00.000000000 Z
11
+ date: 2014-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler