number_to 0.7.0 → 0.7.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c0a68f0393aaa50be1a3f8252373cae857d42068
4
- data.tar.gz: 1966aa6f80a2de113df09b88b3361b21ce90366a
3
+ metadata.gz: 391e3244b38ab6d4414f46def1338935e2d7bc3b
4
+ data.tar.gz: 78f884c179f44e5025319f8f1cd3cc0cc870d713
5
5
  SHA512:
6
- metadata.gz: 257dd29a7ab46c33499bd7577f4580266c6d40fa2cad09ea75cf4bffe85e3ac6feb23a182899f8ae41384f7a2bc5ea73d6020ccb98fd5d623ee92858ad4ad0e4
7
- data.tar.gz: ef633b1dbf356e0164cd5e63b55f41e59bc1731e621c32a9b220824cd1bb9a4e8de2703fe5f0248ca680c9fbe114c6110743c6f532db2ccda8768e64284b035d
6
+ metadata.gz: 39ebd8705b73a33f7e0e54895a05e9b00a291683245f049fa2db17b898c00e0ab295cc05f9b7fdcaadd591701ac3d48f18d8f8c8bae9c820efba156b57eb1e89
7
+ data.tar.gz: 935a07d7185fb16eb97c6b878237492b10e11ceeb677fdf304e99e9ad42f455e3aefd8a4433e308b173de813d0ea91da7642a1cf55c8b05374481fc754535251
@@ -0,0 +1,71 @@
1
+ :words:
2
+ '0': zero
3
+ '1': one
4
+ '2': two
5
+ '3': three
6
+ '4': four
7
+ '5': five
8
+ '6': six
9
+ '7': seven
10
+ '8': eight
11
+ '9': nine
12
+ '10': ten
13
+ '11': eleven
14
+ '12': twelve
15
+ '13': thirteen
16
+ '14': fourteen
17
+ '15': fifteen
18
+ '16': sixteen
19
+ '17': seventeen
20
+ '18': eighteen
21
+ '19': nineteen
22
+ '20': twenty
23
+ '30': thirty
24
+ '40': forty
25
+ '50': fifty
26
+ '60': sixty
27
+ '70': seventy
28
+ '80': eighty
29
+ '90': ninety
30
+ :large_nums:
31
+ 1: thousand
32
+ 2: million
33
+ 3: billion
34
+ 4: trillion
35
+ :ordinals:
36
+ one: first
37
+ two: second
38
+ three: third
39
+ four: fourth
40
+ five: fifth
41
+ six: sixth
42
+ seven: seventh
43
+ eight: eighth
44
+ nine: ninth
45
+ One: First
46
+ Two: Second
47
+ Three: Third
48
+ Four: Fourth
49
+ Five: Fifth
50
+ Six: Sixth
51
+ Seven: Seventh
52
+ Eight: Eighth
53
+ Nine: Ninth
54
+ ten: tenth
55
+ twenty: twentieth
56
+ thirty: thirtieth
57
+ forty: fortieth
58
+ fifty: fiftieth
59
+ sixty: sixtieth
60
+ seventy: seventieth
61
+ eighty: eightieth
62
+ ninety: ninetieth
63
+ Ten: Tenth
64
+ Twenty: Twentieth
65
+ Thirty: Thirtieth
66
+ Forty: Fortieth
67
+ Fifty: Fiftieth
68
+ Sixty: Sixtieth
69
+ Seventy: Seventieth
70
+ Eighty: Eightieth
71
+ Ninety: Ninetieth
@@ -0,0 +1,39 @@
1
+ module CharacterSet
2
+ class CharacterSetConverter
3
+ attr_reader :characters, :options, :size
4
+ def initialize(characters, options = {})
5
+ @characters = characters
6
+ options[:repeat] = true unless options.include?(:repeat)
7
+ @options = options
8
+ @size = characters.size
9
+ end
10
+
11
+ def to_characters(num)
12
+ num = num.to_i
13
+ repetition = num > size ? calc_repetition(num) : 1
14
+ real_num = num > size ? num % size : num
15
+ real_num = size if real_num == 0
16
+ char = characters[real_num - 1]
17
+ options[:repeat] ? char * repetition : char
18
+ end
19
+
20
+ def calc_repetition(num)
21
+ num % size == 0 ? num / size : (num / size) + 1
22
+ end
23
+ end
24
+
25
+ ALPH = ("a" .. "z").to_a
26
+ ALPHABETTER = CharacterSetConverter.new(ALPH, {repeat: true})
27
+
28
+ def to_character_set(num, characters, options = {})
29
+ CharacterSetConverter.new(characters, options).to_characters(num)
30
+ end
31
+
32
+ def to_lower_alpha(num)
33
+ ALPHABETTER.to_characters(num)
34
+ end
35
+
36
+ def to_upper_alpha(num)
37
+ to_lower_alpha(num).upcase
38
+ end
39
+ end
@@ -1,68 +1,16 @@
1
1
  module NumberWords
