-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathinvalidca.ts
58 lines (54 loc) · 1.49 KB
/
invalidca.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import {
ALL_AFFILIATIONS,
ALL_CONFIGURATIONS,
ALL_ESSENCES,
ALL_EXTENSIONS,
ALL_PERSPECTIVES,
attemptGemination,
caToIthkuil,
geminatedCAToIthkuil,
isLegalConsonantForm,
type CA,
} from "@zsnout/ithkuil/generate/index.js"
const allCAs: CA[] = ALL_AFFILIATIONS.flatMap((affiliation) =>
ALL_CONFIGURATIONS.flatMap((configuration) =>
ALL_EXTENSIONS.flatMap((extension) =>
ALL_PERSPECTIVES.flatMap((perspective) =>
ALL_ESSENCES.map((essence) => ({
affiliation,
configuration,
extension,
perspective,
essence,
})),
),
),
),
)
const forms = allCAs.map((ca) => {
const ungem = caToIthkuil(ca)
const attempt = attemptGemination(ungem)
const gem = geminatedCAToIthkuil(ca)
return {
ca,
ungem,
gem,
ok: {
diff: attempt != ungem,
ungem: isLegalConsonantForm(ungem),
gem: isLegalConsonantForm(gem),
},
}
})
function dump({ ca, gem, ok, ungem }: (typeof forms)[number]) {
let label = `${ca.affiliation}.${ca.configuration}.${ca.extension}.${ca.perspective}.${ca.essence}`
label += ` ${ok.ungem ? "✅" : "❌"}${ungem.padEnd(5)}`
label += ` ${ok.diff && ok.gem ? "✅" : "❌"}${gem}`
console.log(label)
}
console.log("<<INVALID UNGEMINATED CA FORMS>>\n")
forms.filter((x) => !x.ok.ungem).forEach(dump)
console.log("\n<<ALL ERRORS>>\n")
forms.filter((x) => !(x.ok.diff && x.ok.gem && x.ok.ungem)).forEach(dump)
console.log("\n<<ALL CA VALUES>>\n")
forms.forEach(dump)