numbers_in_words 0.2.0 → 0.5.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 (49) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +14 -0
  3. data/.gitignore +2 -0
  4. data/.rspec +2 -0
  5. data/.rubocop.yml +58 -0
  6. data/.travis.yml +15 -0
  7. data/Gemfile +4 -0
  8. data/Gemfile.lock +50 -26
  9. data/README.md +20 -70
  10. data/Rakefile +3 -1
  11. data/bin/spec +2 -0
  12. data/lib/numbers_in_words.rb +49 -15
  13. data/lib/numbers_in_words/duck_punch.rb +12 -8
  14. data/lib/numbers_in_words/exceptional_numbers.rb +115 -0
  15. data/lib/numbers_in_words/fraction.rb +136 -0
  16. data/lib/numbers_in_words/number_group.rb +34 -25
  17. data/lib/numbers_in_words/parsing/fraction_parsing.rb +34 -0
  18. data/lib/numbers_in_words/parsing/number_parser.rb +98 -0
  19. data/lib/numbers_in_words/parsing/pair_parsing.rb +64 -0
  20. data/lib/numbers_in_words/parsing/parse_fractions.rb +45 -0
  21. data/lib/numbers_in_words/parsing/parse_individual_number.rb +68 -0
  22. data/lib/numbers_in_words/parsing/parse_status.rb +17 -0
  23. data/lib/numbers_in_words/parsing/special.rb +67 -0
  24. data/lib/numbers_in_words/parsing/to_number.rb +77 -0
  25. data/lib/numbers_in_words/powers_of_ten.rb +49 -0
  26. data/lib/numbers_in_words/to_word.rb +78 -13
  27. data/lib/numbers_in_words/version.rb +3 -1
  28. data/lib/numbers_in_words/writer.rb +69 -0
  29. data/numbers_in_words.gemspec +15 -14
  30. data/spec/exceptional_numbers_spec.rb +26 -0
  31. data/spec/fraction_spec.rb +152 -0
  32. data/spec/fractions_spec.rb +31 -0
  33. data/spec/non_monkey_patch_spec.rb +51 -0
  34. data/spec/number_group_spec.rb +12 -12
  35. data/spec/number_parser_spec.rb +31 -0
  36. data/spec/numbers_in_words_spec.rb +74 -54
  37. data/spec/numerical_strings_spec.rb +35 -0
  38. data/spec/spec_helper.rb +24 -0
  39. data/spec/to_word_spec.rb +18 -0
  40. data/spec/words_in_numbers_spec.rb +135 -117
  41. data/spec/writer_spec.rb +26 -0
  42. data/spec/years_spec.rb +27 -0
  43. metadata +61 -59
  44. data/lib/numbers_in_words/english/constants.rb +0 -93
  45. data/lib/numbers_in_words/english/language_writer_english.rb +0 -107
  46. data/lib/numbers_in_words/language_writer.rb +0 -31
  47. data/lib/numbers_in_words/number_parser.rb +0 -81
  48. data/lib/numbers_in_words/to_number.rb +0 -82
  49. data/spec/language_writer_spec.rb +0 -23
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require './spec/spec_helper'
4
+
5
+ describe NumbersInWords do
6
+ it 'recognizes numerical strings' do
7
+ arr = %w[8 56 100 5789 3435356]
8
+ arr.each { |s| expect(s.in_numbers).to eql(s.to_f) }
9
+ end
10
+
11
+ MIXED = {
12
+ '19 hundred' => 1_900,
13
+ '20 thousand' => 20_000,
14
+ '100 million' => 100_000_000,
15
+ '7 billion' => 7_000_000_000,
16
+ '42 trillion' => 42_000_000_000_000,
17
+ '20 thousand and 4' => 20_004
18
+ }.freeze
19
+
20
+ MIXED.each do |k, v|
21
+ it do
22
+ expect(k.in_numbers).to eql(v)
23
+ end
24
+ end
25
+
26
+ PENDING_MIXED = {
27
+ '19 zero five' => 1_905
28
+ }.freeze
29
+
30
+ PENDING_MIXED.each do |k, v|
31
+ pending do
32
+ expect(k.in_numbers).to eql(v)
33
+ end
34
+ end
35
+ end
@@ -1,2 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ if ENV['CC_TEST_REPORTER_ID']
4
+ require 'simplecov'
5
+ SimpleCov.start
6
+ end
7
+
8
+ unless Kernel.method_defined?(:silence_warnings)
9
+ module Kernel
10
+ def silence_warnings
11
+ with_warnings(nil) { yield }
12
+ end
13
+
14
+ def with_warnings(flag)
15
+ old_verbose = $VERBOSE
16
+ $VERBOSE = flag
17
+ yield
18
+ ensure
19
+ $VERBOSE = old_verbose
20
+ end
21
+ end
22
+ end
23
+
1
24
  require 'numbers_in_words'
