@notatki/core
Version:
A collection of tools for creating and syncing Anki notes from simple text files.
125 lines • 3.33 kB
JavaScript
export class ModelMap {
static basic = {
name: "Basic",
id: 1607392319,
cloze: false,
fields: [
{ name: "Front", required: true },
{ name: "Back", required: true },
],
cards: [
{
name: "Card 1",
front: "{{Front}}",
back: "{{FrontSide}}<hr>{{Back}}",
},
],
styling: "",
};
static basicAndReversedCard = {
name: "Basic (and reversed card)",
id: 1607392320,
cloze: false,
fields: [
{ name: "Front", required: true },
{ name: "Back", required: true },
],
cards: [
{
name: "Card 1",
front: "{{Front}}",
back: "{{FrontSide}}<hr>{{Back}}",
},
{
name: "Card 2",
front: "{{Back}}",
back: "{{FrontSide}}<hr>{{Front}}",
},
],
styling: "",
};
static basicOptionalReversedCard = {
name: "Basic (optional reversed card)",
id: 1607392321,
cloze: false,
fields: [
{ name: "Front", required: true },
{ name: "Back", required: true },
{ name: "Add Reverse", required: false },
],
cards: [
{
name: "Card 1",
front: "{{Front}}",
back: "{{FrontSide}}<hr>{{Back}}",
},
{
name: "Card 2",
front: "{{#Add Reverse}}{{Back}}{{/Add Reverse}}",
back: "{{FrontSide}}<hr>{{Front}}",
},
],
styling: "",
};
static basicTypeInAnswer = {
name: "Basic (type in the answer)",
id: 1607392322,
cloze: false,
fields: [
{ name: "Front", required: true },
{ name: "Back", required: true },
],
cards: [
{
name: "Card 1",
front: "{{Front}}<br>{{type:Back}}",
back: "{{Front}}<hr>{{Back}}",
},
],
styling: "",
};
static cloze = {
name: "Cloze",
id: 1607392323,
cloze: true,
fields: [
{ name: "Text", required: true },
{ name: "Back Extra", required: false },
],
cards: [
{
name: "Cloze",
front: "{{cloze:Text}}",
back: "{{cloze:Text}}<br>{{Back Extra}}",
},
],
styling: "",
};
static internal = [
ModelMap.basic,
ModelMap.basicAndReversedCard,
ModelMap.basicOptionalReversedCard,
ModelMap.basicTypeInAnswer,
ModelMap.cloze,
];
#map = new Map();
constructor(initial = ModelMap.internal) {
for (const model of initial) {
this.add(model);
}
}
[Symbol.iterator]() {
return this.#map.values();
}
add(model) {
this.#map.set(model.name.toLowerCase(), model);
return this;
}
has(name) {
return this.#map.has(name.toLowerCase());
}
get(name) {
return this.#map.get(name.toLowerCase()) ?? null;
}
}
//# sourceMappingURL=model.js.map