diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-11-29 13:09:02 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-29 13:09:02 -0500 |
commit | 34451ebf7122a2a5d140696215411abfb0dfe188 (patch) | |
tree | e9eddb52f133269853059372045dea510e8d02dc /ext/bg/js | |
parent | a8cd03cbecf4015483ce3479e589e65ce7eece45 (diff) |
JapaneseUtil normalization (#1076)
* Use JapaneseUtil as a class which is manually instantiated
* Use alias function for toKana
Diffstat (limited to 'ext/bg/js')
-rw-r--r-- | ext/bg/js/audio-downloader.js | 6 | ||||
-rw-r--r-- | ext/bg/js/backend.js | 13 | ||||
-rw-r--r-- | ext/bg/js/clipboard-monitor.js | 11 | ||||
-rw-r--r-- | ext/bg/js/search-main.js | 5 | ||||
-rw-r--r-- | ext/bg/js/search.js | 7 | ||||
-rw-r--r-- | ext/bg/js/settings/pitch-accents-preview-main.js | 5 | ||||
-rw-r--r-- | ext/bg/js/template-renderer-frame-main.js | 4 | ||||
-rw-r--r-- | ext/bg/js/template-renderer.js | 13 | ||||
-rw-r--r-- | ext/bg/js/translator.js | 8 |
9 files changed, 45 insertions, 27 deletions
diff --git a/ext/bg/js/audio-downloader.js b/ext/bg/js/audio-downloader.js index 8dd5d10f..1a3428e1 100644 --- a/ext/bg/js/audio-downloader.js +++ b/ext/bg/js/audio-downloader.js @@ -17,11 +17,11 @@ /* global * SimpleDOMParser - * jp */ class AudioDownloader { - constructor({requestBuilder}) { + constructor({japaneseUtil, requestBuilder}) { + this._japaneseUtil = japaneseUtil; this._requestBuilder = requestBuilder; this._getInfoHandlers = new Map([ ['jpod101', this._getInfoJpod101.bind(this)], @@ -89,7 +89,7 @@ class AudioDownloader { let kana = reading; let kanji = expression; - if (!kana && jp.isStringEntirelyKana(kanji)) { + if (!kana && this._japaneseUtil.isStringEntirelyKana(kanji)) { kana = kanji; kanji = null; } diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js index 6ff4e3f7..f9c308e5 100644 --- a/ext/bg/js/backend.js +++ b/ext/bg/js/backend.js @@ -22,6 +22,7 @@ * ClipboardReader * DictionaryDatabase * Environment + * JapaneseUtil * JsonSchemaValidator * Mecab * MediaUtility @@ -30,14 +31,18 @@ * ProfileConditions * RequestBuilder * Translator - * jp + * wanakana */ class Backend { constructor() { + this._japaneseUtil = new JapaneseUtil(wanakana); this._environment = new Environment(); this._dictionaryDatabase = new DictionaryDatabase(); - this._translator = new Translator(this._dictionaryDatabase); + this._translator = new Translator({ + japaneseUtil: this._japaneseUtil, + database: this._dictionaryDatabase + }); this._anki = new AnkiConnect(); this._mecab = new Mecab(); this._mediaUtility = new MediaUtility(); @@ -48,6 +53,7 @@ class Backend { mediaUtility: this._mediaUtility }); this._clipboardMonitor = new ClipboardMonitor({ + japaneseUtil: this._japaneseUtil, clipboardReader: this._clipboardReader }); this._options = null; @@ -57,6 +63,7 @@ class Backend { this._defaultAnkiFieldTemplates = null; this._requestBuilder = new RequestBuilder(); this._audioDownloader = new AudioDownloader({ + japaneseUtil: this._japaneseUtil, requestBuilder: this._requestBuilder }); this._optionsUtil = new OptionsUtil(); @@ -952,6 +959,7 @@ class Backend { } async _textParseScanning(text, options) { + const jp = this._japaneseUtil; const {scanning: {length: scanningLength}, parsing: {readingMode}} = options; const findTermsOptions = this._getTranslatorFindTermsOptions({wildcard: null}, options); const results = []; @@ -981,6 +989,7 @@ class Backend { } async _textParseMecab(text, options) { + const jp = this._japaneseUtil; const {parsing: {readingMode}} = options; const results = []; const rawResults = await this._mecab.parseText(text); diff --git a/ext/bg/js/clipboard-monitor.js b/ext/bg/js/clipboard-monitor.js index 4d980e11..5be6d373 100644 --- a/ext/bg/js/clipboard-monitor.js +++ b/ext/bg/js/clipboard-monitor.js @@ -15,18 +15,15 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -/* global - * jp - */ - class ClipboardMonitor extends EventDispatcher { - constructor({clipboardReader}) { + constructor({japaneseUtil, clipboardReader}) { super(); + this._japaneseUtil = japaneseUtil; + this._clipboardReader = clipboardReader; this._timerId = null; this._timerToken = null; this._interval = 250; this._previousText = null; - this._clipboardReader = clipboardReader; } start() { @@ -53,7 +50,7 @@ class ClipboardMonitor extends EventDispatcher { text !== this._previousText ) { this._previousText = text; - if (jp.isStringPartiallyJapanese(text)) { + if (this._japaneseUtil.isStringPartiallyJapanese(text)) { this.trigger('change', {text}); } } diff --git a/ext/bg/js/search-main.js b/ext/bg/js/search-main.js index 07130631..f98028b3 100644 --- a/ext/bg/js/search-main.js +++ b/ext/bg/js/search-main.js @@ -17,7 +17,9 @@ /* global * DisplaySearch + * JapaneseUtil * api + * wanakana */ (async () => { @@ -25,7 +27,8 @@ api.forwardLogsToBackend(); await yomichan.backendReady(); - const displaySearch = new DisplaySearch(); + const japaneseUtil = new JapaneseUtil(wanakana); + const displaySearch = new DisplaySearch(japaneseUtil); await displaySearch.prepare(); document.documentElement.dataset.loaded = 'true'; diff --git a/ext/bg/js/search.js b/ext/bg/js/search.js index effa31bc..d99e76e0 100644 --- a/ext/bg/js/search.js +++ b/ext/bg/js/search.js @@ -24,8 +24,8 @@ */ class DisplaySearch extends Display { - constructor() { - super('search'); + constructor(japaneseUtil) { + super('search', japaneseUtil); this._searchButton = document.querySelector('#search-button'); this._queryInput = document.querySelector('#search-textbox'); this._introElement = document.querySelector('#intro'); @@ -38,6 +38,7 @@ class DisplaySearch extends Display { this._introAnimationTimer = null; this._clipboardMonitorEnabled = false; this._clipboardMonitor = new ClipboardMonitor({ + japaneseUtil, clipboardReader: { getText: async () => (await api.clipboardGet()) } @@ -129,7 +130,7 @@ class DisplaySearch extends Display { postProcessQuery(query) { if (this._wanakanaEnabled) { try { - query = wanakana.toKana(query); + query = this._japaneseUtil.convertToKana(query); } catch (e) { // NOP } diff --git a/ext/bg/js/settings/pitch-accents-preview-main.js b/ext/bg/js/settings/pitch-accents-preview-main.js index 59e5b194..23814089 100644 --- a/ext/bg/js/settings/pitch-accents-preview-main.js +++ b/ext/bg/js/settings/pitch-accents-preview-main.js @@ -21,7 +21,10 @@ (async () => { try { - const displayGenerator = new DisplayGenerator({mediaLoader: null}); + const displayGenerator = new DisplayGenerator({ + japaneseUtil: null, + mediaLoader: null + }); await displayGenerator.prepare(); displayGenerator.preparePitchAccents(); } catch (e) { diff --git a/ext/bg/js/template-renderer-frame-main.js b/ext/bg/js/template-renderer-frame-main.js index 7d3e1493..171028a3 100644 --- a/ext/bg/js/template-renderer-frame-main.js +++ b/ext/bg/js/template-renderer-frame-main.js @@ -16,12 +16,14 @@ */ /* globals + * JapaneseUtil * TemplateRenderer * TemplateRendererFrameApi */ (() => { - const templateRenderer = new TemplateRenderer(); + const japaneseUtil = new JapaneseUtil(null); + const templateRenderer = new TemplateRenderer(japaneseUtil); const api = new TemplateRendererFrameApi(templateRenderer); api.prepare(); })(); diff --git a/ext/bg/js/template-renderer.js b/ext/bg/js/template-renderer.js index c1995acd..6a76a4e6 100644 --- a/ext/bg/js/template-renderer.js +++ b/ext/bg/js/template-renderer.js @@ -17,11 +17,11 @@ /* global * Handlebars - * jp */ class TemplateRenderer { - constructor() { + constructor(japaneseUtil) { + this._japaneseUtil = japaneseUtil; this._cache = new Map(); this._cacheMaxSize = 5; this._helpersRegistered = false; @@ -119,7 +119,7 @@ class TemplateRenderer { _furigana(context, ...args) { const {expression, reading} = this._getFuriganaExpressionAndReading(context, ...args); - const segs = jp.distributeFurigana(expression, reading); + const segs = this._japaneseUtil.distributeFurigana(expression, reading); let result = ''; for (const seg of segs) { @@ -135,7 +135,7 @@ class TemplateRenderer { _furiganaPlain(context, ...args) { const {expression, reading} = this._getFuriganaExpressionAndReading(context, ...args); - const segs = jp.distributeFurigana(expression, reading); + const segs = this._japaneseUtil.distributeFurigana(expression, reading); let result = ''; for (const seg of segs) { @@ -161,6 +161,7 @@ class TemplateRenderer { } _kanjiLinks(context, options) { + const jp = this._japaneseUtil; let result = ''; for (const c of options.fn(context)) { if (jp.isCodePointKanji(c.codePointAt(0))) { @@ -385,10 +386,10 @@ class TemplateRenderer { } _isMoraPitchHigh(context, index, position) { - return jp.isMoraPitchHigh(index, position); + return this._japaneseUtil.isMoraPitchHigh(index, position); } _getKanaMorae(context, text) { - return jp.getKanaMorae(`${text}`); + return this._japaneseUtil.getKanaMorae(`${text}`); } } diff --git a/ext/bg/js/translator.js b/ext/bg/js/translator.js index 45d7f17a..f577d0e1 100644 --- a/ext/bg/js/translator.js +++ b/ext/bg/js/translator.js @@ -18,7 +18,6 @@ /* global * Deinflector * TextSourceMap - * jp */ /** @@ -29,7 +28,8 @@ class Translator { * Creates a new Translator instance. * @param database An instance of DictionaryDatabase. */ - constructor(database) { + constructor({japaneseUtil, database}) { + this._japaneseUtil = japaneseUtil; this._database = database; this._deinflector = null; this._tagCache = new Map(); @@ -318,6 +318,7 @@ class Translator { collapseEmphaticOptions ]; + const jp = this._japaneseUtil; const deinflections = []; const used = new Set(); for (const [halfWidth, numeric, alphabetic, katakana, hiragana, [collapseEmphatic, collapseEmphaticFull]] of this._getArrayVariants(textOptionVariantArray)) { @@ -846,6 +847,7 @@ class Translator { return text; } + const jp = this._japaneseUtil; let newText = ''; for (const c of text) { if (!jp.isCodePointJapanese(c.codePointAt(0))) { @@ -1031,7 +1033,7 @@ class Translator { this._sortTags(definitionTagsExpanded); this._sortTags(termTagsExpanded); - const furiganaSegments = jp.distributeFurigana(expression, reading); + const furiganaSegments = this._japaneseUtil.distributeFurigana(expression, reading); const termDetailsList = [this._createTermDetails(sourceTerm, expression, reading, furiganaSegments, termTagsExpanded)]; const sourceTermExactMatchCount = (sourceTerm === expression ? 1 : 0); |