prototype subdeck from Kanji

This commit is contained in:
polv committed 2022-04-27 13:20:49 +07:00
1 parent 1c362c0c1c
commit f427a8e148
2 files changed
+56 -18

No files matched your search

+28 -12
View File
@@ -63,23 +63,39 @@ async function makeWaniKaniKanjiLevels(opts: { cache?: boolean } = {}) {
export async function makeKanjiLevels() {
const wk = await makeWaniKaniKanjiLevels({ cache: true });
const wkKanji = new Set(
Object.values(wk).flatMap((v) => Object.values(v).flat()),
);
const beyond = yaml.load(
readFileSync('assets/beyond.yaml', 'utf-8'),
) as ILevelMap;
for (const [cat, map] of Object.entries(beyond)) {
const catMap = wk[cat] || {};
Object.entries(map).map(([levelString, ks]) => {
catMap[levelString] = ks.filter((k) => !wkKanji.has(k));
});
wk[cat] = catMap;
}
const kanjiToLevel = new Map<
string,
{
level: number;
deckName: string;
}
>();
return wk;
const setKanjiToLevel = (lvMap: ILevelMap) => {
Object.entries(lvMap).map(([cat, map]) => {
Object.entries(map).map(([levelString, ks]) => {
const level = Number(levelString);
ks.map((k) => {
let prev = kanjiToLevel.get(k);
if (!prev || prev.level > level) {
prev = {
level,
deckName: cat + '::' + levelString,
};
kanjiToLevel.set(k, prev);
}
});
});
});
};
setKanjiToLevel(wk);
setKanjiToLevel(beyond);
return kanjiToLevel;
}
export async function repairBeyond() {