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