Skip to content

Instantly share code, notes, and snippets.

@kiurchv
Created December 24, 2014 05:26
Show Gist options
  • Save kiurchv/f3c47d0f371da543615a to your computer and use it in GitHub Desktop.
Save kiurchv/f3c47d0f371da543615a to your computer and use it in GitHub Desktop.
Patronymic class for Ukrainian language
class Patronymic
EXCEPTIONS = {
"Микола" => ["Миколайович", "Миколаївна"],
"Григорій" => ["Григорович", "Григорівна"],
"Хома" => ["Хомич", "Хомівна"],
"Ілля" => ["Ілліч", "Іллівна"],
"Яків" => ["Якович", "Яківна"],
"Сава" => ["Савович", "Савівна"]
}
MALE_SUFFIX = "ович"
FEMALE_SUFFIX = "івна"
ALT_MALE_SUFFIX = "йович"
ALT_FEMALE_SUFFIX = "ївна"
attr_reader :male, :female
def initialize(name)
return (@male, @female = EXCEPTIONS[name]) if EXCEPTIONS.key? name
case name
when /й$/
@male = name.gsub(/й$/, ALT_MALE_SUFFIX)
@female = name.gsub(/й$/, ALT_FEMALE_SUFFIX)
when /[аоуеи]$/
@male = name.gsub(/[аоуеи]$/, MALE_SUFFIX)
@female = name.gsub(/[аоуеи]$/, FEMALE_SUFFIX)
else
@male = name + MALE_SUFFIX
@female = name + FEMALE_SUFFIX
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment