class Petrovich::Inflector

Public Class Methods

new(name, gender, name_case) click to toggle source
# File lib/petrovich/inflector.rb, line 3
def initialize(name, gender, name_case)
  Petrovich.assert_name!(name)

  @name = Petrovich.normalize_name(name)
  @gender = gender
  @name_case = name_case
end

Public Instance Methods

inflect_firstname(rules) click to toggle source
# File lib/petrovich/inflector.rb, line 15
def inflect_firstname(rules)
  inflect(@name.firstname, rules)
end
inflect_lastname(rules) click to toggle source
# File lib/petrovich/inflector.rb, line 11
def inflect_lastname(rules)
  inflect(@name.lastname, rules)
end
inflect_middlename(rules) click to toggle source
# File lib/petrovich/inflector.rb, line 19
def inflect_middlename(rules)
  inflect(@name.middlename, rules)
end

Private Instance Methods

inflect(name, rules) click to toggle source
# File lib/petrovich/inflector.rb, line 25
def inflect(name, rules)
  return name if rules.size == 0

  parts = name.split('-')
  parts.map! do |part|
    rule = rules.shift

    if rule && (modifier = rule.get_modifier(@name_case))
      part.slice(0, part.size - modifier.offset) + modifier.suffix
    else
      part
    end
  end

  parts.join('-')
end