ziffern 1.1.0 → 1.1.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.
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