class NumberNameString::Lookup
Singleton class which generates translation tables on demand Converts a single name into a number or a 0-100 into a name
Public Instance Methods
cardinal(number)
click to toggle source
number(name)
click to toggle source
Lookup
single word, return number or scale @return[Fixnum, Symbol]
# File lib/number_name_string/lookup.rb, line 19 def number(name) if _ = lookup_name[name] [_, :number] elsif _ = lookup_scale[name] [_, :scale] else raise NumberNameParseError.new("Parse error on: #{name}") end end
Private Instance Methods
generate_cardinal_table()
click to toggle source
# File lib/number_name_string/lookup.rb, line 39 def generate_cardinal_table ONES + TEENS + TENS.map do |prefix| [prefix] + ONES[1..9].map { |suffix| "#{prefix}#{suffix}".to_sym } end.flatten end
generate_name_table()
click to toggle source
# File lib/number_name_string/lookup.rb, line 45 def generate_name_table table = {} (ONES + TEENS).each.with_index { |name, number| table[name] = number } TENS.each.with_index do |prefix, number| number = (number + 2) * 10 table[prefix] = number ONES[1..9].each do |suffix| number += 1 table["#{prefix}#{suffix}".to_sym] = number end end table.merge({ :hundred => 100}).merge MISPELLINGS end
generate_ordinal_table()
click to toggle source
# File lib/number_name_string/lookup.rb, line 59 def generate_ordinal_table ORD_ONES + ORD_TEENS + TENS.map do |prefix| [prefix] + ORD_ONES[1..9].map { |suffix| "#{prefix}#{suffix}".to_sym } end.flatten end
generate_scale_table()
click to toggle source
# File lib/number_name_string/lookup.rb, line 65 def generate_scale_table table = {} SCALES.each.with_index do |scale, index| size = 10 ** (index * 3) table[scale] = size if scale end table end
lookup_cardinal()
click to toggle source
# File lib/number_name_string/lookup.rb, line 74 def lookup_cardinal @lookup_cardinal ||= generate_cardinal_table end
lookup_name()
click to toggle source
# File lib/number_name_string/lookup.rb, line 78 def lookup_name @lookup_name ||= generate_name_table end
lookup_ordinal()
click to toggle source
# File lib/number_name_string/lookup.rb, line 82 def lookup_ordinal @lookup_ordinal ||= generate_ordinal_table end
lookup_scale()
click to toggle source
# File lib/number_name_string/lookup.rb, line 86 def lookup_scale @lookup_scale ||= generate_scale_table end