diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-04-05 12:51:27 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-05 12:51:27 -0400 |
commit | f439d12718247411ccd0575af0d1de82aa22564a (patch) | |
tree | 2989cc53af496a9d9b84134d7fd761300a8ddee4 /ext/bg/js/translator.js | |
parent | 167e83c14794437e43b7df2017efab1e7e060a99 (diff) | |
parent | 938b69646820482a958cd8e0a65a03400ee6a7ac (diff) |
Merge pull request #385 from toasted-nutbread/pitch-accents
Pitch accents
Diffstat (limited to 'ext/bg/js/translator.js')
-rw-r--r-- | ext/bg/js/translator.js | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/ext/bg/js/translator.js b/ext/bg/js/translator.js index 6f43f7b0..f16889ce 100644 --- a/ext/bg/js/translator.js +++ b/ext/bg/js/translator.js @@ -490,6 +490,7 @@ class Translator { // New data term.frequencies = []; + term.pitches = []; } const metas = await this.database.findTermMetaBulk(expressionsUnique, dictionaries); @@ -500,6 +501,13 @@ class Translator { term.frequencies.push({expression, frequency: data, dictionary}); } break; + case 'pitch': + for (const term of termsUnique[index]) { + const pitchData = await this.getPitchData(expression, data, dictionary, term); + if (pitchData === null) { continue; } + term.pitches.push(pitchData); + } + break; } } } @@ -583,6 +591,20 @@ class Translator { return tagMetaList; } + async getPitchData(expression, data, dictionary, term) { + const reading = data.reading; + const termReading = term.reading || expression; + if (reading !== termReading) { return null; } + + const pitches = []; + for (let {position, tags} of data.pitches) { + tags = Array.isArray(tags) ? await this.getTagMetaList(tags, dictionary) : []; + pitches.push({position, tags}); + } + + return {reading, pitches, dictionary}; + } + static createExpression(expression, reading, termTags=null, termFrequency=null) { const furiganaSegments = jp.distributeFurigana(expression, reading); return { |