diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2021-07-09 17:31:16 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-07-09 17:31:16 -0400 | 
| commit | 0d167095479822adf1ed8918e3d1a349b3a53377 (patch) | |
| tree | d99c720a58451e70d44d4a03b1c2c2c3819328a8 /ext/js | |
| parent | daa44a8389806046ca8fde9fa1c96c1e961393f4 (diff) | |
JapaneseUtil updates (#1813)
* Rename test file
* Use shorthand
* Add support checking functions
* Remove convertReading from JapaneseUtil
Diffstat (limited to 'ext/js')
| -rw-r--r-- | ext/js/background/backend.js | 2 | ||||
| -rw-r--r-- | ext/js/display/query-parser.js | 26 | ||||
| -rw-r--r-- | ext/js/language/japanese-util.js | 29 | 
3 files changed, 34 insertions, 23 deletions
| diff --git a/ext/js/background/backend.js b/ext/js/background/backend.js index c797bbf5..af847610 100644 --- a/ext/js/background/backend.js +++ b/ext/js/background/backend.js @@ -1066,7 +1066,7 @@ class Backend {              if (                  dictionaryEntries.length > 0 &&                  originalTextLength > 0 && -                (originalTextLength !== character.length || this._japaneseUtil.isCodePointJapanese(codePoint)) +                (originalTextLength !== character.length || jp.isCodePointJapanese(codePoint))              ) {                  previousUngroupedSegment = null;                  const {headwords: [{term, reading}]} = dictionaryEntries[0]; diff --git a/ext/js/display/query-parser.js b/ext/js/display/query-parser.js index 0acf6ec8..cbcf7cff 100644 --- a/ext/js/display/query-parser.js +++ b/ext/js/display/query-parser.js @@ -208,8 +208,6 @@ class QueryParser extends EventDispatcher {      }      _createParseResult(data) { -        const jp = this._japaneseUtil; -        const readingMode = this._readingMode;          const fragment = document.createDocumentFragment();          for (const term of data) {              const termNode = document.createElement('span'); @@ -218,7 +216,7 @@ class QueryParser extends EventDispatcher {                  if (reading.length === 0) {                      termNode.appendChild(document.createTextNode(text));                  } else { -                    const reading2 = jp.convertReading(text, reading, readingMode); +                    const reading2 = this._convertReading(text, reading);                      termNode.appendChild(this._createSegment(text, reading2));                  }              } @@ -245,4 +243,26 @@ class QueryParser extends EventDispatcher {          return segmentNode;      } + +    _convertReading(term, reading) { +        switch (this._readingMode) { +            case 'hiragana': +                return this._japaneseUtil.convertKatakanaToHiragana(reading); +            case 'katakana': +                return this._japaneseUtil.convertHiraganaToKatakana(reading); +            case 'romaji': +                if (this._japaneseUtil.convertToRomajiSupported()) { +                    if (reading.length > 0) { +                        return this._japaneseUtil.convertToRomaji(reading); +                    } else if (this._japaneseUtil.isStringEntirelyKana(term)) { +                        return this._japaneseUtil.convertToRomaji(term); +                    } +                } +                return reading; +            case 'none': +                return ''; +            default: +                return reading; +        } +    }  } diff --git a/ext/js/language/japanese-util.js b/ext/js/language/japanese-util.js index 7ee726b2..9d7ad0d8 100644 --- a/ext/js/language/japanese-util.js +++ b/ext/js/language/japanese-util.js @@ -277,6 +277,10 @@ const JapaneseUtil = (() => {              return this._getWanakana().toKana(text);          } +        convertToKanaSupported() { +            return this._wanakana !== null; +        } +          convertKatakanaToHiragana(text) {              let result = '';              const offset = (HIRAGANA_CONVERSION_RANGE[0] - KATAKANA_CONVERSION_RANGE[0]); @@ -315,25 +319,8 @@ const JapaneseUtil = (() => {              return wanakana.toRomaji(text);          } -        convertReading(term, reading, readingMode) { -            switch (readingMode) { -                case 'hiragana': -                    return this.convertKatakanaToHiragana(reading); -                case 'katakana': -                    return this.convertHiraganaToKatakana(reading); -                case 'romaji': -                    if (reading.length > 0) { -                        return this.convertToRomaji(reading); -                    } else if (this.isStringEntirelyKana(term)) { -                        return this.convertToRomaji(term); -                    } else { -                        return reading; -                    } -                case 'none': -                    return ''; -                default: -                    return reading; -            } +        convertToRomajiSupported() { +            return this._wanakana !== null;          }          convertNumericToFullWidth(text) { @@ -426,6 +413,10 @@ const JapaneseUtil = (() => {              return result;          } +        convertAlphabeticToKanaSupported() { +            return this._wanakana !== null; +        } +          // Furigana distribution          distributeFurigana(term, reading) { |