2
-
3
- WORDS = {
4
- '0' => 'zero',
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
- '10' => 'ten',
15
- '11' => 'eleven',
16
- '12' => 'twelve',
17
- '13' => 'thirteen',
18
- '14' => 'fourteen',
19
- '15' => 'fifteen',
20
- '16' => 'sixteen',
21
- '17' => 'seventeen',
22
- '18' => 'eighteen',
23
- '19' => 'nineteen',
24
- '20' => 'twenty',
25
- '30' => 'thirty',
26
- '40' => 'forty',
27
- '50' => 'fifty',
28
- '60' => 'sixty',
29
- '70' => 'seventy',
30
- '80' => 'eighty',
31
- '90' => 'ninety'
32
- }
33
- LARGE_NUMS = {
34
- 1 => 'thousand',
35
- 2 => 'million',
36
- 3 => 'billion',
37
- 4 => 'trillion'
38
- }
39
- ORDINALS = {
40
- 'one' => 'first',
41
- 'two' => 'second',
42
- 'three' => 'third',
43
- 'four' => 'fourth',
44
- 'five' => 'fifth',
45
- 'six' => 'sixth',
46
- 'seven' => 'seventh',
47
- 'eight' => 'eighth',
48
- 'nine' => 'ninth',
49
- 'One' => 'First',
50
- 'Two' => 'Second',
51
- 'Three' => 'Third',
52
- 'Four' => 'Fourth',
53
- 'Five' => 'Fifth',
54
- 'Six' => 'Sixth',
55
- 'Seven' => 'Seventh',
56
- 'Eight' => 'Eighth',
57
- 'Nine' => 'Ninth'
58
- }
2
+ DATA_FILE = File.read(File.join(File.dirname(__FILE__), '../data/number_words.yml'))
3
+ DAT = YAML.load(DATA_FILE)
4
+ WORDS = DAT[:words]
5
+ LARGE_NUMS = DAT[:large_nums]
6
+ ORDINALS = DAT[:ordinals]
59
7
 
60
8
  def to_words(num, options = {})
61
- NumbersToWords.new(num, options).to_words
9
+ NumbersToWords.new(options).to_words(num)
62
10
  end
63
11
 
64
12
  def to_word_ordinal(num, options = {})
65
- text = NumbersToWords.new(num, options).to_words
13
+ text = NumbersToWords.new(options).to_words(num)
66
14
  change_last_word(text)
67
15
  end
68
16
 
@@ -83,8 +31,7 @@ module NumberWords
83
31
  attr_reader :hundred, :large_nums
84
32
  DEFAULTS = {styled: false, case: 'lower', space: ' '}
85
33
 
86
- def initialize(num, options = {})
87
- @num = num.to_s
34
+ def initialize(options = {})
88
35
  @options = DEFAULTS.merge(options)
89
36
  set_style_opts
90
37
  end
@@ -100,8 +47,8 @@ module NumberWords
100
47
  large_nums
101
48
  end
102
49
 
103
- def to_words
104
- arr = num.each_char.to_a
50
+ def to_words(num)
51
+ arr = num.to_s.each_char.to_a
105
52
  groups = arr.reverse.each_slice(3).to_a
106
53
  collector = words_for_groups(groups)
107
54
  formatted_words(collector)
@@ -166,3 +113,4 @@ module NumberWords
166
113
  end
167
114
  end
168
115
  end
116
+
data/lib/number_to.rb CHANGED
@@ -1,11 +1,11 @@
1
1
  require 'modules/roman_numerals'
2
- require 'modules/alphabetics'
3
2
  require 'modules/ordinals'
4
3
  require 'modules/number_words'
4
+ require 'modules/character_set'
5
5
 
6
6
  module NumberTo
7
7
  extend RomanNumerals
8
- extend Alphabetics
9
8
  extend Ordinals
10
9
  extend NumberWords
10
+ extend CharacterSet
11
11
  end
@@ -20,5 +20,8 @@ class Fixnum
20
20
  def to_word_ordinal(options = {})
21
21
  NumberTo.to_word_ordinal(self, options)
22
22
  end
23
+ def to_character_set(characters, options = {})
24
+ NumberTo.to_character_set(self, characters, options)
25
+ end
23
26
  end
24
27
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: number_to
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Corrigan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-18 00:00:00.000000000 Z
11
+ date: 2014-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -74,10 +74,11 @@ extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
76
  - lib/number_to.rb
77
+ - lib/data/number_words.yml
77
78
  - lib/modules/roman_numerals.rb
78
79
  - lib/modules/number_words.rb
79
80
  - lib/modules/ordinals.rb
80
- - lib/modules/alphabetics.rb
81
+ - lib/modules/character_set.rb
81
82
  - lib/number_to/fixnum.rb
82
83
  homepage: http://www.scribenet.com
83
84
  licenses:
@@ -1,23 +0,0 @@
1
- module Alphabetics
2
- def to_upper_alpha(num)
3
- to_lower_alpha(num).upcase
4
- end
5
-
6
- def to_lower_alpha(num)
7
- num_to_alph(num)
8
- end
9
-
10
- ALPH = ("a" .. "z").to_a
11
-
12
- def num_to_alph(num)
13
- num = num.to_i
14
- repetition = num > 26 ? calc_repetition(num) : 1
15
- real_num = num > 26 ? num % 26 : num
16
- real_num = 26 if real_num == 0
17
- ALPH[real_num - 1] * repetition
18
- end
19
-
20
- def calc_repetition(num)
21
- num % 26 == 0 ? num / 26 : (num / 26) + 1
22
- end
23
- end