diff options
| author | siikamiika <siikamiika@users.noreply.github.com> | 2019-11-13 20:24:11 +0200 | 
|---|---|---|
| committer | siikamiika <siikamiika@users.noreply.github.com> | 2019-11-23 17:50:46 +0200 | 
| commit | cc8221c6ea686521261e2ac562d3d5a6d0b9913a (patch) | |
| tree | a980f198da65ce61c2e43d3320f6623dba3885b7 /ext/mixed/js | |
| parent | f6253216505737d588ccff1f07cb5ce0332297a5 (diff) | |
add reading modes
Diffstat (limited to 'ext/mixed/js')
| -rw-r--r-- | ext/mixed/js/japanese.js | 37 | 
1 files changed, 37 insertions, 0 deletions
| diff --git a/ext/mixed/js/japanese.js b/ext/mixed/js/japanese.js index e2d7a090..a7cd0452 100644 --- a/ext/mixed/js/japanese.js +++ b/ext/mixed/js/japanese.js @@ -48,6 +48,43 @@ function jpKatakanaToHiragana(text) {      return result;  } +function jpHiraganaToKatakana(text) { +    let result = ''; +    for (const c of text) { +        if (wanakana.isHiragana(c)) { +            result += wanakana.toKatakana(c); +        } else { +            result += c; +        } +    } + +    return result; +} + +function jpToRomaji(text) { +    return wanakana.toRomaji(text); +} + +function jpConvertReading(expressionFragment, readingFragment, readingMode) { +    switch (readingMode) { +        case 'hiragana': +            return jpKatakanaToHiragana(readingFragment || ''); +        case 'katakana': +            return jpHiraganaToKatakana(readingFragment || ''); +        case 'romaji': +            if (readingFragment) { +                return jpToRomaji(readingFragment); +            } else { +                if (jpIsKana(expressionFragment)) { +                    return jpToRomaji(expressionFragment); +                } +            } +            return readingFragment; +        default: +            return readingFragment; +    } +} +  function jpDistributeFurigana(expression, reading) {      const fallback = [{furigana: reading, text: expression}];      if (!reading) { |