Created
December 24, 2014 05:26
-
-
Save kiurchv/f3c47d0f371da543615a to your computer and use it in GitHub Desktop.
Patronymic class for Ukrainian language
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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