Kuru
This commit is contained in:
		
							parent
							
								
									3e3463593e
								
							
						
					
					
						commit
						24b5386b51
					
				
							
								
								
									
										48
									
								
								lib/verb.rb
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								lib/verb.rb
									
									
									
									
									
								
							| @ -26,7 +26,12 @@ class KanaKanji | |||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def + (other) |   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 |   end | ||||||
| 
 | 
 | ||||||
|   def last_character(new_form=nil) |   def last_character(new_form=nil) | ||||||
| @ -57,10 +62,6 @@ class Verb | |||||||
|     dict.all_but_last_character |     dict.all_but_last_character | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def ve |  | ||||||
|     VerbExpression |  | ||||||
|   end |  | ||||||
| 
 |  | ||||||
|   def dictionary |   def dictionary | ||||||
|     dict |     dict | ||||||
|   end |   end | ||||||
| @ -85,6 +86,10 @@ class Verb | |||||||
|     dictionary |     dictionary | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|  |   def short_form_present_negative | ||||||
|  |     negative_stem + "ない" | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|   def short_form_past_positive |   def short_form_past_positive | ||||||
|     te.all_but_last_character + TE_TA_DE_DA[te.last_character] |     te.all_but_last_character + TE_TA_DE_DA[te.last_character] | ||||||
|   end |   end | ||||||
| @ -107,8 +112,8 @@ class IchidanVerb < Verb | |||||||
|     all_but_last_character |     all_but_last_character | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def short_form_present_negative |   def negative_stem | ||||||
|     all_but_last_character + "ない" |     stem | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def te |   def te | ||||||
| @ -129,8 +134,8 @@ class GodanVerb < Verb | |||||||
|     all_but_last_character + last_character("i") |     all_but_last_character + last_character("i") | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def short_form_present_negative |   def negative_stem | ||||||
|     all_but_last_character + last_character("a") + "ない" |     all_but_last_character + last_character("a") | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def potential_starter |   def potential_starter | ||||||
| @ -170,8 +175,8 @@ class SuruVerb < Verb | |||||||
|     prefix + "し" |     prefix + "し" | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def short_form_present_negative |   def negative_stem | ||||||
|     prefix + "しない" |     prefix + "し" | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def te |   def te | ||||||
| @ -183,3 +188,24 @@ class SuruVerb < Verb | |||||||
|   end |   end | ||||||
| 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 | ||||||
|  | |||||||
| @ -17,6 +17,8 @@ class TestVerb < Minitest::Test | |||||||
|     @hanasu = GodanVerb.new("話す", "はなす", "to speak") |     @hanasu = GodanVerb.new("話す", "はなす", "to speak") | ||||||
|     @suru = SuruVerb.new("する", "する", "to do") |     @suru = SuruVerb.new("する", "する", "to do") | ||||||
|     @benkyousuru = SuruVerb.new("勉強する", "べんきょうする", "to study") |     @benkyousuru = SuruVerb.new("勉強する", "べんきょうする", "to study") | ||||||
|  |     @kuru = KuruVerb.new("来る", "くる", "to come") | ||||||
|  |     @tsuretekuru = KuruVerb.new("連れて来る", "つれてくる", "to bring somebody along") | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def test_te_form |   def test_te_form | ||||||
| @ -38,6 +40,10 @@ class TestVerb < Minitest::Test | |||||||
|     assert_equal "行って", @iku.te.kanji |     assert_equal "行って", @iku.te.kanji | ||||||
|     assert_equal "泳いで", @oyogu.te.kanji |     assert_equal "泳いで", @oyogu.te.kanji | ||||||
|     assert_equal "話して", @hanasu.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 |   end | ||||||
| 
 | 
 | ||||||
|   def test_long_form_present_positive |   def test_long_form_present_positive | ||||||
| @ -49,6 +55,10 @@ class TestVerb < Minitest::Test | |||||||
|     assert_equal "します", @suru.long_form_present_positive.kana |     assert_equal "します", @suru.long_form_present_positive.kana | ||||||
|     assert_equal "勉強します", @benkyousuru.long_form_present_positive.kanji |     assert_equal "勉強します", @benkyousuru.long_form_present_positive.kanji | ||||||
|     assert_equal "べんきょうします", @benkyousuru.long_form_present_positive.kana |     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 |   end | ||||||
| 
 | 
 | ||||||
|   def test_long_form_present_negative |   def test_long_form_present_negative | ||||||
| @ -60,6 +70,10 @@ class TestVerb < Minitest::Test | |||||||
|     assert_equal "しません", @suru.long_form_present_negative.kana |     assert_equal "しません", @suru.long_form_present_negative.kana | ||||||
|     assert_equal "勉強しません", @benkyousuru.long_form_present_negative.kanji |     assert_equal "勉強しません", @benkyousuru.long_form_present_negative.kanji | ||||||
|     assert_equal "べんきょうしません", @benkyousuru.long_form_present_negative.kana |     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 |   end | ||||||
| 
 | 
 | ||||||
