class Petrovich::Name
Public Class Methods
new(opts)
click to toggle source
# File lib/petrovich/name.rb, line 9 def initialize(opts) @rule_set = Petrovich.rule_set @gender = opts[:gender] @name = Petrovich.normalize_name( lastname: opts[:lastname], firstname: opts[:firstname], middlename: opts[:middlename] ) end
Public Instance Methods
androgynous?()
click to toggle source
# File lib/petrovich/name.rb, line 39 def androgynous? Gender.detect(@name) == :androgynous end
female?()
click to toggle source
# File lib/petrovich/name.rb, line 35 def female? Gender.detect(@name) == :female end
gender()
click to toggle source
# File lib/petrovich/name.rb, line 19 def gender if known_gender? @gender.to_sym else Gender.detect(@name) end end
known_gender?()
click to toggle source
# File lib/petrovich/name.rb, line 27 def known_gender? !@gender.nil? && Petrovich::GENDERS.include?(@gender.to_sym) end
male?()
click to toggle source
# File lib/petrovich/name.rb, line 31 def male? Gender.detect(@name) == :male end
to(name_case)
click to toggle source
# File lib/petrovich/name.rb, line 43 def to(name_case) Petrovich.assert_case!(name_case) Inflected.new(inflect(@name.dup, gender, name_case)) end
to_s()
click to toggle source
# File lib/petrovich/name.rb, line 48 def to_s [lastname, firstname, middlename].join(' ') end
Private Instance Methods
inflect(name, gender, name_case)
click to toggle source
# File lib/petrovich/name.rb, line 60 def inflect(name, gender, name_case) inflector = Inflector.new(name, gender, name_case) known_gender = known_gender? find = proc { |x| @rule_set.find_all_case_rules(name.send(x), gender, x, known_gender) } if !name.lastname.nil? && (rules = find.call(:lastname)) name.lastname = inflector.inflect_lastname(rules) end if !name.firstname.nil? && (rules = find.call(:firstname)) name.firstname = inflector.inflect_firstname(rules) end if !name.middlename.nil? && (rules = find.call(:middlename)) name.middlename = inflector.inflect_middlename(rules) end name end