ika_bot/src/verb.rb

97 lines
2.1 KiB
Ruby
Raw Normal View History

2025-08-16 06:58:26 -04:00
GUYS = {
"" => { "a" => "", "i" => "", "u" => "", "e" => "", "o" => "" },
}
class KanaKanji
attr_reader :kana, :kanji
def initialize(kana, kanji=nil)
@kana = kana
@kanji = kanji || kana
end
def [] (index)
self.class.new kana[index], kanji[index]
end
def + (other)
self.class.new kana + other, kanji + other
end
def last_character
GUYS[kana[-1]]
end
def all_but_last_character
self.class.new kana[0...-1], kanji[0...-1]
end
end
class Verb
attr_reader :dict_kanji, :dict_kana, :definition_english, :dict
def initialize(dict_kanji, dict_kana, definition_english)
@dict_kanji = dict_kanji || dict_kana
@dict_kana = dict_kana
@dict = KanaKanji.new dict_kana, dict_kanji
@definition_english = definition_english
end
def last_character
dict.last_character
end
def all_but_last_character
dict.all_but_last_character
end
def ve
VerbExpression
end
def dictionary
dict
end
end
class IchidanVerb < Verb
def long_form_present_positive
all_but_last_character + "ます"
end
end
class GodanVerb < Verb
def long_form_present_positive
all_but_last_character + last_character["i"] + "ます"
end
end
class SuruVerb < Verb
def long_form_present_positive
dict[..-3] + "します"
end
end
= IchidanVerb.new("見る", "みる", "to look")
p .dictionary.kanji
p .dictionary.kana
p .long_form_present_positive.kanji
p .long_form_present_positive.kana
= GodanVerb.new("飲む", "のむ", "to drink")
p .dictionary.kanji
p .dictionary.kana
p .long_form_present_positive.kanji
p .long_form_present_positive.kana
= SuruVerb.new("する", "する", "to do")
p .dictionary.kanji
p .dictionary.kana
p .long_form_present_positive.kanji
p .long_form_present_positive.kana
= SuruVerb.new("勉強する", "べんきょうする", "to study")
p .dictionary.kanji
p .dictionary.kana
p .long_form_present_positive.kanji
p .long_form_present_positive.kana