2
25
  require 'numbers_in_words/duck_punch'
26
+ require 'byebug'
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe NumbersInWords::ToWord do
4
+ let(:number) { 2_111 }
5
+ let(:writer) { described_class.new(number) }
6
+
7
+ describe '#in_words' do
8
+ let(:number) { 99 }
9
+
10
+ subject do
11
+ writer.in_words
12
+ end
13
+
14
+ it do
15
+ expect(subject).to eq 'ninety-nine'
16
+ end
17
+ end
18
+ end
@@ -1,134 +1,152 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require './spec/spec_helper'
2
4
 
3
- describe WordsInNumbers do
4
- it "should do the digits 0-10" do
5
- "zero" .in_numbers.should == 0
6
- "one" .in_numbers.should == 1
7
- "two" .in_numbers.should == 2
8
- "three" .in_numbers.should == 3
9
- "four" .in_numbers.should == 4
10
- "five" .in_numbers.should == 5
11
- "six" .in_numbers.should == 6
12
- "seven" .in_numbers.should == 7
13
- "eight" .in_numbers.should == 8
14
- "nine" .in_numbers.should == 9
5
+ describe NumbersInWords::StringExtension do # rubocop: disable Metrics/BlockLength
6
+ it 'should do the digits 0-10' do
7
+ expect('zero'.in_numbers).to eq(0)
8
+ expect('one'.in_numbers).to eq(1)
9
+ expect('two'.in_numbers).to eq(2)
10
+ expect('three'.in_numbers).to eq(3)
11
+ expect('four'.in_numbers).to eq(4)
12
+ expect('five'.in_numbers).to eq(5)
13
+ expect('six'.in_numbers).to eq(6)
14
+ expect('seven'.in_numbers).to eq(7)
15
+ expect('eight'.in_numbers).to eq(8)
16
+ expect('nine'.in_numbers).to eq(9)
17
+ end
18
+
19
+ it 'should handle numbers for which there is one word' do
20
+ expect('ten'.in_numbers).to eq(10)
21
+ expect('eleven'.in_numbers).to eq(11)
22
+ expect('twelve'.in_numbers).to eq(12)
23
+ expect('thirteen'.in_numbers).to eq(13)
24
+ expect('fourteen'.in_numbers).to eq(14)
25
+ expect('fifteen'.in_numbers).to eq(15)
26
+ expect('sixteen'.in_numbers).to eq(16)
27
+ expect('seventeen'.in_numbers).to eq(17)
28
+ expect('eighteen'.in_numbers).to eq(18)
29
+ expect('nineteen'.in_numbers).to eq(19)
30
+ expect('twenty'.in_numbers).to eq(20)
31
+ end
32
+
33
+ it 'should handle two word numbers up to 100' do
34
+ expect('twenty-one'.in_numbers).to eq(21)
35
+ expect('twenty-two'.in_numbers).to eq(22)
36
+ expect('twenty-three'.in_numbers).to eq(23)
37
+ expect('twenty-four'.in_numbers).to eq(24)
38
+ expect('twenty-five'.in_numbers).to eq(25)
39
+ expect('twenty-six'.in_numbers).to eq(26)
40
+ expect('twenty-seven'.in_numbers).to eq(27)
41
+ expect('twenty-eight'.in_numbers).to eq(28)
42
+ expect('seventy-six'.in_numbers).to eq(76)
43
+ expect('ninety-nine'.in_numbers).to eq(99)
15
44
  end
16
45
 
