This commit is contained in:
Bill Rossi 2025-08-16 10:14:03 -04:00
parent 3e3463593e
commit 24b5386b51
2 changed files with 83 additions and 11 deletions

View File

@ -26,7 +26,12 @@ class KanaKanji
end
def + (other)
case other
when String
self.class.new kana + other, kanji + other
when KanaKanji
self.class.new kana + other.kana, kanji + other.kanji
end
end
def last_character(new_form=nil)
@ -57,10 +62,6 @@ class Verb
dict.all_but_last_character
end
def ve
VerbExpression
end
def dictionary
dict
end
@ -85,6 +86,10 @@ class Verb
dictionary
end
def short_form_present_negative
negative_stem + "ない"
end
def short_form_past_positive
te.all_but_last_character + TE_TA_DE_DA[te.last_character]
end
@ -107,8 +112,8 @@ class IchidanVerb < Verb
all_but_last_character
end
def short_form_present_negative
all_but_last_character + "ない"
def negative_stem
stem
end
def te
@ -129,8 +134,8 @@ class GodanVerb < Verb
all_but_last_character + last_character("i")
end
def short_form_present_negative
all_but_last_character + last_character("a") + "ない"
def negative_stem
all_but_last_character + last_character("a")
end
def potential_starter
@ -170,8 +175,8 @@ class SuruVerb < Verb
prefix + ""
end
def short_form_present_negative
prefix + "ない"
def negative_stem
prefix + ""
end
def te
@ -183,3 +188,24 @@ class SuruVerb < Verb
end
end
class KuruVerb < Verb
def prefix
dict[..-3]
end
def te
stem + ""
end
def stem
prefix + KanaKanji.new("", "")
end
def negative_stem
prefix + KanaKanji.new("", "")
end
def potential_starter
negative_stem + "られる"
end
end

View File

