Skip to content

Commit

Permalink
Update the functions for upgrading anki templates to be more reusable (
Browse files Browse the repository at this point in the history
  • Loading branch information
toasted-nutbread authored Sep 6, 2020
1 parent 115afb6 commit 7a59ca2
Showing 1 changed file with 42 additions and 38 deletions.
80 changes: 42 additions & 38 deletions ext/bg/js/options.js
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,47 @@ class OptionsUtil {

// Private

static async _addFieldTemplatesToOptions(options, additionSourceUrl) {
let addition = null;
for (const {options: profileOptions} of options.profiles) {
const fieldTemplates = profileOptions.anki.fieldTemplates;
if (fieldTemplates !== null) {
if (addition === null) {
addition = await this._readFile(additionSourceUrl);
}
profileOptions.anki.fieldTemplates = this._addFieldTemplatesBeforeEnd(fieldTemplates, addition);
}
}
}

static async _addFieldTemplatesBeforeEnd(fieldTemplates, addition) {
const pattern = /[ \t]*\{\{~?>\s*\(\s*lookup\s*\.\s*"marker"\s*\)\s*~?\}\}/;
const newline = '\n';
let replaced = false;
fieldTemplates = fieldTemplates.replace(pattern, (g0) => {
replaced = true;
return `${addition}${newline}${g0}`;
});
if (!replaced) {
fieldTemplates += newline;
fieldTemplates += addition;
}
return fieldTemplates;
}

static async _readFile(url) {
url = chrome.runtime.getURL(url);
const response = await fetch(url, {
method: 'GET',
mode: 'no-cors',
cache: 'default',
credentials: 'omit',
redirect: 'follow',
referrerPolicy: 'no-referrer'
});
return await response.text();
}

static _getStringHashCode(string) {
let hashCode = 0;

Expand Down Expand Up @@ -423,47 +464,10 @@ class OptionsUtil {
static async _updateVersion3(options) {
// Version 3 changes:
// Pitch accent Anki field templates added.
let addition = null;
for (const {options: profileOptions} of options.profiles) {
const fieldTemplates = profileOptions.anki.fieldTemplates;
if (fieldTemplates !== null) {
if (addition === null) {
addition = await this._updateVersion3GetAnkiFieldTemplates();
}
profileOptions.anki.fieldTemplates = this._addFieldTemplatesBeforeEnd(fieldTemplates, addition);
}
}
await this._addFieldTemplatesToOptions(options, '/bg/data/anki-field-templates-upgrade-v2.handlebars');
return options;
}

static async _updateVersion3GetAnkiFieldTemplates() {
const url = chrome.runtime.getURL('/bg/data/anki-field-templates-upgrade-v2.handlebars');
const response = await fetch(url, {
method: 'GET',
mode: 'no-cors',
cache: 'default',
credentials: 'omit',
redirect: 'follow',
referrerPolicy: 'no-referrer'
});
return await response.text();
}

static async _addFieldTemplatesBeforeEnd(fieldTemplates, addition) {
const pattern = /[ \t]*\{\{~?>\s*\(\s*lookup\s*\.\s*"marker"\s*\)\s*~?\}\}/;
const newline = '\n';
let replaced = false;
fieldTemplates = fieldTemplates.replace(pattern, (g0) => {
replaced = true;
return `${addition}${newline}${g0}`;
});
if (!replaced) {
fieldTemplates += newline;
fieldTemplates += addition;
}
return fieldTemplates;
}

static _updateVersion4(options) {
// Version 4 changes:
// Options conditions converted to string representations.
Expand Down

0 comments on commit 7a59ca2

Please sign in to comment.