17
- it "should handle numbers for which there is one word" do
18
- "ten" .in_numbers.should == 10
19
- "eleven" .in_numbers.should == 11
20
- "twelve" .in_numbers.should == 12
21
- "thirteen" .in_numbers.should == 13
22
- "fourteen" .in_numbers.should == 14
23
- "fifteen" .in_numbers.should == 15
24
- "sixteen" .in_numbers.should == 16
25
- "seventeen" .in_numbers.should == 17
26
- "eighteen" .in_numbers.should == 18
27
- "nineteen" .in_numbers.should == 19
28
- "twenty" .in_numbers.should == 20
46
+ it 'should handle hundreds' do
47
+ expect('one hundred'.in_numbers).to eq(100)
48
+ expect('two hundred'.in_numbers).to eq(200)
49
+ expect('three hundred'.in_numbers).to eq(300)
50
+ expect('nine hundred'.in_numbers).to eq(900)
51
+ expect('one hundred and seventy six'.in_numbers).to eq(176)
52
+ expect('one hundred and seventy nine'.in_numbers).to eq(179)
53
+ expect('nine hundred and ninety nine'.in_numbers).to eq(999)
29
54
  end
30
55
 
31
- it "should handle two word numbers up to 100" do
32
- "twenty one" .in_numbers.should == 21
33
- "twenty two" .in_numbers.should == 22
34
- "twenty three" .in_numbers.should == 23
35
- "twenty four" .in_numbers.should == 24
36
- "twenty five" .in_numbers.should == 25
37
- "twenty six" .in_numbers.should == 26
38
- "twenty seven" .in_numbers.should == 27
39
- "twenty eight" .in_numbers.should == 28
40
- "seventy six" .in_numbers.should == 76
41
- "ninety nine" .in_numbers.should == 99
56
+ it 'should handle unusual hundreds' do
57
+ expect('eleven hundred'.in_numbers).to eq(1100)
58
+ expect('twelve hundred'.in_numbers).to eq(1200)
59
+ expect('thirteen hundred'.in_numbers).to eq(1300)
60
+ expect('fifteen hundred'.in_numbers).to eq(1500)
61
+ expect('nineteen hundred'.in_numbers).to eq(1900)
62
+ end
63
+ it 'should handle thousands' do
64
+ expect('two thousand and one'.in_numbers).to eq(2001)
65
+ expect('one thousand'.in_numbers).to eq(1000)
66
+ expect('two thousand'.in_numbers).to eq(2000)
67
+ expect('three thousand'.in_numbers).to eq(3000)
68
+ expect('nine thousand'.in_numbers).to eq(9000)
69
+ expect('nine thousand two hundred'.in_numbers).to eq(9200)
70
+ expect('nine thousand two hundred and seven'.in_numbers).to eq(9207)
71
+ expect('nine thousand two hundred and ninety seven'.in_numbers).to eq(9297)
42
72
  end
43
73
 
44
- it "should handle hundreds" do
45
- "one hundred" .in_numbers.should == 100
46
- "two hundred" .in_numbers.should == 200
47
- "three hundred" .in_numbers.should == 300
48
- "nine hundred" .in_numbers.should == 900
49
- "one hundred and seventy six" .in_numbers.should == 176
50
- "one hundred and seventy nine" .in_numbers.should == 179
51
- "nine hundred and ninety nine" .in_numbers.should == 999
74
+ it 'handles numbers that begin with a instead of one', :aggregate_failures do
75
+ expect('a thousand six hundred'.in_numbers).to eq(1600)
76
+ expect('a thousand six hundred and fifty-five'.in_numbers).to eq(1655)
52
77
  end
53
78
 
54
- it "should handle unusual hundreds" do
55
- "eleven hundred" .in_numbers.should == 1100
56
- "twelve hundred" .in_numbers.should == 1200
57
- "thirteen hundred" .in_numbers.should == 1300
58
- "fifteen hundred" .in_numbers.should == 1500
59
- "nineteen hundred" .in_numbers.should == 1900
79
+ it 'should handle larger numbers' do
80
+ expect('one million'.in_numbers).to eq(1_000_000)
81
+ expect('two googol five billion and seventy six'.in_numbers).to eq(2 * 10**100 + 5 * 10**9 + 76)
82
+ expect('thirty seven million'.in_numbers).to eq(37 * 10**6)
83
+ expect('twenty six googol'.in_numbers).to eq(26 * 10**100)
84
+ end
60
85
 
