diff options
Diffstat (limited to 'ext/bg/js/anki-note-builder.js')
-rw-r--r-- | ext/bg/js/anki-note-builder.js | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/ext/bg/js/anki-note-builder.js b/ext/bg/js/anki-note-builder.js index 7fe8962a..2405543e 100644 --- a/ext/bg/js/anki-note-builder.js +++ b/ext/bg/js/anki-note-builder.js @@ -15,6 +15,10 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ +/* global + * DictionaryDataUtil + */ + class AnkiNoteBuilder { constructor({anki, audioSystem, renderTemplate}) { this._anki = anki; @@ -39,9 +43,10 @@ class AnkiNoteBuilder { } }; + const data = this.createNoteData(definition, mode, context, options); const formattedFieldValuePromises = []; for (const [, fieldValue] of modeOptionsFieldEntries) { - const formattedFieldValuePromise = this.formatField(fieldValue, definition, mode, context, options, templates, null); + const formattedFieldValuePromise = this.formatField(fieldValue, data, templates, null); formattedFieldValuePromises.push(formattedFieldValuePromise); } @@ -55,10 +60,14 @@ class AnkiNoteBuilder { return note; } - async formatField(field, definition, mode, context, options, templates, errors=null) { - const data = { + createNoteData(definition, mode, context, options) { + const pitches = DictionaryDataUtil.getPitchAccentInfos(definition); + const pitchCount = pitches.reduce((i, v) => i + v.pitches.length, 0); + return { marker: null, definition, + pitches, + pitchCount, group: options.general.resultOutputMode === 'group', merge: options.general.resultOutputMode === 'merge', modeTermKanji: mode === 'term-kanji', @@ -67,6 +76,9 @@ class AnkiNoteBuilder { compactGlossaries: options.general.compactGlossaries, context }; + } + + async formatField(field, data, templates, errors=null) { const pattern = /\{([\w-]+)\}/g; return await AnkiNoteBuilder.stringReplaceAsync(field, pattern, async (g0, marker) => { data.marker = marker; |