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

Lookup cardinal number name (ex: two)

@param number to convert (between 0-100) @return

# File lib/number_name_string/lookup.rb, line 13
def cardinal(number)
  lookup_cardinal[number]
end
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
ordinal(number) click to toggle source

Lookup ordinal number name (ex: second)

@param number to convert (between 0-100) @return

# File lib/number_name_string/lookup.rb, line 33
def ordinal(number)
  lookup_ordinal[number]
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