JpnForPhp\Inflector\Inflector::inflectForm PHP Method

inflectForm() private static method

Generates conjugation for the given verb to the given type using the given mappings
private static inflectForm ( array $verb, array $mappings, $form ) : array
$verb array
$mappings array
$form
return array
    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);
    }