Treat null templates as the default value
This commit is contained in:
parent
024f969bfd
commit
3033fea31e
@ -321,6 +321,7 @@ class Backend {
|
||||
|
||||
async _onApiDefinitionAdd({definition, mode, context, optionsContext}) {
|
||||
const options = await this.getOptions(optionsContext);
|
||||
const templates = Backend._getTemplates(options);
|
||||
|
||||
if (mode !== 'kanji') {
|
||||
await audioInject(
|
||||
@ -339,19 +340,20 @@ class Backend {
|
||||
);
|
||||
}
|
||||
|
||||
const note = await dictNoteFormat(definition, mode, options);
|
||||
const note = await dictNoteFormat(definition, mode, options, templates);
|
||||
return this.anki.addNote(note);
|
||||
}
|
||||
|
||||
async _onApiDefinitionsAddable({definitions, modes, optionsContext}) {
|
||||
const options = await this.getOptions(optionsContext);
|
||||
const templates = Backend._getTemplates(options);
|
||||
const states = [];
|
||||
|
||||
try {
|
||||
const notes = [];
|
||||
for (const definition of definitions) {
|
||||
for (const mode of modes) {
|
||||
const note = await dictNoteFormat(definition, mode, options);
|
||||
const note = await dictNoteFormat(definition, mode, options, templates);
|
||||
notes.push(note);
|
||||
}
|
||||
}
|
||||
@ -672,6 +674,11 @@ class Backend {
|
||||
return 'chrome';
|
||||
}
|
||||
}
|
||||
|
||||
static _getTemplates(options) {
|
||||
const templates = options.anki.fieldTemplates;
|
||||
return typeof templates === 'string' ? templates : profileOptionsGetDefaultFieldTemplates();
|
||||
}
|
||||
}
|
||||
|
||||
Backend._messageHandlers = new Map([
|
||||
|
@ -310,7 +310,7 @@ function dictFieldSplit(field) {
|
||||
return field.length === 0 ? [] : field.split(' ');
|
||||
}
|
||||
|
||||
async function dictFieldFormat(field, definition, mode, options, exceptions) {
|
||||
async function dictFieldFormat(field, definition, mode, options, templates, exceptions) {
|
||||
const data = {
|
||||
marker: null,
|
||||
definition,
|
||||
@ -329,7 +329,7 @@ async function dictFieldFormat(field, definition, mode, options, exceptions) {
|
||||
}
|
||||
data.marker = marker;
|
||||
try {
|
||||
return await apiTemplateRender(options.anki.fieldTemplates, data, true);
|
||||
return await apiTemplateRender(templates, data, true);
|
||||
} catch (e) {
|
||||
if (exceptions) { exceptions.push(e); }
|
||||
return `{${marker}-render-error}`;
|
||||
@ -357,7 +357,7 @@ dictFieldFormat.markers = new Set([
|
||||
'url'
|
||||
]);
|
||||
|
||||
async function dictNoteFormat(definition, mode, options) {
|
||||
async function dictNoteFormat(definition, mode, options, templates) {
|
||||
const note = {fields: {}, tags: options.anki.tags};
|
||||
let fields = [];
|
||||
|
||||
@ -391,7 +391,7 @@ async function dictNoteFormat(definition, mode, options) {
|
||||
}
|
||||
|
||||
for (const name in fields) {
|
||||
note.fields[name] = await dictFieldFormat(fields[name], definition, mode, options);
|
||||
note.fields[name] = await dictFieldFormat(fields[name], definition, mode, options, templates);
|
||||
}
|
||||
|
||||
return note;
|
||||
|
@ -326,7 +326,7 @@ function profileOptionsCreateDefaults() {
|
||||
screenshot: {format: 'png', quality: 92},
|
||||
terms: {deck: '', model: '', fields: {}},
|
||||
kanji: {deck: '', model: '', fields: {}},
|
||||
fieldTemplates: profileOptionsGetDefaultFieldTemplates()
|
||||
fieldTemplates: null
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -73,7 +73,9 @@ async function ankiTemplatesValidate(infoNode, field, mode, showSuccessResult, i
|
||||
const definition = await ankiTemplatesValidateGetDefinition(text, optionsContext);
|
||||
if (definition !== null) {
|
||||
const options = await apiOptionsGet(optionsContext);
|
||||
result = await dictFieldFormat(field, definition, mode, options, exceptions);
|
||||
let templates = options.anki.fieldTemplates;
|
||||
if (typeof templates !== 'string') { templates = profileOptionsGetDefaultFieldTemplates(); }
|
||||
result = await dictFieldFormat(field, definition, mode, options, templates, exceptions);
|
||||
}
|
||||
} catch (e) {
|
||||
exceptions.push(e);
|
||||
|
@ -145,7 +145,11 @@ async function formWrite(options) {
|
||||
$('#interface-server').val(options.anki.server);
|
||||
$('#screenshot-format').val(options.anki.screenshot.format);
|
||||
$('#screenshot-quality').val(options.anki.screenshot.quality);
|
||||
$('#field-templates').val(options.anki.fieldTemplates);
|
||||
|
||||
let templates = options.anki.fieldTemplates;
|
||||
if (typeof templates !== 'string') { templates = profileOptionsGetDefaultFieldTemplates(); }
|
||||
|
||||
$('#field-templates').val(templates);
|
||||
|
||||
onAnkiTemplatesValidateCompile();
|
||||
await onAnkiOptionsChanged(options);
|
||||
@ -166,7 +170,9 @@ function formUpdateVisibility(options) {
|
||||
|
||||
if (options.general.debugInfo) {
|
||||
const temp = utilIsolate(options);
|
||||
temp.anki.fieldTemplates = '...';
|
||||
if (typeof temp.anki.fieldTemplates === 'string') {
|
||||
temp.anki.fieldTemplates = '...';
|
||||
}
|
||||
const text = JSON.stringify(temp, null, 4);
|
||||
$('#debug').text(text);
|
||||
}
|
||||
|
@ -88,6 +88,8 @@ function utilSetDifference(setA, setB) {
|
||||
function utilStringHashCode(string) {
|
||||
let hashCode = 0;
|
||||
|
||||
if (typeof string !== 'string') { return hashCode; }
|
||||
|
||||
for (let i = 0, charCode = string.charCodeAt(i); i < string.length; charCode = string.charCodeAt(++i)) {
|
||||
hashCode = ((hashCode << 5) - hashCode) + charCode;
|
||||
hashCode |= 0;
|
||||
|
Loading…
Reference in New Issue
Block a user