class Metamorphosis::PrefixParser

Attributes

prefixes[R]

Public Class Methods

new(prefixes, available_units) click to toggle source
# File lib/metamorphosis/prefix_parser.rb, line 5
def initialize(prefixes, available_units)
  @prefixes = prefixes
  @available_units = available_units
end

Public Instance Methods

parse(unit_text) click to toggle source

Given a known set of unit names, returns the prefix value, and the base unit name

# File lib/metamorphosis/prefix_parser.rb, line 12
def parse(unit_text)
  unit_text = unit_text.to_s
  @prefixes.each do |prefix, value|
    unit = parse_unit(unit_text, prefix)
    next unless unit

    return [value, unit]
  end
  [1.0, unit_text.to_sym]
end

Private Instance Methods

parse_unit(unit_text, prefix) click to toggle source
# File lib/metamorphosis/prefix_parser.rb, line 27
def parse_unit(unit_text, prefix)
  md = /^#{prefix}(.+)/.match(unit_text)
  return unless md
  unit = md[1].to_sym

  @available_units.include?(unit) ? unit : nil
end