prototype subdeck from Kanji
This commit is contained in:
1 parent
1c362c0c1c
commit
f427a8e148
2 files changed
+56
-18
No files matched your search
+28
-12
@@ -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() {
|
||||
|
||||
Reference in new issue
Block a user