number_to 0.7.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
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