diff --git a/lib/verb.rb b/lib/verb.rb index 03d7f15..e93f290 100644 --- a/lib/verb.rb +++ b/lib/verb.rb @@ -26,7 +26,12 @@ class KanaKanji end def + (other) - self.class.new kana + other, kanji + 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 diff --git a/test/test_verb.rb b/test/test_verb.rb index a3a8282..c291fc5 100644 --- a/test/test_verb.rb +++ b/test/test_verb.rb @@ -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