86
+ it 'should handle numbers in hundreds of thousands etc' do
87
+ expect('nine hundred thousand'.in_numbers).to eq(900_000)
88
+ expect('three hundred and fifty seven thousand'.in_numbers).to eq(357_000)
89
+ expect('five million three hundred and fifty seven thousand'.in_numbers).to eq(5_357_000)
90
+ expect('nine hundred and ninety nine trillion'.in_numbers).to eq(999 * 10**12)
91
+ end
92
+ it 'should handle negative numbers' do
93
+ expect('minus one'.in_numbers).to eq(-1)
94
+ expect('minus two googol'.in_numbers).to eq(-2 * 10**100)
95
+ expect('minus nine hundred and ninety nine trillion'.in_numbers).to eq(-999 * 10**12)
61
96
  end
62
- it "should handle thousands" do
63
- "two thousand and one" .in_numbers .should == 2001
64
- "one thousand" .in_numbers .should == 1000
65
- "two thousand" .in_numbers .should == 2000
66
- "three thousand" .in_numbers .should == 3000
67
- "nine thousand" .in_numbers .should == 9000
68
- "nine thousand two hundred" .in_numbers .should == 9200
69
- "nine thousand two hundred and seven" .in_numbers .should == 9207
70
- "nine thousand two hundred and ninety seven" .in_numbers .should == 9297
71
- end
72
-
73
- it "should handle larger numbers" do
74
- "one million" .in_numbers .should == 1000000
75
- "two googol five billion and seventy six" .in_numbers .should == (2*10**100 + 5*10**9 + 76)
76
- "thirty seven million" .in_numbers .should == 37 * 10**6
77
- "twenty six googol" .in_numbers .should == 26 * 10**100
78
- end
79
-
80
- it "should handle numbers in hundreds of thousands etc" do
81
- "nine hundred thousand" .in_numbers .should == 900000
82
- "three hundred and fifty seven thousand" .in_numbers .should == 357000
83
- "five million three hundred and fifty seven thousand" .in_numbers .should == 5357000
84
- "nine hundred and ninety nine trillion" .in_numbers .should == 999 * 10**12
85
- end
86
- it "should handle negative numbers" do
87
- "minus one" .in_numbers .should == -1
88
- "minus two googol" .in_numbers .should == -2 * 10**100
89
- "minus nine hundred and ninety nine trillion" .in_numbers .should == -999 * 10**12
90
- end
91
-
92
- it "should ignore punctuation and capitalisation" do
93
- "Minus one" .in_numbers .should == -1
94
- "FIVE Million, three hundred and fifty-seVen Thousand" .in_numbers .should == 5357000
95
- "FIVE,,./';';';[] Million, three hundred and fifty-seVen Thousand" .in_numbers .should == 5357000
96
-
97
- end
98
-
99
- it "should handle decimal points" do
100
- "one point one" .in_numbers .should == 1.1
101
-
102
- "zero point seven six five three four" .in_numbers .should == 0.76534
103
- "one trillion point six" .in_numbers .should == 10**12 + 0.6
104
-
105
- long_number = <<-NUMBER
106
- nine duotrigintillion seven hundred and seventy seven untrigintillion
107
- fifty nine trigintillion one hundred and sixty novemvigintillion
108
- eight hundred and six octovigintillion seven hundred and thirty six
109
- septenvigintillion four hundred and seventy one sexvigintillion
110
- nine hundred and seventy quinvigintillion six hundred and thirty two
111
- quattuorvigintillion eight hundred and twenty seven trevigintillion
112
- eight hundred and thirty six duovigintillion nine hundred and fifty
113
- two unvigintillion seven hundred and ten vigintillion eight hundred and one
114
- novemdecillion nine hundred and forty eight octodecillion seven hundred
115
- and five septendecillion six hundred and eighty three sexdecillion
116
- one hundred and six quindecillion seven hundred and seven quattuordecillion
117
- seven hundred and fifty seven tredecillion four hundred and twenty six
118
- duodecillion seven hundred and ninety five undecillion seven hundred
119
- and forty six decillion eight hundred and thirteen nonillion one hundred
120
- and twenty seven octillion four hundred and sixty five septillion two
121
- hundred and thirty seven sextillion one hundred and thirty nine
122
- quintillion one hundred and fifty three quadrillion forty six
123
- trillion seven hundred and fifty two billion eight hundred and three
124
- million ninety three thousand seven hundred and ninety one point
125
- eight nine five six four three two one eight nine five six seven eight
97
+
98
+ it 'should ignore punctuation and capitalisation' do
99
+ expect('Minus one'.in_numbers).to eq(-1)
100
+ expect('FIVE Million, three hundred and fifty-seVen Thousand'.in_numbers).to eq(5_357_000)
101
+ expect("FIVE,,./';';';[] Million, three hundred and fifty-seVen Thousand".in_numbers).to eq(5_357_000)
102
+ end
103
+
104
+ it 'should handle decimal points' do # rubocop: disable Metrics/BlockLength
105
+ expect('one point one'.in_numbers).to eq(1.1)
106
+
107
+ expect('zero point seven six five three four'.in_numbers).to eq(0.76534)
108
+ expect('one trillion point six'.in_numbers).to eq(10**12 + 0.6)
109
+
110
+ long_number = <<~NUMBER
111
+ nine duotrigintillion seven hundred and seventy seven untrigintillion
112
+ fifty nine trigintillion one hundred and sixty novemvigintillion
113
+ eight hundred and six octovigintillion seven hundred and thirty six
114
+ septenvigintillion four hundred and seventy one sexvigintillion
115
+ nine hundred and seventy quinvigintillion six hundred and thirty two
116
+ quattuorvigintillion eight hundred and twenty seven trevigintillion
117
+ eight hundred and thirty six duovigintillion nine hundred and fifty
118
+ two unvigintillion seven hundred and ten vigintillion eight hundred and one
119
+ novemdecillion nine hundred and forty eight octodecillion seven hundred
120
+ and five septendecillion six hundred and eighty three sexdecillion
121
+ one hundred and six quindecillion seven hundred and seven quattuordecillion
122
+ seven hundred and fifty seven tredecillion four hundred and twenty six
123
+ duodecillion seven hundred and ninety five undecillion seven hundred
124
+ and forty six decillion eight hundred and thirteen nonillion one hundred
125
+ and twenty seven octillion four hundred and sixty five septillion two
126
+ hundred and thirty seven sextillion one hundred and thirty nine
127
+ quintillion one hundred and fifty three quadrillion forty six
128
+ trillion seven hundred and fifty two billion eight hundred and three
129
+ million ninety three thousand seven hundred and ninety one point
130
+ eight nine five six four three two one eight nine five six seven eight
126
131
  NUMBER
