From 3e3463593ed61f64bffd35f5760c972b6e5c1782 Mon Sep 17 00:00:00 2001 From: Bill Rossi Date: Sat, 16 Aug 2025 09:39:37 -0400 Subject: [PATCH] Potential form --- lib/verb.rb | 22 +++++++++++++++++++--- test/test_verb.rb | 11 +++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/lib/verb.rb b/lib/verb.rb index aa5a1e8..03d7f15 100644 --- a/lib/verb.rb +++ b/lib/verb.rb @@ -40,13 +40,13 @@ class KanaKanji end class Verb - attr_reader :dict_kanji, :dict_kana, :definition_english, :dict + attr_reader :dict_kanji, :dict_kana, :definition, :dict - def initialize(dict_kanji, dict_kana, definition_english) + def initialize(dict_kanji, dict_kana, definition) @dict_kanji = dict_kanji || dict_kana @dict_kana = dict_kana @dict = KanaKanji.new dict_kana, dict_kanji - @definition_english = definition_english + @definition = definition end def last_character(new_form=nil) @@ -96,6 +96,10 @@ class Verb def desire stem + "たい" end + + def potential + IchidanVerb.new(potential_starter.kanji, potential_starter.kana, "to be able #{definition}") + end end class IchidanVerb < Verb @@ -110,6 +114,10 @@ class IchidanVerb < Verb def te all_but_last_character + "て" end + + def potential_starter + stem + "られる" + end end class GodanVerb < Verb @@ -125,6 +133,10 @@ class GodanVerb < Verb all_but_last_character + last_character("a") + "ない" end + def potential_starter + all_but_last_character + last_character("e") + "る" + end + def te all_but_last_character + case last_character when "う" @@ -165,5 +177,9 @@ class SuruVerb < Verb def te prefix + "して" end + + def potential_starter + prefix + "できる" + end end diff --git a/test/test_verb.rb b/test/test_verb.rb index 8faadf6..a3a8282 100644 --- a/test/test_verb.rb +++ b/test/test_verb.rb @@ -138,4 +138,15 @@ class TestVerb < Minitest::Test assert_equal "勉強したい", @benkyousuru.desire.kanji assert_equal "べんきょうしたい", @benkyousuru.desire.kana end + + def test_potential + assert_equal "見られる", @miru.potential.dictionary.kanji + assert_equal "みられる", @miru.potential.dictionary.kana + assert_equal "飲める", @nomu.potential.dictionary.kanji + assert_equal "のめる", @nomu.potential.dictionary.kana + assert_equal "できる", @suru.potential.dictionary.kanji + assert_equal "できる", @suru.potential.dictionary.kana + assert_equal "勉強できる", @benkyousuru.potential.dictionary.kanji + assert_equal "べんきょうできる", @benkyousuru.potential.dictionary.kana + end end