From 25f2d260c771d03b379ab8d8c7b0b2bf99125e44 Mon Sep 17 00:00:00 2001 From: Bill Rossi Date: Sat, 16 Aug 2025 06:58:26 -0400 Subject: [PATCH] Start working on verbs --- src/verb.rb | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 src/verb.rb diff --git a/src/verb.rb b/src/verb.rb new file mode 100644 index 0000000..1696d90 --- /dev/null +++ b/src/verb.rb @@ -0,0 +1,96 @@ +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