127
- long_number.in_numbers.should ==
128
- 9777059160806736471970632827836952710801948705683106707757426795746813127465237139153046752803093791.89564321895678
129
132
 
130
- "seventy five point eight four three two seven six nine four five one eight".
131
- in_numbers.should == 75.84327694518
133
+ # rubocop: disable Metrics/LineLength
134
+ expect(long_number.in_numbers).to eq(
135
+ 9_777_059_160_806_736_471_970_632_827_836_952_710_801_948_705_683_106_707_757_426_795_746_813_127_465_237_139_153_046_752_803_093_791.89564321895678
136
+ )
137
+ # rubocop: enable Metrics/LineLength
138
+
139
+ expect('seventy five point eight four three two seven six nine four five one eight'
140
+ .in_numbers).to eq(75.84327694518)
132
141
  end
133
142
 
143
+ it 'should handle years notation' do
144
+ expect('fifteen sixteen'.in_numbers).to eq(1516)
145
+ expect('eighty five sixteen'.in_numbers).to eq(8516)
146
+ expect('nineteen ninety six'.in_numbers).to eq(1996)
147
+ expect('forty nine ninety eight forty seven seventy nine'.in_numbers).to eq(49_984_779)
148
+ expect('fifteen sixteen'.in_numbers).to eq(1516)
149
+ expect('fifteen sixteen seven'.in_numbers).to eq(15_167)
150
+ expect('fifteen sixteen seventeen'.in_numbers).to eq(151_617)
151
+ end
134
152
  end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe NumbersInWords::Writer do