@ -17,6 +17,8 @@ class TestVerb < Minitest::Test
@hanasu = GodanVerb.new("話す", "はなす", "to speak")
@suru = SuruVerb.new("する", "する", "to do")
@benkyousuru = SuruVerb.new("勉強する", "べんきょうする", "to study")
@kuru = KuruVerb.new("来る", "くる", "to come")
@tsuretekuru = KuruVerb.new("連れて来る", "つれてくる", "to bring somebody along")
end
def test_te_form
@ -38,6 +40,10 @@ class TestVerb < Minitest::Test
assert_equal "行って", @iku.te.kanji
assert_equal "泳いで", @oyogu.te.kanji
assert_equal "話して", @hanasu.te.kanji
assert_equal "来て", @kuru.te.kanji
assert_equal "きて", @kuru.te.kana
assert_equal "連れて来て", @tsuretekuru.te.kanji
assert_equal "つれてきて", @tsuretekuru.te.kana
end
def test_long_form_present_positive
@ -49,6 +55,10 @@ class TestVerb < Minitest::Test
assert_equal "します", @suru.long_form_present_positive.kana
assert_equal "勉強します", @benkyousuru.long_form_present_positive.kanji
assert_equal "べんきょうします", @benkyousuru.long_form_present_positive.kana
assert_equal "来ます", @kuru.long_form_present_positive.kanji
assert_equal "きます", @kuru.long_form_present_positive.kana
assert_equal "連れて来ます", @tsuretekuru.long_form_present_positive.kanji
assert_equal "つれてきます", @tsuretekuru.long_form_present_positive.kana
end
def test_long_form_present_negative
@ -60,6 +70,10 @@ class TestVerb < Minitest::Test
assert_equal "しません", @suru.long_form_present_negative.kana
assert_equal "勉強しません", @benkyousuru.long_form_present_negative.kanji
assert_equal "べんきょうしません", @benkyousuru.long_form_present_negative.kana
assert_equal "来ません", @kuru.long_form_present_negative.kanji
assert_equal "きません", @kuru.long_form_present_negative.kana
assert_equal "連れて来ません", @tsuretekuru.long_form_present_negative.kanji
assert_equal "つれてきません", @tsuretekuru.long_form_present_negative.kana
end
def test_short_form_present_positive
@ -71,6 +85,10 @@ class TestVerb < Minitest::Test
assert_equal "する", @suru.short_form_present_positive.kana
assert_equal "勉強する", @benkyousuru.short_form_present_positive.kanji
assert_equal "べんきょうする", @benkyousuru.short_form_present_positive.kana
assert_equal "来る", @kuru.short_form_present_positive.kanji
assert_equal "くる", @kuru.short_form_present_positive.kana
assert_equal "連れて来る", @tsuretekuru.short_form_present_positive.kanji
assert_equal "つれてくる", @tsuretekuru.short_form_present_positive.kana
end
def test_short_form_present_negative
@ -82,6 +100,10 @@ class TestVerb < Minitest::Test
assert_equal "しない", @suru.short_form_present_negative.kana
assert_equal "勉強しない", @benkyousuru.short_form_present_negative.kanji
assert_equal "べんきょうしない", @benkyousuru.short_form_present_negative.kana
assert_equal "来ない", @kuru.short_form_present_negative.kanji
assert_equal "こない", @kuru.short_form_present_negative.kana
assert_equal "連れて来ない", @tsuretekuru.short_form_present_negative.kanji
assert_equal "つれてこない", @tsuretekuru.short_form_present_negative.kana
end
def test_long_form_past_positive
@ -93,6 +115,10 @@ class TestVerb < Minitest::Test
assert_equal "しました", @suru.long_form_past_positive.kana
assert_equal "勉強しました", @benkyousuru.long_form_past_positive.kanji
assert_equal "べんきょうしました", @benkyousuru.long_form_past_positive.kana
assert_equal "来ました", @kuru.long_form_past_positive.kanji
assert_equal "きました", @kuru.long_form_past_positive.kana
assert_equal "連れて来ました", @tsuretekuru.long_form_past_positive.kanji
assert_equal "つれてきました", @tsuretekuru.long_form_past_positive.kana
end
def test_long_form_past_negative
@ -104,6 +130,10 @@ class TestVerb < Minitest::Test
assert_equal "しませんでした", @suru.long_form_past_negative.kana
assert_equal "勉強しませんでした", @benkyousuru.long_form_past_negative.kanji
assert_equal "べんきょうしませんでした", @benkyousuru.long_form_past_negative.kana
assert_equal "来ませんでした", @kuru.long_form_past_negative.kanji
assert_equal "きませんでした", @kuru.long_form_past_negative.kana
assert_equal "連れて来ませんでした", @tsuretekuru.long_form_past_negative.kanji
assert_equal "つれてきませんでした", @tsuretekuru.long_form_past_negative.kana
end
def test_short_form_past_positive
@ -115,6 +145,10 @@ class TestVerb < Minitest::Test
assert_equal "した", @suru.short_form_past_positive.kana
assert_equal "勉強した", @benkyousuru.short_form_past_positive.kanji
assert_equal "べんきょうした", @benkyousuru.short_form_past_positive.kana
assert_equal "来た", @kuru.short_form_past_positive.kanji
assert_equal "きた", @kuru.short_form_past_positive.kana
assert_equal "連れて来た", @tsuretekuru.short_form_past_positive.kanji
assert_equal "つれてきた", @tsuretekuru.short_form_past_positive.kana
end
def test_short_form_past_negative
@ -126,6 +160,10 @@ class TestVerb < Minitest::Test
assert_equal "しなかった", @suru.short_form_past_negative.kana
assert_equal "勉強しなかった", @benkyousuru.short_form_past_negative.kanji
assert_equal "べんきょうしなかった", @benkyousuru.short_form_past_negative.kana
assert_equal "来なかった", @kuru.short_form_past_negative.kanji
assert_equal "こなかった", @kuru.short_form_past_negative.kana
assert_equal "連れて来なかった", @tsuretekuru.short_form_past_negative.kanji
assert_equal "つれてこなかった", @tsuretekuru.short_form_past_negative.kana
end
def test_desire
@ -137,6 +175,10 @@ class TestVerb < Minitest::Test
assert_equal "したい", @suru.desire.kana
assert_equal "勉強したい", @benkyousuru.desire.kanji
assert_equal "べんきょうしたい", @benkyousuru.desire.kana
assert_equal "来たい", @kuru.desire.kanji
assert_equal "きたい", @kuru.desire.kana
assert_equal "連れて来たい", @tsuretekuru.desire.kanji
assert_equal "つれてきたい", @tsuretekuru.desire.kana
end
def test_potential
@ -148,5 +190,9 @@ class TestVerb < Minitest::Test
assert_equal "できる", @suru.potential.dictionary.kana
assert_equal "勉強できる", @benkyousuru.potential.dictionary.kanji
assert_equal "べんきょうできる", @benkyousuru.potential.dictionary.kana
assert_equal "来られる", @kuru.potential.dictionary.kanji
assert_equal "こられる", @kuru.potential.dictionary.kana
assert_equal "連れて来られる", @tsuretekuru.potential.dictionary.kanji
assert_equal "つれてこられる", @tsuretekuru.potential.dictionary.kana
end
end