private static function inflectForm(array $verb, array $mappings, $form)
{
$radicals = self::getRadicals($verb, $form);
switch ($form) {
case self::NON_PAST_POLITE:
$suffix = $mappings['polite'];
break;
case self::NON_PAST_NEGATIVE:
$suffix = $mappings['neg'];
break;
case self::NON_PAST_NEGATIVE_POLITE:
$suffix = $mappings['base_i'] . 'ません';
break;
case self::PAST:
$suffix = $mappings['past'];
break;
case self::PAST_POLITE:
$suffix = $mappings['base_i'] . 'ました';
break;
case self::PAST_NEGATIVE:
$suffix = $mappings['neg_past'];
break;
case self::PAST_NEGATIVE_POLITE:
$suffix = $mappings['polite_past_neg'];
break;
case self::BASE_CONNECTIVE:
if (array_key_exists('connective', $mappings)) {
$suffix = $mappings['connective'];
} else {
$suffix = $mappings['base_i'];
}
$suffix .= '-';
break;
case self::SUSPENSIVE_FORM:
$suffix = $mappings['suspensive'];
break;
case self::PROGRESSIVE:
$suffix = $mappings['suspensive'] . 'いる';
break;
case self::PROGRESSIVE_POLITE:
$suffix = $mappings['suspensive'] . 'います';
break;
case self::PROGRESSIVE_NEGATIVE:
$suffix = $mappings['suspensive'] . 'ない';
break;
case self::PROGRESSIVE_NEGATIVE_POLITE:
$suffix = $mappings['suspensive'] . 'いません';
break;
case self::PASSIVE:
$suffix = $mappings['base_passive'] . 'れる';
break;
case self::PASSIVE_SUSPENSIVE:
$suffix = $mappings['base_passive'] . 'れて';
break;
case self::IMPERATIVE_NEUTRAL:
$suffix = $mappings['imperative_neutral'];
break;
case self::IMPERATIVE_POLITE:
$suffix = $mappings['suspensive'] . 'ください';
break;
case self::IMPERATIVE_POLITE_NEGATIVE:
$suffix = $mappings['neg'] . 'でください';
break;
case self::IMPERATIVE_HARD:
$suffix = $mappings['imper_hard'];
break;
case self::OPTATIVE:
$suffix = $mappings['base_i'] . 'たい';
break;
case self::OPTATIVE_NEGATIVE_FAMILIAR:
$suffix = $mappings['base_i'] . 'たくない';
break;
case self::OPTATIVE_NEGATIVE_POLITE_1:
$suffix = $mappings['base_i'] . 'たくないです';
break;
case self::OPTATIVE_NEGATIVE_POLITE_2:
$suffix = $mappings['base_i'] . 'たくありません';
break;
case self::OPTATIVE_PAST:
$suffix = $mappings['base_i'] . 'たかった';
break;
case self::OPTATIVE_NEGATIVE:
$suffix = $mappings['base_i'] . 'たくなかった';
break;
case self::OPTATIVE_PAST_NEGATIVE_POLITE_1:
$suffix = $mappings['base_i'] . 'たくなかったです';
break;
case self::OPTATIVE_PAST_NEGATIVE_POLITE_2:
$suffix = $mappings['base_i'] . 'たくありませんでした';
break;
case self::OPTATIVE_SUSPENSIVE:
$suffix = $mappings['base_i'] . 'たくて';
break;
case self::OPTATIVE_CONDITIONAL:
$suffix = $mappings['base_i'] . 'たければ';
break;
case self::GERUND:
$suffix = $mappings['gerund'];
break;
case self::FACTITIVE:
$suffix = $mappings['factitive'];
break;
case self::FACTITIVE_SHORTENED:
$suffix = $mappings['factitive_c'];
break;
case self::POTENTIAL_NEUTRAL:
$suffix = $mappings['base_e'] . 'る';
break;
case self::POTENTIAL_POLITE:
$suffix = $mappings['base_e'] . 'ます';
break;
case self::CONDITIONAL_BA:
if (array_key_exists('cond', $mappings)) {
$suffix = $mappings['cond'];
} else {
$suffix = $mappings['base_e'];
}
$suffix .= 'ば';
break;
case self::CONDITIONAL_TARA:
$suffix = $mappings['past'] . 'ら';
break;
case self::VOLITIONAL_FAMILIAR:
$suffix = $mappings['volition'];
break;
case self::VOLITIONAL_POLITE:
$suffix = $mappings['volition_polite'];
break;
case self::LOOK_LIKE_NEUTRAL:
$suffix = $mappings['base_i'] . 'そうだ';
break;
case self::LOOK_LIKE_POLITE:
$suffix = $mappings['base_i'] . "そうです";
break;
case self::NOT_LOOK_LIKE_NEUTRAL:
$suffix = $mappings['base_neg'] . "なさそうだ";
break;
case self::NOT_LOOK_LIKE_POLITE:
$suffix = $mappings['base_neg'] . "なさそうです";
break;
default:
throw new Exception('Unknown form ' . $form);
}
$kanjiRadical = $radicals['kanji'];
if (!empty($kanjiRadical)) {
$kanjiValue = $kanjiRadical . $suffix;
} else {
$kanjiValue = null;
}
$kanaValue = $radicals['kana'] . $suffix;
return array('kanji' => $kanjiValue, 'kana' => $kanaValue);
}