4
+ let(:number) { 2_111 }
5
+ let(:writer) { described_class.new(number) }
6
+
7
+ it 'should display numbers grouped' do
8
+ count = 0
9
+
10
+ writer.group_words(3) do |power, name, digits|
11
+ case count
12
+ when 0
13
+ expect(power).to eq(3)
14
+ expect(name).to eq('thousand')
15
+ expect(digits).to eq(2)
16
+ when 1
17
+ expect(power).to eq(0)
18
+ expect(name).to eq('one')
19
+ expect(digits).to eq(111)
20
+ end
21
+ count += 1
22
+ end
23
+
24
+ expect(count).to eq 2
25
+ end
26
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require './spec/spec_helper'
4
+
5
+ describe NumbersInWords::NumericExtension do
6
+ YEARS = {
7
+ 'thirteen hundred' => 13_00,
8
+ 'twenty-two hundred' => 22_00,
9
+ 'twenty-two hundred and five' => 22_05,
10
+ 'fifteen sixteen seventeen' => 151_617,
11
+ 'forty-nine ninety-eight forty-seven seventy-nine' => 49_984_779,
12
+ 'one fifty' => 150,
13
+ 'two fifty' => 250,
14
+ 'three fifty' => 350,
15
+ 'one point fifty-six fifty-seven' => 1.5657,
16
+ 'one three forty-seven' => 1347,
17
+ 'one three five-point forty-seven' => 135.47,
18
+ 'one ten sixty-three' => 11_063,
19
+ 'one nineteen ten oh five' => 1_191_005
20
+ }.freeze
21
+
22
+ YEARS.each do |k, v|
23
+ it do
24
+ expect(k.in_numbers).to eql(v)
25
+ end
26
+ end
27
+ end
metadata CHANGED
@@ -1,127 +1,129 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: numbers_in_words
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.2.0
4
+ version: 0.5.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Mark Burns
8
+ - Dimid Duchovny
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-17 00:00:00.000000000 Z
12
+ date: 2020-08-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- type: :runtime
16
- version_requirements: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- name: activesupport
23
- prerelease: false
15
+ name: rspec
24
16
  requirement: !ruby/object:Gem::Requirement
25
- none: false
26
17
  requirements:
27
- - - ! '>='
18
+ - - "~>"
28
19
  - !ruby/object:Gem::Version
29
- version: '0'
30
- - !ruby/object:Gem::Dependency
20
+ version: 3.4.0
31
21
  type: :development
22
+ prerelease: false
32
23
  version_requirements: !ruby/object:Gem::Requirement
33
- none: false
34
24
  requirements:
35
- - - ! '>='
25
+ - - "~>"
36
26
  - !ruby/object:Gem::Version
37
- version: '0'
38
- name: rspec
39
- prerelease: false
27
+ version: 3.4.0
28
+ - !ruby/object:Gem::Dependency
29
+ name: rubocop
40
30
  requirement: !ruby/object:Gem::Requirement
41
- none: false
42
31
  requirements:
43
- - - ! '>='
32
+ - - ">="
44
33
  - !ruby/object:Gem::Version
45
34
  version: '0'
46
- - !ruby/object:Gem::Dependency
47
35
  type: :development
48
- version_requirements: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- name: debugger
55
36
  prerelease: false
56
- requirement: !ruby/object:Gem::Requirement
57
- none: false
37
+ version_requirements: !ruby/object:Gem::Requirement
58
38
  requirements:
59
- - - ! '>='
39
+ - - ">="
60
40
  - !ruby/object:Gem::Version
61
41
  version: '0'
62
- description: ! '#in_words method for integers and #in_numbers for strings'
42
+ description: convert written numbers into Integers and vice-versa
63
43
  email:
64
44
  - markthedeveloper@gmail.com
65
- executables: []
45
+ - dimidd@gmail.com
46
+ executables:
47
+ - spec
66
48
  extensions: []
67
49
  extra_rdoc_files: []
68
50
  files:
69
- - .gitignore
51
+ - ".codeclimate.yml"
52
+ - ".gitignore"
53
+ - ".rspec"
54
+ - ".rubocop.yml"
55
+ - ".travis.yml"
70
56
  - Gemfile
71
57
  - Gemfile.lock
72
58
  - LICENSE.txt
73
59
  - README.md
74
60
  - Rakefile
61
+ - bin/spec
75
62
  - lib/numbers_in_words.rb
