mirror of
https://github.com/CharaChorder/DeviceManager.git
synced 2026-01-19 08:22:53 +00:00
32 lines
884 B
TypeScript
32 lines
884 B
TypeScript
import { KEYMAP_IDS } from "$lib/serial/keymap-codes";
|
|
import type { CharaChordFile } from "$lib/share/chara-file";
|
|
|
|
const SPECIAL_KEYS = new Map<string, string>([[" ", "SPACE"]]);
|
|
|
|
export function csvChordsToJson(csv: string): CharaChordFile {
|
|
return {
|
|
charaVersion: 1,
|
|
type: "chords",
|
|
chords: csv
|
|
.trim()
|
|
.split("\n")
|
|
.map((line) => {
|
|
const [input, output] = line.split(/,(?=[^,]*$)/, 2);
|
|
return [
|
|
input!
|
|
.split("+")
|
|
.map((it) => KEYMAP_IDS.get(it.trim())?.code ?? 0)
|
|
.sort((a, b) => a - b),
|
|
output!
|
|
.trim()
|
|
.split("")
|
|
.map((it) => KEYMAP_IDS.get(SPECIAL_KEYS.get(it) ?? it)?.code ?? 0),
|
|
];
|
|
}),
|
|
};
|
|
}
|
|
|
|
export function isCsvChords(csv: string): boolean {
|
|
return /^([^+]+( *\+ *[^+]+)* *, *[^+, ]+ *(\n|(?=$)))+$/.test(csv);
|
|
}
|