wintr 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 +4 -4
- data/lib/wintr.rb +1 -0
- data/lib/wintr/constants.rb +75 -0
- data/lib/wintr/digit_array.rb +22 -0
- data/lib/wintr/hundreds_tens_units.rb +24 -0
- data/lib/wintr/number.rb +10 -11
- data/lib/wintr/tens_units.rb +13 -0
- data/lib/wintr/units.rb +11 -0
- data/lib/wintr/version.rb +1 -1
- data/lib/wintr/weighted_digit_array.rb +21 -0
- data/spec/wintr/digit_array_spec.rb +29 -0
- data/spec/wintr/hundreds_tens_units_spec.rb +25 -0
- data/spec/wintr/number_spec.rb +96 -62
- data/spec/wintr/tens_units_spec.rb +101 -0
- data/spec/wintr/{one_digit_group_spec.rb → units_spec.rb} +3 -3
- data/spec/wintr/weighted_digit_array_spec.rb +25 -0
- metadata +20 -25
- data/lib/wintr/digit_group.rb +0 -22
- data/lib/wintr/one_digit_group.rb +0 -24
- data/lib/wintr/power_of_thousand.rb +0 -48
- data/lib/wintr/three_digit_group.rb +0 -21
- data/lib/wintr/two_digit_group.rb +0 -45
- data/lib/wintr/weighted_digit_group.rb +0 -17
- data/lib/wintr/word_array.rb +0 -12
- data/spec/wintr/digit_group_spec.rb +0 -28
- data/spec/wintr/power_of_thousand_spec.rb +0 -23
- data/spec/wintr/three_digit_group_spec.rb +0 -24
- data/spec/wintr/two_digit_group_spec.rb +0 -60
- data/spec/wintr/weighted_digit_group_spec.rb +0 -23
- data/spec/wintr/word_array_spec.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c211ba5de98d2c20f5618d5113efec566fba93b6
|
4
|
+
data.tar.gz: ff40cda74a2495cf4c4f52a258dd704cf4bf7566
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa8c452c75a9e2f15a3dde4c8dc90f783237eccff76c50531addd02fa955603ae8bbf5cc8a48ff4c0a5d0c14a109fdb22268195ac1c3914e70ff5c4d2083993b
|
7
|
+
data.tar.gz: a9b7757053821a864b574f768e385d950e3fc943a40bcf22ee09d1d9a80390315c666f1f45f90ba8572c01e2418f1a43459d1d80c9ab2f1aef744416e9e0c13c
|
data/lib/wintr.rb
CHANGED
@@ -0,0 +1,75 @@
|
|
1
|
+
module Wintr
|
2
|
+
UNITS = {
|
3
|
+
'0' => '',
|
4
|
+
'1' => 'one',
|
5
|
+
'2' => 'two',
|
6
|
+
'3' => 'three',
|
7
|
+
'4' => 'four',
|
8
|
+
'5' => 'five',
|
9
|
+
'6' => 'six',
|
10
|
+
'7' => 'seven',
|
11
|
+
'8' => 'eight',
|
12
|
+
'9' => 'nine'
|
13
|
+
}
|
14
|
+
|
15
|
+
TENS = {
|
16
|
+
'2' => 'twenty',
|
17
|
+
'3' => 'thirty',
|
18
|
+
'4' => 'forty',
|
19
|
+
'5' => 'fifty',
|
20
|
+
'6' => 'sixty',
|
21
|
+
'7' => 'seventy',
|
22
|
+
'8' => 'eighty',
|
23
|
+
'9' => 'ninety'
|
24
|
+
}
|
25
|
+
|
26
|
+
TEN_TO_NINETEEN = {
|
27
|
+
'10' => 'ten',
|
28
|
+
'11' => 'eleven',
|
29
|
+
'12' => 'twelve',
|
30
|
+
'13' => 'thirteen',
|
31
|
+
'14' => 'fourteen',
|
32
|
+
'15' => 'fifteen',
|
33
|
+
'16' => 'sixteen',
|
34
|
+
'17' => 'seventeen',
|
35
|
+
'18' => 'eighteen',
|
36
|
+
'19' => 'nineteen'
|
37
|
+
}
|
38
|
+
|
39
|
+
POWER_OF_THOUSAND = {
|
40
|
+
0 => '',
|
41
|
+
1 => 'thousand',
|
42
|
+
2 => 'million',
|
43
|
+
3 => 'billion',
|
44
|
+
4 => 'trillion',
|
45
|
+
5 => 'quadrillion',
|
46
|
+
6 => 'quintillion',
|
47
|
+
7 => 'sextillion',
|
48
|
+
8 => 'septillion',
|
49
|
+
9 => 'octillion',
|
50
|
+
10 => 'nonillion',
|
51
|
+
11 => 'decillion',
|
52
|
+
12 => 'undecillion',
|
53
|
+
13 => 'duodecillion',
|
54
|
+
14 => 'tredecillion',
|
55
|
+
15 => 'quattuordecillion',
|
56
|
+
16 => 'quindecillion',
|
57
|
+
17 => 'sexdecillion',
|
58
|
+
18 => 'septendecillion',
|
59
|
+
19 => 'octodecillion',
|
60
|
+
20 => 'novemdecillion',
|
61
|
+
21 => 'vigintillion',
|
62
|
+
22 => 'unvigintillion',
|
63
|
+
23 => 'duovigintillion',
|
64
|
+
24 => 'trevigintillion',
|
65
|
+
25 => 'quattuorvigintillion',
|
66
|
+
26 => 'quinvigintillion',
|
67
|
+
27 => 'sexvigintillion',
|
68
|
+
28 => 'septenvigintillion',
|
69
|
+
29 => 'octovigintillion',
|
70
|
+
30 => 'novemvigintillion',
|
71
|
+
31 => 'trigintillion',
|
72
|
+
32 => 'untrigintillion',
|
73
|
+
33 => 'duotrigintillion'
|
74
|
+
}
|
75
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'wintr/units'
|
2
|
+
require 'wintr/tens_units'
|
3
|
+
require 'wintr/hundreds_tens_units'
|
4
|
+
|
5
|
+
module Wintr
|
6
|
+
class DigitArray
|
7
|
+
def initialize(digits)
|
8
|
+
@digits = digits
|
9
|
+
end
|
10
|
+
|
11
|
+
def to_s
|
12
|
+
case @digits.size
|
13
|
+
when 1
|
14
|
+
Units.new(*@digits)
|
15
|
+
when 2
|
16
|
+
TensUnits.new(*@digits)
|
17
|
+
when 3
|
18
|
+
HundredsTensUnits.new(*@digits)
|
19
|
+
end.to_s
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Wintr
|
2
|
+
class HundredsTensUnits
|
3
|
+
def initialize(hundreds, tens, units)
|
4
|
+
@hundreds, @tens, @units = hundreds, tens, units
|
5
|
+
end
|
6
|
+
|
7
|
+
def to_s
|
8
|
+
return '' if @hundreds == '0' && @tens == '0' && @units == '0'
|
9
|
+
"#{hundreds} #{and_join} #{tens_and_units}".strip
|
10
|
+
end
|
11
|
+
|
12
|
+
def hundreds
|
13
|
+
Units.new(@hundreds).to_s + ' hundred' if @hundreds != '0'
|
14
|
+
end
|
15
|
+
|
16
|
+
def and_join
|
17
|
+
'and' unless @tens == '0' && @units == '0'
|
18
|
+
end
|
19
|
+
|
20
|
+
def tens_and_units
|
21
|
+
TensUnits.new(@tens, @units).to_s
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/wintr/number.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
require 'wintr/
|
2
|
-
require 'wintr/word_array'
|
1
|
+
require 'wintr/weighted_digit_array'
|
3
2
|
|
4
3
|
module Wintr
|
5
4
|
class Number
|
@@ -10,16 +9,16 @@ module Wintr
|
|
10
9
|
def to_s
|
11
10
|
return 'zero' if @number == 0
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
number_in_groups_of_three.each_with_index.inject([]) do |number_as_words_array, (digit_array, power_of_thousand)|
|
13
|
+
number_as_words_array.unshift(WeightedDigitArray.new(digit_array, power_of_thousand).to_s)
|
14
|
+
end.join(' ').squeeze(' ').strip
|
15
|
+
end
|
16
|
+
|
17
|
+
def number_in_groups_of_three
|
18
|
+
# 1,234,567 #=> [%w[5 6 7], %w[2 3 4], %w[1]]
|
16
19
|
|
17
|
-
|
18
|
-
|
19
|
-
word_array.unshift(WeightedDigitGroup.new(digit_group, power_of_thousand).to_s)
|
20
|
-
power_of_thousand += 1
|
21
|
-
end
|
22
|
-
WordArray.new(word_array).to_s
|
20
|
+
# TODO: Simplify!
|
21
|
+
@number.to_s.chars.to_a.reverse.each_slice(3).inject([]) {|number_as_words_array, three_digit_array| number_as_words_array << three_digit_array.reverse}
|
23
22
|
end
|
24
23
|
end
|
25
24
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Wintr
|
2
|
+
class TensUnits
|
3
|
+
def initialize(tens, units)
|
4
|
+
@tens, @units = tens, units
|
5
|
+
end
|
6
|
+
|
7
|
+
def to_s
|
8
|
+
return '' if @tens == '0' && @units == '0'
|
9
|
+
return TEN_TO_NINETEEN[@tens + @units] if @tens == '1'
|
10
|
+
"#{TENS[@tens]} #{Units.new(@units)}".strip
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/wintr/units.rb
ADDED
data/lib/wintr/version.rb
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'wintr/digit_array'
|
2
|
+
|
3
|
+
module Wintr
|
4
|
+
class WeightedDigitArray
|
5
|
+
def initialize(digit_array, power_of_thousand)
|
6
|
+
@digit_array, @power_of_thousand = digit_array, power_of_thousand
|
7
|
+
end
|
8
|
+
|
9
|
+
def to_s
|
10
|
+
[digit_array_in_words, power_of_thousand_in_words].join(' ').strip
|
11
|
+
end
|
12
|
+
|
13
|
+
def digit_array_in_words
|
14
|
+
DigitArray.new(@digit_array).to_s
|
15
|
+
end
|
16
|
+
|
17
|
+
def power_of_thousand_in_words
|
18
|
+
POWER_OF_THOUSAND[@power_of_thousand] if digit_array_in_words != ''
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Wintr::DigitArray do
|
4
|
+
describe '#to_s' do
|
5
|
+
it 'converts 0 to an empty string' do
|
6
|
+
expect(Wintr::DigitArray.new(['0']).to_s).to eq('')
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'converts 9' do
|
10
|
+
expect(Wintr::DigitArray.new(['9']).to_s).to eq('nine')
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'converts 10' do
|
14
|
+
expect(Wintr::DigitArray.new(%w[1 0]).to_s).to eq('ten')
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'converts 19' do
|
18
|
+
expect(Wintr::DigitArray.new(%w[1 9]).to_s).to eq('nineteen')
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'converts 20' do
|
22
|
+
expect(Wintr::DigitArray.new(%w[2 0]).to_s).to eq('twenty')
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'converts 702' do
|
26
|
+
expect(Wintr::DigitArray.new(%w[7 0 2]).to_s).to eq('seven hundred and two')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Wintr::HundredsTensUnits do
|
4
|
+
describe '#to_s' do
|
5
|
+
it 'converts 000 to an empty string' do
|
6
|
+
expect(Wintr::HundredsTensUnits.new('0', '0', '0').to_s).to eq('')
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'converts 101' do
|
10
|
+
expect(Wintr::HundredsTensUnits.new('1', '0', '1').to_s).to eq('one hundred and one')
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'converts 900' do
|
14
|
+
expect(Wintr::HundredsTensUnits.new('9', '0', '0').to_s).to eq('nine hundred')
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'converts 070' do
|
18
|
+
expect(Wintr::HundredsTensUnits.new('0', '7', '0').to_s).to eq('and seventy')
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'converts 005' do
|
22
|
+
expect(Wintr::HundredsTensUnits.new('0', '0', '5').to_s).to eq('and five')
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/spec/wintr/number_spec.rb
CHANGED
@@ -1,72 +1,106 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
3
|
+
def conversions
|
4
|
+
{
|
5
|
+
0 => 'zero',
|
6
|
+
1 => 'one',
|
7
|
+
2 => 'two',
|
8
|
+
3 => 'three',
|
9
|
+
4 => 'four',
|
10
|
+
5 => 'five',
|
11
|
+
6 => 'six',
|
12
|
+
7 => 'seven',
|
13
|
+
8 => 'eight',
|
14
|
+
9 => 'nine',
|
15
|
+
10 => 'ten',
|
11
16
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
18 => 'eighteen',
|
22
|
-
19 => 'nineteen',
|
23
|
-
20 => 'twenty',
|
24
|
-
21 => 'twenty one',
|
17
|
+
11 => 'eleven',
|
18
|
+
12 => 'twelve',
|
19
|
+
13 => 'thirteen',
|
20
|
+
14 => 'fourteen',
|
21
|
+
15 => 'fifteen',
|
22
|
+
16 => 'sixteen',
|
23
|
+
17 => 'seventeen',
|
24
|
+
18 => 'eighteen',
|
25
|
+
19 => 'nineteen',
|
25
26
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
27
|
+
20 => 'twenty',
|
28
|
+
21 => 'twenty one',
|
29
|
+
30 => 'thirty',
|
30
|
+
32 => 'thirty two',
|
31
|
+
40 => 'forty',
|
32
|
+
43 => 'forty three',
|
33
|
+
50 => 'fifty',
|
34
|
+
54 => 'fifty four',
|
35
|
+
60 => 'sixty',
|
36
|
+
65 => 'sixty five',
|
37
|
+
70 => 'seventy',
|
38
|
+
76 => 'seventy six',
|
39
|
+
80 => 'eighty',
|
40
|
+
87 => 'eighty seven',
|
41
|
+
90 => 'ninety',
|
42
|
+
98 => 'ninety eight',
|
31
43
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
18 * (10**18) + 18 => 'eighteen quintillion and eighteen',
|
36
|
-
21 * (10**21) + 21 => 'twenty one sextillion and twenty one',
|
37
|
-
24 * (10**24) + 24 => 'twenty four septillion and twenty four',
|
38
|
-
27 * (10**27) + 27 => 'twenty seven octillion and twenty seven',
|
39
|
-
30 * (10**30) + 30 => 'thirty nonillion and thirty',
|
40
|
-
33 * (10**33) + 33 => 'thirty three decillion and thirty three',
|
41
|
-
36 * (10**36) + 36 => 'thirty six undecillion and thirty six',
|
42
|
-
39 * (10**39) + 39 => 'thirty nine duodecillion and thirty nine',
|
43
|
-
42 * (10**42) + 42 => 'forty two tredecillion and forty two',
|
44
|
-
45 * (10**45) + 45 => 'forty five quattuordecillion and forty five',
|
45
|
-
48 * (10**48) + 48 => 'forty eight quindecillion and forty eight',
|
46
|
-
51 * (10**51) + 51 => 'fifty one sexdecillion and fifty one',
|
47
|
-
54 * (10**54) + 54 => 'fifty four septendecillion and fifty four',
|
48
|
-
57 * (10**57) + 57 => 'fifty seven octodecillion and fifty seven',
|
49
|
-
60 * (10**60) + 60 => 'sixty novemdecillion and sixty',
|
50
|
-
63 * (10**63) + 63 => 'sixty three vigintillion and sixty three',
|
51
|
-
66 * (10**66) + 66 => 'sixty six unvigintillion and sixty six',
|
52
|
-
69 * (10**69) + 69 => 'sixty nine duovigintillion and sixty nine',
|
53
|
-
72 * (10**72) + 72 => 'seventy two trevigintillion and seventy two',
|
54
|
-
75 * (10**75) + 75 => 'seventy five quattuorvigintillion and seventy five',
|
55
|
-
78 * (10**78) + 78 => 'seventy eight quinvigintillion and seventy eight',
|
56
|
-
81 * (10**81) + 81 => 'eighty one sexvigintillion and eighty one',
|
57
|
-
84 * (10**84) + 84 => 'eighty four septenvigintillion and eighty four',
|
58
|
-
87 * (10**87) + 87 => 'eighty seven octovigintillion and eighty seven',
|
59
|
-
90 * (10**90) + 90 => 'ninety novemvigintillion and ninety',
|
60
|
-
93 * (10**93) + 93 => 'ninety three trigintillion and ninety three',
|
61
|
-
96 * (10**96) + 96 => 'ninety six untrigintillion and ninety six',
|
62
|
-
99 * (10**99) + 99 => 'ninety nine duotrigintillion and ninety nine'
|
63
|
-
}
|
44
|
+
100 => 'one hundred',
|
45
|
+
102 => 'one hundred and two',
|
46
|
+
115 => 'one hundred and fifteen',
|
64
47
|
|
65
|
-
|
48
|
+
5_000 => 'five thousand',
|
49
|
+
5_001 => 'five thousand and one',
|
50
|
+
5_010 => 'five thousand and ten',
|
51
|
+
5_011 => 'five thousand and eleven',
|
52
|
+
5_100 => 'five thousand one hundred',
|
53
|
+
5_101 => 'five thousand one hundred and one',
|
54
|
+
5_110 => 'five thousand one hundred and ten',
|
55
|
+
5_111 => 'five thousand one hundred and eleven',
|
56
|
+
|
57
|
+
# 17_011_007 => 'seventeen million eleven thousand and seven',
|
58
|
+
# 17_011_075 => 'seventeen million eleven thousand and seven five',
|
59
|
+
# 17_011_705 => 'seventeen million eleven thousand seven hundred and five',
|
60
|
+
|
61
|
+
56_945_781 => 'fifty six million nine hundred and forty five thousand seven hundred and eighty one',
|
62
|
+
126_000_010 => 'one hundred and twenty six million and ten',
|
63
|
+
999_999_999 => 'nine hundred and ninety nine million nine hundred and ninety nine thousand nine hundred and ninety nine',
|
64
|
+
|
65
|
+
9 * (10**9) + 9 => 'nine billion and nine',
|
66
|
+
12 * (10**12) + 12 => 'twelve trillion and twelve',
|
67
|
+
15 * (10**15) + 15 => 'fifteen quadrillion and fifteen',
|
68
|
+
18 * (10**18) + 18 => 'eighteen quintillion and eighteen',
|
69
|
+
21 * (10**21) + 21 => 'twenty one sextillion and twenty one',
|
70
|
+
24 * (10**24) + 24 => 'twenty four septillion and twenty four',
|
71
|
+
27 * (10**27) + 27 => 'twenty seven octillion and twenty seven',
|
72
|
+
30 * (10**30) + 30 => 'thirty nonillion and thirty',
|
73
|
+
33 * (10**33) + 33 => 'thirty three decillion and thirty three',
|
74
|
+
36 * (10**36) + 36 => 'thirty six undecillion and thirty six',
|
75
|
+
39 * (10**39) + 39 => 'thirty nine duodecillion and thirty nine',
|
76
|
+
42 * (10**42) + 42 => 'forty two tredecillion and forty two',
|
77
|
+
45 * (10**45) + 45 => 'forty five quattuordecillion and forty five',
|
78
|
+
48 * (10**48) + 48 => 'forty eight quindecillion and forty eight',
|
79
|
+
51 * (10**51) + 51 => 'fifty one sexdecillion and fifty one',
|
80
|
+
54 * (10**54) + 54 => 'fifty four septendecillion and fifty four',
|
81
|
+
57 * (10**57) + 57 => 'fifty seven octodecillion and fifty seven',
|
82
|
+
60 * (10**60) + 60 => 'sixty novemdecillion and sixty',
|
83
|
+
63 * (10**63) + 63 => 'sixty three vigintillion and sixty three',
|
84
|
+
66 * (10**66) + 66 => 'sixty six unvigintillion and sixty six',
|
85
|
+
69 * (10**69) + 69 => 'sixty nine duovigintillion and sixty nine',
|
86
|
+
72 * (10**72) + 72 => 'seventy two trevigintillion and seventy two',
|
87
|
+
75 * (10**75) + 75 => 'seventy five quattuorvigintillion and seventy five',
|
88
|
+
78 * (10**78) + 78 => 'seventy eight quinvigintillion and seventy eight',
|
89
|
+
81 * (10**81) + 81 => 'eighty one sexvigintillion and eighty one',
|
90
|
+
84 * (10**84) + 84 => 'eighty four septenvigintillion and eighty four',
|
91
|
+
87 * (10**87) + 87 => 'eighty seven octovigintillion and eighty seven',
|
92
|
+
90 * (10**90) + 90 => 'ninety novemvigintillion and ninety',
|
93
|
+
93 * (10**93) + 93 => 'ninety three trigintillion and ninety three',
|
94
|
+
96 * (10**96) + 96 => 'ninety six untrigintillion and ninety six',
|
95
|
+
99 * (10**99) + 99 => 'ninety nine duotrigintillion and ninety nine'
|
96
|
+
}
|
97
|
+
end
|
98
|
+
|
99
|
+
RSpec.describe Wintr::Number do
|
66
100
|
describe "#to_s" do
|
67
|
-
|
68
|
-
it "converts #{integer}" do
|
69
|
-
Wintr::Number.new(integer).to_s.
|
101
|
+
conversions.each do |integer, word|
|
102
|
+
it "converts #{integer} to #{word}" do
|
103
|
+
expect(Wintr::Number.new(integer).to_s).to eq(word)
|
70
104
|
end
|
71
105
|
end
|
72
106
|
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Wintr::TensUnits do
|
4
|
+
describe '#to_s' do
|
5
|
+
it 'converts 00 to empty string' do
|
6
|
+
expect(Wintr::TensUnits.new('0', '0').to_s).to eq('')
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'converts 01' do
|
10
|
+
expect(Wintr::TensUnits.new('0', '1').to_s).to eq('one')
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'converts 02' do
|
14
|
+
expect(Wintr::TensUnits.new('0', '2').to_s).to eq('two')
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'converts 03' do
|
18
|
+
expect(Wintr::TensUnits.new('0', '3').to_s).to eq('three')
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'converts 04' do
|
22
|
+
expect(Wintr::TensUnits.new('0', '4').to_s).to eq('four')
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'converts 05' do
|
26
|
+
expect(Wintr::TensUnits.new('0', '5').to_s).to eq('five')
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'converts 06' do
|
30
|
+
expect(Wintr::TensUnits.new('0', '6').to_s).to eq('six')
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'converts 07' do
|
34
|
+
expect(Wintr::TensUnits.new('0', '7').to_s).to eq('seven')
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'converts 08' do
|
38
|
+
expect(Wintr::TensUnits.new('0', '8').to_s).to eq('eight')
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'converts 09' do
|
42
|
+
expect(Wintr::TensUnits.new('0', '9').to_s).to eq('nine')
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'converts 10' do
|
46
|
+
expect(Wintr::TensUnits.new('1', '0').to_s).to eq('ten')
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'converts 11' do
|
50
|
+
expect(Wintr::TensUnits.new('1', '1').to_s).to eq('eleven')
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'converts 12' do
|
54
|
+
expect(Wintr::TensUnits.new('1', '2').to_s).to eq('twelve')
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'converts 13' do
|
58
|
+
expect(Wintr::TensUnits.new('1', '3').to_s).to eq('thirteen')
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'converts 14' do
|
62
|
+
expect(Wintr::TensUnits.new('1', '4').to_s).to eq('fourteen')
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'converts 15' do
|
66
|
+
expect(Wintr::TensUnits.new('1', '5').to_s).to eq('fifteen')
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'converts 16' do
|
70
|
+
expect(Wintr::TensUnits.new('1', '6').to_s).to eq('sixteen')
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'converts 17' do
|
74
|
+
expect(Wintr::TensUnits.new('1', '7').to_s).to eq('seventeen')
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'converts 18' do
|
78
|
+
expect(Wintr::TensUnits.new('1', '8').to_s).to eq('eighteen')
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'converts 19' do
|
82
|
+
expect(Wintr::TensUnits.new('1', '9').to_s).to eq('nineteen')
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'converts 20' do
|
86
|
+
expect(Wintr::TensUnits.new('2', '0').to_s).to eq('twenty')
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'converts 21' do
|
90
|
+
expect(Wintr::TensUnits.new('2', '1').to_s).to eq('twenty one')
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'converts 77' do
|
94
|
+
expect(Wintr::TensUnits.new('7', '7').to_s).to eq('seventy seven')
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'converts 99' do
|
98
|
+
expect(Wintr::TensUnits.new('9', '9').to_s).to eq('ninety nine')
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -15,11 +15,11 @@ def single_digits
|
|
15
15
|
}
|
16
16
|
end
|
17
17
|
|
18
|
-
describe Wintr::
|
19
|
-
describe
|
18
|
+
RSpec.describe Wintr::Units do
|
19
|
+
describe '#to_s' do
|
20
20
|
single_digits.each do |digit_string, word|
|
21
21
|
it "converts #{digit_string} to #{word}" do
|
22
|
-
Wintr::
|
22
|
+
expect(Wintr::Units.new(digit_string).to_s).to eq(word)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Wintr::WeightedDigitArray do
|
4
|
+
describe '#to_s' do
|
5
|
+
it 'converts 21 thousand' do
|
6
|
+
expect(Wintr::WeightedDigitArray.new(%w[2 1], 1).to_s).to eq('twenty one thousand')
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'converts 123 thousand' do
|
10
|
+
expect(Wintr::WeightedDigitArray.new(%w[1 2 3], 1).to_s).to eq('one hundred and twenty three thousand')
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'converts 103 million' do
|
14
|
+
expect(Wintr::WeightedDigitArray.new(%w[1 0 3], 2).to_s).to eq('one hundred and three million')
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'converts 000 thousand to empty string' do
|
18
|
+
expect(Wintr::WeightedDigitArray.new(%w[0 0 0], 1).to_s).to eq('')
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'converts 000 million to empty string' do
|
22
|
+
expect(Wintr::WeightedDigitArray.new(%w[0 0 0], 2).to_s).to eq('')
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wintr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- R Headley
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '2
|
19
|
+
version: '3.2'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '2
|
26
|
+
version: '3.2'
|
27
27
|
description: Convert integers into their word equivalents
|
28
28
|
email:
|
29
29
|
- headleyra@yahoo.com
|
@@ -34,24 +34,21 @@ extra_rdoc_files:
|
|
34
34
|
files:
|
35
35
|
- README.md
|
36
36
|
- lib/wintr.rb
|
37
|
-
- lib/wintr/
|
37
|
+
- lib/wintr/constants.rb
|
38
|
+
- lib/wintr/digit_array.rb
|
39
|
+
- lib/wintr/hundreds_tens_units.rb
|
38
40
|
- lib/wintr/number.rb
|
39
|
-
- lib/wintr/
|
40
|
-
- lib/wintr/
|
41
|
-
- lib/wintr/three_digit_group.rb
|
42
|
-
- lib/wintr/two_digit_group.rb
|
41
|
+
- lib/wintr/tens_units.rb
|
42
|
+
- lib/wintr/units.rb
|
43
43
|
- lib/wintr/version.rb
|
44
|
-
- lib/wintr/
|
45
|
-
- lib/wintr/word_array.rb
|
44
|
+
- lib/wintr/weighted_digit_array.rb
|
46
45
|
- spec/spec_helper.rb
|
47
|
-
- spec/wintr/
|
46
|
+
- spec/wintr/digit_array_spec.rb
|
47
|
+
- spec/wintr/hundreds_tens_units_spec.rb
|
48
48
|
- spec/wintr/number_spec.rb
|
49
|
-
- spec/wintr/
|
50
|
-
- spec/wintr/
|
51
|
-
- spec/wintr/
|
52
|
-
- spec/wintr/two_digit_group_spec.rb
|
53
|
-
- spec/wintr/weighted_digit_group_spec.rb
|
54
|
-
- spec/wintr/word_array_spec.rb
|
49
|
+
- spec/wintr/tens_units_spec.rb
|
50
|
+
- spec/wintr/units_spec.rb
|
51
|
+
- spec/wintr/weighted_digit_array_spec.rb
|
55
52
|
homepage: http://github.com/headleyra/wintr
|
56
53
|
licenses:
|
57
54
|
- MIT
|
@@ -77,12 +74,10 @@ signing_key:
|
|
77
74
|
specification_version: 4
|
78
75
|
summary: A Ruby integer to word converter
|
79
76
|
test_files:
|
80
|
-
- spec/wintr/
|
77
|
+
- spec/wintr/digit_array_spec.rb
|
78
|
+
- spec/wintr/tens_units_spec.rb
|
81
79
|
- spec/wintr/number_spec.rb
|
82
|
-
- spec/wintr/
|
83
|
-
- spec/wintr/
|
84
|
-
- spec/wintr/
|
85
|
-
- spec/wintr/power_of_thousand_spec.rb
|
86
|
-
- spec/wintr/word_array_spec.rb
|
87
|
-
- spec/wintr/weighted_digit_group_spec.rb
|
80
|
+
- spec/wintr/hundreds_tens_units_spec.rb
|
81
|
+
- spec/wintr/weighted_digit_array_spec.rb
|
82
|
+
- spec/wintr/units_spec.rb
|
88
83
|
- spec/spec_helper.rb
|
data/lib/wintr/digit_group.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'wintr/one_digit_group'
|
2
|
-
require 'wintr/two_digit_group'
|
3
|
-
require 'wintr/three_digit_group'
|
4
|
-
|
5
|
-
module Wintr
|
6
|
-
class DigitGroup
|
7
|
-
def initialize(digits)
|
8
|
-
@digits = digits
|
9
|
-
end
|
10
|
-
|
11
|
-
def to_s
|
12
|
-
case @digits.size
|
13
|
-
when 1
|
14
|
-
OneDigitGroup.new(@digits[0]).to_s
|
15
|
-
when 2
|
16
|
-
TwoDigitGroup.new(@digits[0], @digits[1]).to_s
|
17
|
-
when 3
|
18
|
-
ThreeDigitGroup.new(@digits[0], @digits[1], @digits[2]).to_s
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
module Wintr
|
2
|
-
class OneDigitGroup
|
3
|
-
UNITS = {
|
4
|
-
'0' => '',
|
5
|
-
'1' => 'one',
|
6
|
-
'2' => 'two',
|
7
|
-
'3' => 'three',
|
8
|
-
'4' => 'four',
|
9
|
-
'5' => 'five',
|
10
|
-
'6' => 'six',
|
11
|
-
'7' => 'seven',
|
12
|
-
'8' => 'eight',
|
13
|
-
'9' => 'nine'
|
14
|
-
}
|
15
|
-
|
16
|
-
def initialize(units)
|
17
|
-
@units = units
|
18
|
-
end
|
19
|
-
|
20
|
-
def to_s
|
21
|
-
UNITS[@units]
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
module Wintr
|
2
|
-
class PowerOfThousand
|
3
|
-
POWER = {
|
4
|
-
1 => 'thousand',
|
5
|
-
2 => 'million',
|
6
|
-
3 => 'billion',
|
7
|
-
4 => 'trillion',
|
8
|
-
5 => 'quadrillion',
|
9
|
-
6 => 'quintillion',
|
10
|
-
7 => 'sextillion',
|
11
|
-
8 => 'septillion',
|
12
|
-
9 => 'octillion',
|
13
|
-
10 => 'nonillion',
|
14
|
-
11 => 'decillion',
|
15
|
-
12 => 'undecillion',
|
16
|
-
13 => 'duodecillion',
|
17
|
-
14 => 'tredecillion',
|
18
|
-
15 => 'quattuordecillion',
|
19
|
-
16 => 'quindecillion',
|
20
|
-
17 => 'sexdecillion',
|
21
|
-
18 => 'septendecillion',
|
22
|
-
19 => 'octodecillion',
|
23
|
-
20 => 'novemdecillion',
|
24
|
-
21 => 'vigintillion',
|
25
|
-
22 => 'unvigintillion',
|
26
|
-
23 => 'duovigintillion',
|
27
|
-
24 => 'trevigintillion',
|
28
|
-
25 => 'quattuorvigintillion',
|
29
|
-
26 => 'quinvigintillion',
|
30
|
-
27 => 'sexvigintillion',
|
31
|
-
28 => 'septenvigintillion',
|
32
|
-
29 => 'octovigintillion',
|
33
|
-
30 => 'novemvigintillion',
|
34
|
-
31 => 'trigintillion',
|
35
|
-
32 => 'untrigintillion',
|
36
|
-
33 => 'duotrigintillion'
|
37
|
-
}
|
38
|
-
|
39
|
-
def initialize(power)
|
40
|
-
@power = power
|
41
|
-
end
|
42
|
-
|
43
|
-
def to_s
|
44
|
-
POWER[@power] || ''
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module Wintr
|
2
|
-
class ThreeDigitGroup
|
3
|
-
def initialize(hundreds, tens, units)
|
4
|
-
@hundreds, @tens, @units = hundreds, tens, units
|
5
|
-
end
|
6
|
-
|
7
|
-
def to_s
|
8
|
-
word_array = []
|
9
|
-
if @hundreds == '0' && @tens == '0' && @units == '0'
|
10
|
-
''
|
11
|
-
else
|
12
|
-
word_array << OneDigitGroup.new(@hundreds).to_s
|
13
|
-
word_array << 'hundred' if @hundreds != '0'
|
14
|
-
word_array << 'and' unless @tens == '0' && @units == '0'
|
15
|
-
word_array << TwoDigitGroup.new(@tens, @units).to_s
|
16
|
-
WordArray.new(word_array).to_s
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
@@ -1,45 +0,0 @@
|
|
1
|
-
module Wintr
|
2
|
-
class TwoDigitGroup
|
3
|
-
TEN_TO_NINETEEN = {
|
4
|
-
'10' => 'ten',
|
5
|
-
'11' => 'eleven',
|
6
|
-
'12' => 'twelve',
|
7
|
-
'13' => 'thirteen',
|
8
|
-
'14' => 'fourteen',
|
9
|
-
'15' => 'fifteen',
|
10
|
-
'16' => 'sixteen',
|
11
|
-
'17' => 'seventeen',
|
12
|
-
'18' => 'eighteen',
|
13
|
-
'19' => 'nineteen'
|
14
|
-
}
|
15
|
-
TENS = {
|
16
|
-
'2' => 'twenty',
|
17
|
-
'3' => 'thirty',
|
18
|
-
'4' => 'forty',
|
19
|
-
'5' => 'fifty',
|
20
|
-
'6' => 'sixty',
|
21
|
-
'7' => 'seventy',
|
22
|
-
'8' => 'eighty',
|
23
|
-
'9' => 'ninety'
|
24
|
-
}
|
25
|
-
|
26
|
-
def initialize(tens, units)
|
27
|
-
@tens, @units = tens, units
|
28
|
-
end
|
29
|
-
|
30
|
-
def to_s
|
31
|
-
word_array = []
|
32
|
-
|
33
|
-
if @tens == '1'
|
34
|
-
TEN_TO_NINETEEN[@tens + @units]
|
35
|
-
elsif @tens == '0' && @units == '0'
|
36
|
-
''
|
37
|
-
else
|
38
|
-
word_array << TENS[@tens]
|
39
|
-
word_array << OneDigitGroup.new(@units).to_s
|
40
|
-
WordArray.new(word_array).to_s
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'wintr/digit_group'
|
2
|
-
require 'wintr/power_of_thousand'
|
3
|
-
require 'wintr/word_array'
|
4
|
-
|
5
|
-
module Wintr
|
6
|
-
class WeightedDigitGroup
|
7
|
-
def initialize(digit_group, power_of_thousand)
|
8
|
-
@digit_group, @power_of_thousand = digit_group, power_of_thousand
|
9
|
-
end
|
10
|
-
|
11
|
-
def to_s
|
12
|
-
base_digit_group_in_words = DigitGroup.new(@digit_group).to_s
|
13
|
-
power_of_thousand_in_words = PowerOfThousand.new(@power_of_thousand).to_s if base_digit_group_in_words != ''
|
14
|
-
WordArray.new([base_digit_group_in_words, power_of_thousand_in_words]).to_s
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
data/lib/wintr/word_array.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module Wintr
|
4
|
-
|
5
|
-
describe DigitGroup do
|
6
|
-
describe "#to_s" do
|
7
|
-
it "should convert 0 to empty string" do
|
8
|
-
DigitGroup.new(['0']).to_s.should == ''
|
9
|
-
end
|
10
|
-
it "should convert 9" do
|
11
|
-
DigitGroup.new(['9']).to_s.should == 'nine'
|
12
|
-
end
|
13
|
-
it "should convert 10" do
|
14
|
-
DigitGroup.new(%w[1 0]).to_s.should == 'ten'
|
15
|
-
end
|
16
|
-
it "should convert 19" do
|
17
|
-
DigitGroup.new(%w[1 9]).to_s.should == 'nineteen'
|
18
|
-
end
|
19
|
-
it "should convert 20" do
|
20
|
-
DigitGroup.new(%w[2 0]).to_s.should == 'twenty'
|
21
|
-
end
|
22
|
-
it "should convert 702" do
|
23
|
-
DigitGroup.new(%w[7 0 2]).to_s.should == 'seven hundred and two'
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module Wintr
|
4
|
-
|
5
|
-
describe PowerOfThousand do
|
6
|
-
describe "#to_s" do
|
7
|
-
it "should convert 0 to empty string" do
|
8
|
-
PowerOfThousand.new(0).to_s.should == ''
|
9
|
-
end
|
10
|
-
it "should convert 1 into it's power-of-a-thousand equivalent" do
|
11
|
-
PowerOfThousand.new(1).to_s.should == 'thousand'
|
12
|
-
end
|
13
|
-
it "should convert 2 into it's power-of-a-thousand equivalent" do
|
14
|
-
PowerOfThousand.new(2).to_s.should == 'million'
|
15
|
-
end
|
16
|
-
it "should convert rubbish input into empty string" do
|
17
|
-
PowerOfThousand.new('foo').to_s.should == ''
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module Wintr
|
4
|
-
describe ThreeDigitGroup do
|
5
|
-
describe "#to_s" do
|
6
|
-
it "should convert 000 to empty string" do
|
7
|
-
ThreeDigitGroup.new('0', '0', '0').to_s.should == ''
|
8
|
-
end
|
9
|
-
it "should convert 101" do
|
10
|
-
ThreeDigitGroup.new('1', '0', '1').to_s.should == 'one hundred and one'
|
11
|
-
end
|
12
|
-
it "should convert 900" do
|
13
|
-
ThreeDigitGroup.new('9', '0', '0').to_s.should == 'nine hundred'
|
14
|
-
end
|
15
|
-
it "should convert 070" do
|
16
|
-
ThreeDigitGroup.new('0', '7', '0').to_s.should == 'and seventy'
|
17
|
-
end
|
18
|
-
it "should convert 005" do
|
19
|
-
ThreeDigitGroup.new('0', '0', '5').to_s.should == 'and five'
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
@@ -1,60 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module Wintr
|
4
|
-
describe TwoDigitGroup do
|
5
|
-
describe "#to_s" do
|
6
|
-
it "should convert 00 to empty string" do
|
7
|
-
TwoDigitGroup.new('0', '0').to_s.should == ''
|
8
|
-
end
|
9
|
-
it "should convert 01 to one" do
|
10
|
-
TwoDigitGroup.new('0', '1').to_s.should == 'one'
|
11
|
-
end
|
12
|
-
it "should convert 09 to nine" do
|
13
|
-
TwoDigitGroup.new('0', '9').to_s.should == 'nine'
|
14
|
-
end
|
15
|
-
it "should convert 10" do
|
16
|
-
TwoDigitGroup.new('1', '0').to_s.should == 'ten'
|
17
|
-
end
|
18
|
-
it "should convert 11" do
|
19
|
-
TwoDigitGroup.new('1', '1').to_s.should == 'eleven'
|
20
|
-
end
|
21
|
-
it "should convert 12" do
|
22
|
-
TwoDigitGroup.new('1', '2').to_s.should == 'twelve'
|
23
|
-
end
|
24
|
-
it "should convert 13" do
|
25
|
-
TwoDigitGroup.new('1', '3').to_s.should == 'thirteen'
|
26
|
-
end
|
27
|
-
it "should convert 14" do
|
28
|
-
TwoDigitGroup.new('1', '4').to_s.should == 'fourteen'
|
29
|
-
end
|
30
|
-
it "should convert 15" do
|
31
|
-
TwoDigitGroup.new('1', '5').to_s.should == 'fifteen'
|
32
|
-
end
|
33
|
-
it "should convert 16" do
|
34
|
-
TwoDigitGroup.new('1', '6').to_s.should == 'sixteen'
|
35
|
-
end
|
36
|
-
it "should convert 17" do
|
37
|
-
TwoDigitGroup.new('1', '7').to_s.should == 'seventeen'
|
38
|
-
end
|
39
|
-
it "should convert 18" do
|
40
|
-
TwoDigitGroup.new('1', '8').to_s.should == 'eighteen'
|
41
|
-
end
|
42
|
-
it "should convert 19" do
|
43
|
-
TwoDigitGroup.new('1', '9').to_s.should == 'nineteen'
|
44
|
-
end
|
45
|
-
it "should convert 20" do
|
46
|
-
TwoDigitGroup.new('2', '0').to_s.should == 'twenty'
|
47
|
-
end
|
48
|
-
it "should convert 21" do
|
49
|
-
TwoDigitGroup.new('2', '1').to_s.should == 'twenty one'
|
50
|
-
end
|
51
|
-
it "should convert 77" do
|
52
|
-
TwoDigitGroup.new('7', '7').to_s.should == 'seventy seven'
|
53
|
-
end
|
54
|
-
it "should convert 99" do
|
55
|
-
TwoDigitGroup.new('9', '9').to_s.should == 'ninety nine'
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module Wintr
|
4
|
-
describe WeightedDigitGroup do
|
5
|
-
describe "#to_s" do
|
6
|
-
it "should should convert 23 thousand" do
|
7
|
-
WeightedDigitGroup.new(%w[2 1], 1).to_s.should == 'twenty one thousand'
|
8
|
-
end
|
9
|
-
it "should should convert 123 thousand" do
|
10
|
-
WeightedDigitGroup.new(%w[1 2 3], 1).to_s.should == 'one hundred and twenty three thousand'
|
11
|
-
end
|
12
|
-
it "should should convert 103 million" do
|
13
|
-
WeightedDigitGroup.new(%w[1 0 3], 2).to_s.should == 'one hundred and three million'
|
14
|
-
end
|
15
|
-
it "should should convert 000 thousand to empty string" do
|
16
|
-
WeightedDigitGroup.new(%w[0 0 0], 1).to_s.should == ''
|
17
|
-
end
|
18
|
-
it "should should convert 000 million to empty string" do
|
19
|
-
WeightedDigitGroup.new(%w[0 0 0], 2).to_s.should == ''
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|