76
63
  - lib/numbers_in_words/duck_punch.rb
77
- - lib/numbers_in_words/english/constants.rb
78
- - lib/numbers_in_words/english/language_writer_english.rb
79
- - lib/numbers_in_words/language_writer.rb
64
+ - lib/numbers_in_words/exceptional_numbers.rb
65
+ - lib/numbers_in_words/fraction.rb
80
66
  - lib/numbers_in_words/number_group.rb
81
- - lib/numbers_in_words/number_parser.rb
82
- - lib/numbers_in_words/to_number.rb
67
+ - lib/numbers_in_words/parsing/fraction_parsing.rb
68
+ - lib/numbers_in_words/parsing/number_parser.rb
69
+ - lib/numbers_in_words/parsing/pair_parsing.rb
70
+ - lib/numbers_in_words/parsing/parse_fractions.rb
71
+ - lib/numbers_in_words/parsing/parse_individual_number.rb
72
+ - lib/numbers_in_words/parsing/parse_status.rb
73
+ - lib/numbers_in_words/parsing/special.rb
74
+ - lib/numbers_in_words/parsing/to_number.rb
75
+ - lib/numbers_in_words/powers_of_ten.rb
83
76
  - lib/numbers_in_words/to_word.rb
84
77
  - lib/numbers_in_words/version.rb
78
+ - lib/numbers_in_words/writer.rb
85
79
  - numbers_in_words.gemspec
86
- - spec/language_writer_spec.rb
80
+ - spec/exceptional_numbers_spec.rb
81
+ - spec/fraction_spec.rb
82
+ - spec/fractions_spec.rb
83
+ - spec/non_monkey_patch_spec.rb
87
84
  - spec/number_group_spec.rb
85
+ - spec/number_parser_spec.rb
88
86
  - spec/numbers_in_words_spec.rb
87
+ - spec/numerical_strings_spec.rb
89
88
  - spec/spec_helper.rb
89
+ - spec/to_word_spec.rb
90
90
  - spec/words_in_numbers_spec.rb
91
+ - spec/writer_spec.rb
92
+ - spec/years_spec.rb
91
93
  homepage: http://github.com/markburns/numbers_in_words
92
94
  licenses: []
95
+ metadata: {}
93
96
  post_install_message:
94
97
  rdoc_options: []
95
98
  require_paths:
96
99
  - lib
97
100
  required_ruby_version: !ruby/object:Gem::Requirement
98
- none: false
99
101
  requirements:
100
- - - ! '>='
102
+ - - ">="
101
103
  - !ruby/object:Gem::Version
102
- segments:
103
- - 0
104
- hash: -1513551754306869579
105
104
  version: '0'
106
105
  required_rubygems_version: !ruby/object:Gem::Requirement
107
- none: false
108
106
  requirements:
109
- - - ! '>='
107
+ - - ">="
110
108
  - !ruby/object:Gem::Version
111
- segments:
112
- - 0
113
- hash: -1513551754306869579
114
109
  version: '0'
115
110
  requirements: []
116
- rubyforge_project:
117
- rubygems_version: 1.8.23
111
+ rubygems_version: 3.0.3
118
112
  signing_key:
119
- specification_version: 3
120
- summary: ! 'Example: 123.in_words # => "one hundred and twenty three", "seventy-five
121
- point eight".in_numbers # = > 75.8'
113
+ specification_version: 4
114
+ summary: 'Example: NumbersInWords.in_words(123) # => "one hundred and twenty three",
115
+ NumbersInWords.in_numbers("seventy-five point eight") # = > 75.8'
122
116
  test_files:
123
- - spec/language_writer_spec.rb
117
+ - spec/exceptional_numbers_spec.rb
118
+ - spec/fraction_spec.rb
119
+ - spec/fractions_spec.rb
120
+ - spec/non_monkey_patch_spec.rb
124
121
  - spec/number_group_spec.rb
122
+ - spec/number_parser_spec.rb
125
123
  - spec/numbers_in_words_spec.rb
124
+ - spec/numerical_strings_spec.rb
126
125
  - spec/spec_helper.rb
126
+ - spec/to_word_spec.rb
127
127
  - spec/words_in_numbers_spec.rb
128
+ - spec/writer_spec.rb
129
+ - spec/years_spec.rb