|   def test_short_form_present_positive |   def test_short_form_present_positive | ||||||
| @ -71,6 +85,10 @@ class TestVerb < Minitest::Test | |||||||
|     assert_equal "する", @suru.short_form_present_positive.kana |     assert_equal "する", @suru.short_form_present_positive.kana | ||||||
|     assert_equal "勉強する", @benkyousuru.short_form_present_positive.kanji |     assert_equal "勉強する", @benkyousuru.short_form_present_positive.kanji | ||||||
|     assert_equal "べんきょうする", @benkyousuru.short_form_present_positive.kana |     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 |   end | ||||||
| 
 | 
 | ||||||
|   def test_short_form_present_negative |   def test_short_form_present_negative | ||||||
| @ -82,6 +100,10 @@ class TestVerb < Minitest::Test | |||||||
|     assert_equal "しない", @suru.short_form_present_negative.kana |     assert_equal "しない", @suru.short_form_present_negative.kana | ||||||
|     assert_equal "勉強しない", @benkyousuru.short_form_present_negative.kanji |     assert_equal "勉強しない", @benkyousuru.short_form_present_negative.kanji | ||||||
|     assert_equal "べんきょうしない", @benkyousuru.short_form_present_negative.kana |     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 |   end | ||||||
| 
 | 
 | ||||||
|   def test_long_form_past_positive |   def test_long_form_past_positive | ||||||
| @ -93,6 +115,10 @@ class TestVerb < Minitest::Test | |||||||
|     assert_equal "しました", @suru.long_form_past_positive.kana |     assert_equal "しました", @suru.long_form_past_positive.kana | ||||||
|     assert_equal "勉強しました", @benkyousuru.long_form_past_positive.kanji |     assert_equal "勉強しました", @benkyousuru.long_form_past_positive.kanji | ||||||
|     assert_equal "べんきょうしました", @benkyousuru.long_form_past_positive.kana |     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 |   end | ||||||
| 
 | 
 | ||||||
|   def test_long_form_past_negative |   def test_long_form_past_negative | ||||||
| @ -104,6 +130,10 @@ class TestVerb < Minitest::Test | |||||||
|     assert_equal "しませんでした", @suru.long_form_past_negative.kana |     assert_equal "しませんでした", @suru.long_form_past_negative.kana | ||||||
|     assert_equal "勉強しませんでした", @benkyousuru.long_form_past_negative.kanji |     assert_equal "勉強しませんでした", @benkyousuru.long_form_past_negative.kanji | ||||||
|     assert_equal "べんきょうしませんでした", @benkyousuru.long_form_past_negative.kana |     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 |   end | ||||||
| 
 | 
 | ||||||
|   def test_short_form_past_positive |   def test_short_form_past_positive | ||||||
| @ -115,6 +145,10 @@ class TestVerb < Minitest::Test | |||||||
|     assert_equal "した", @suru.short_form_past_positive.kana |     assert_equal "した", @suru.short_form_past_positive.kana | ||||||
|     assert_equal "勉強した", @benkyousuru.short_form_past_positive.kanji |     assert_equal "勉強した", @benkyousuru.short_form_past_positive.kanji | ||||||
|     assert_equal "べんきょうした", @benkyousuru.short_form_past_positive.kana |     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 |   end | ||||||
| 
 | 
 | ||||||
|   def test_short_form_past_negative |   def test_short_form_past_negative | ||||||
| @ -126,6 +160,10 @@ class TestVerb < Minitest::Test | |||||||
|     assert_equal "しなかった", @suru.short_form_past_negative.kana |     assert_equal "しなかった", @suru.short_form_past_negative.kana | ||||||
|     assert_equal "勉強しなかった", @benkyousuru.short_form_past_negative.kanji |     assert_equal "勉強しなかった", @benkyousuru.short_form_past_negative.kanji | ||||||
|     assert_equal "べんきょうしなかった", @benkyousuru.short_form_past_negative.kana |     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 |   end | ||||||
| 
 | 
 | ||||||
|   def test_desire |   def test_desire | ||||||
| @ -137,6 +175,10 @@ class TestVerb < Minitest::Test | |||||||
|     assert_equal "したい", @suru.desire.kana |     assert_equal "したい", @suru.desire.kana | ||||||
|     assert_equal "勉強したい", @benkyousuru.desire.kanji |     assert_equal "勉強したい", @benkyousuru.desire.kanji | ||||||
|     assert_equal "べんきょうしたい", @benkyousuru.desire.kana |     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 |   end | ||||||
| 
 | 
 | ||||||
|   def test_potential |   def test_potential | ||||||
| @ -148,5 +190,9 @@ class TestVerb < Minitest::Test | |||||||
|     assert_equal "できる", @suru.potential.dictionary.kana |     assert_equal "できる", @suru.potential.dictionary.kana | ||||||
|     assert_equal "勉強できる", @benkyousuru.potential.dictionary.kanji |     assert_equal "勉強できる", @benkyousuru.potential.dictionary.kanji | ||||||
|     assert_equal "べんきょうできる", @benkyousuru.potential.dictionary.kana |     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 | ||||||
| end | end | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user