diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-03-01 14:06:52 -0500 | 
|---|---|---|
| committer | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-03-28 10:25:57 -0400 | 
| commit | 047efaa3dbe48cde7ea3b96ff6ef0ac07df0ce42 (patch) | |
| tree | 850ee4fd52b83e1054aa87a8fc36eef26ed6dfd8 /ext/bg/js | |
| parent | 9e8a22b08a9ea3e746c4c16f0a06beabd2dd7294 (diff) | |
Add support for returning pitch data from the database
Diffstat (limited to 'ext/bg/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 { |