class CzechName::NameFactory
Attributes
parsed[R]
raw[R]
Public Class Methods
new(name)
click to toggle source
# File lib/czech_name/name_factory.rb, line 5 def initialize(name) @raw = name @parsed = @raw && @raw.split(' ') end
Public Instance Methods
create()
click to toggle source
# File lib/czech_name/name_factory.rb, line 10 def create return nil if raw.nil? || raw.empty? case when any_name_is_female_first? then create_female_name when all_names_are_female? then create_female_name when all_names_are_male? then create_male_name else nil end end
Private Instance Methods
all_names_are_female?()
click to toggle source
# File lib/czech_name/name_factory.rb, line 27 def all_names_are_female? parsed.all? { |name| female_first_name_database.include?(name) || female_last_name_database.include?(name) } end
all_names_are_male?()
click to toggle source
# File lib/czech_name/name_factory.rb, line 31 def all_names_are_male? parsed.all? { |name| male_first_name_database.include?(name) || male_last_name_database.include?(name) } end
any_name_is_female_first?()
click to toggle source
# File lib/czech_name/name_factory.rb, line 23 def any_name_is_female_first? parsed.any? { |name| female_first_name_database.include?(name) } end
create_female_name()
click to toggle source
# File lib/czech_name/name_factory.rb, line 35 def create_female_name first_names, names = parsed.partition { |fm| female_first_name_database.include?(fm) } first_names_in_vocative = first_names.map { |fm| female_first_name_database.vocative(fm) } last_names, names = names.partition { |fm| female_last_name_database.include?(fm) } last_names_in_vocative = last_names.map { |fm| female_last_name_database.vocative(fm) } male_last_names, names = names.partition { |fm| male_last_name_database.include?(fm) } return nil unless names.empty? vocative = [first_names_in_vocative, last_names_in_vocative, male_last_names].flatten.join(' ') FemaleName.new(@raw, vocative) end
create_male_name()
click to toggle source
# File lib/czech_name/name_factory.rb, line 51 def create_male_name first_names, names = parsed.partition { |fm| male_first_name_database.include?(fm) } first_names_in_vocative = first_names.map { |fm| male_first_name_database.vocative(fm) } last_names, names = names.partition { |fm| male_last_name_database.include?(fm) } last_names_in_vocative = last_names.map { |fm| male_last_name_database.vocative(fm) } return nil unless names.empty? vocative = [first_names_in_vocative, last_names_in_vocative].flatten.join(' ') MaleName.new(@raw, vocative) end
female_first_name_database()
click to toggle source
# File lib/czech_name/name_factory.rb, line 73 def female_first_name_database Database.new(Configuration.female_first_name_database_file_path) end
female_last_name_database()
click to toggle source
# File lib/czech_name/name_factory.rb, line 77 def female_last_name_database Database.new(Configuration.female_last_name_database_file_path) end
male_first_name_database()
click to toggle source
# File lib/czech_name/name_factory.rb, line 65 def male_first_name_database Database.new(Configuration.male_first_name_database_file_path) end
male_last_name_database()
click to toggle source
# File lib/czech_name/name_factory.rb, line 69 def male_last_name_database Database.new(Configuration.male_last_name_database_file_path) end