epitools 0.4.24 → 0.4.25

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.24
1
+ 0.4.25
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{epitools}
8
- s.version = "0.4.24"
8
+ s.version = "0.4.25"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["epitron"]
12
- s.date = %q{2011-04-14}
12
+ s.date = %q{2011-04-15}
13
13
  s.description = %q{Miscellaneous utility libraries to make my life easier.}
14
14
  s.email = %q{chris@ill-logic.com}
15
15
  s.extra_rdoc_files = [
@@ -1,5 +1,6 @@
1
1
  require 'epitools/basetypes'
2
2
  require 'bigdecimal'
3
+ require 'set'
3
4
 
4
5
  class Numeric
5
6
 
@@ -9,11 +10,13 @@ class Numeric
9
10
 
10
11
  NAMES_MEDIUM = [
11
12
  "twenty", "thirty", "fourty", "fifty", "sixty", "seventy", "eighty", "ninety"
12
- ]
13
+ ]
13
14
 
14
15
  NAMES_LARGE = [
15
16
  "thousand", "million", "billion", "trillion", "quadrillion", "quintillion", "sextillion", "septillion", "octillion", "nonillion", "decillion", "undecillion", "duodecillion", "tredecillion", "quattuordecillion", "quindecillion", "sexdecillion", "septendecillion", "octodecillion", "novemdecillion", "vigintillion", "unvigintillion", "duovigintillion", "trevigintillion", "quattuorvigintillion", "quinvigintillion", "sexvigintillion", "septenvigintillion", "octovigintillion", "novemvigintillion", "trigintillion", "untrigintillion", "duotrigintillion"
16
17
  ]
18
+
19
+ NAMES_LARGE_LOOKUP = Set.new(NAMES_LARGE)
17
20
 
18
21
 
19
22
  #
@@ -98,24 +101,21 @@ class Numeric
98
101
  # eg: 10.million #=> 10_000_000
99
102
  #
100
103
  def method_missing(meth, &block)
101
-
102
- if magnitude = NAMES_LARGE.index(meth.to_s)
103
-
104
- pow = (magnitude+1) * 3
105
- factor = 10**pow
104
+ super
105
+ rescue NoMethodError
106
+ if NAMES_LARGE_LOOKUP.include? meth.to_s
107
+ magnitude = NAMES_LARGE.index(meth.to_s)
108
+ pow = (magnitude+1) * 3
109
+ factor = 10**pow
106
110
 
107
111
  if is_a?(Float)
108
112
  (BigDecimal(to_s) * factor).to_i
109
113
  else
110
114
  self * factor
111
115
  end
112
-
113
116
  else
114
-
115
- super
116
-
117
+ raise NoMethodError.new(meth)
117
118
  end
118
-
119
119
  end
120
120
 
121
121
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: epitools
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.4.24
5
+ version: 0.4.25
6
6
  platform: ruby
7
7
  authors:
8
8
  - epitron
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-04-14 00:00:00 -04:00
13
+ date: 2011-04-15 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency