UNPKG

@zsnout/ithkuil

Version:

A set of tools which can generate and parse romanized Ithkuil text and which can generate Ithkuil script from text and JSON data.

186 lines (185 loc) 4.75 kB
import { affixualAdjunctToIthkuil, formativeToIthkuil, modularAdjunctToIthkuil, parsingAdjunctToIthkuil, referentialToIthkuil, registerAdjunctToIthkuil, suppletiveAdjunctToIthkuil, } from "../generate/index.js"; function strictEqual(a, b) { if (a !== b) { throw new Error("Assertion failed: '" + a + "' !== '" + b + "'."); } } const result = formativeToIthkuil({ type: "UNF/C", root: "c", specification: "CTE", vn: "PCL", slotVAffixes: [ { type: 2, degree: 6, cs: "p" }, { type: 3, degree: 3, cs: "kl" }, ], slotVIIAffixes: [{ ca: { configuration: "MSS" } }], concatenationType: 2, case: "TSP", caseScope: "CCS", }); strictEqual(result, "hwa'cäpoukliollüötëuhrwöë"); const result2 = formativeToIthkuil({ type: "FRM", root: "c", version: "CPT", vn: "3:DET", ca: { affiliation: "COA", configuration: "DPX", extension: "PRX", perspective: "A", essence: "NRM", }, }); strictEqual(result2, "äcarstyúoha"); const result3 = referentialToIthkuil({ referents: ["2p:BEN"], specification: "CSV", essence: "RPV", case: "IDP", case2: "INV", affixes: [{ type: 2, degree: 7, cs: "k" }, { ca: { configuration: "MSS" } }], }); strictEqual(result3, "tiuxpoiküötu'ó"); const result4 = formativeToIthkuil({ type: "UNF/C", root: "l", slotVIIAffixes: [{ referents: ["1m:BEN"], case: "ERG", perspective: "G" }], }); strictEqual(result4, "laloerļa"); const result5 = affixualAdjunctToIthkuil({ affixes: [ { type: 1, degree: 1, cs: "c", }, { type: 1, degree: 3, cs: "c", }, ], appliesToConcatenatedStemOnly: true, }); strictEqual(result5, "cahecái"); const result6 = modularAdjunctToIthkuil({ type: "CONCAT", cn: "CCQ", vn1: "RTR", scope: "ADJACENT", }); strictEqual(result6, "yahmwó"); const result7 = modularAdjunctToIthkuil({ cn: "CCQ", vn1: "2:BEN", vn2: "DUP", vn3: "MNO", }); strictEqual(result7, "iehmöňa"); const result8 = modularAdjunctToIthkuil({ cn: "CCQ", vn1: "2:BEN", vn2: "DUP", scope: "CASE/MOOD", }); strictEqual(result8, "iehmöňé"); const result9 = referentialToIthkuil({ type: "CAR", specification: "CSV", essence: "RPV", case: "IDP", case2: "INV", affixes: [{ type: 2, degree: 7, cs: "k" }, { ca: { configuration: "MSS" } }], }); strictEqual(result9, "ahliuxpoiküötu'ó"); const result10 = parsingAdjunctToIthkuil("monosyllabic"); strictEqual(result10, "a'"); const result11 = registerAdjunctToIthkuil("CGT"); strictEqual(result11[0], "hu"); strictEqual(result11[1], "hui"); const result12 = suppletiveAdjunctToIthkuil({ type: "NAM", case: "AVR", }); strictEqual(result12, "hnoe"); const result13 = formativeToIthkuil({ type: "FRM", root: ["1m:BEN", "2m:DET"], ca: { essence: "RPV", }, context: "FNC", vn: "SLF:BEN", }); strictEqual(result13, "aežraitļíöha"); const result14 = formativeToIthkuil({ type: "UNF/C", root: { cs: "c", degree: 3 }, slotVIIAffixes: [{ referents: ["1m:DET"], case: "IND" }], vn: "CNT", }); strictEqual(result14, "ëiceloařouwa"); const result15 = formativeToIthkuil({ type: "UNF/C", root: "l", shortcut: true, version: "CPT", stem: 2, slotVAffixes: [{ type: 1, degree: 4, cs: "r" }], }); strictEqual(result15, "wili'ra"); const result16 = formativeToIthkuil({ type: "FRM", root: "l", shortcut: true, slotVAffixes: [{ cs: "c", degree: 3, type: 1 }], slotVIIAffixes: [{ cs: "k", degree: 8, type: 2 }], }); strictEqual(result16, "walé'ciuka"); const result17 = formativeToIthkuil({ type: "UNF/C", root: "rr", slotVAffixes: [ { cs: "k", degree: 1, type: 1 }, { cs: "k", degree: 3, type: 1 }, ], }); strictEqual(result17, "a'rrakakella"); const result18 = formativeToIthkuil({ type: "FRM", shortcut: true, root: "rr", caseScope: "CCA", }); strictEqual(result18, "árrahla"); const result19 = formativeToIthkuil({ type: "FRM", shortcut: false, root: "k", }); strictEqual(result19, "ákala"); const result20 = formativeToIthkuil({ type: "FRM", shortcut: false, root: "lk", }); strictEqual(result20, "álkala"); const result21 = formativeToIthkuil({ type: "FRM", shortcut: false, root: "kl", }); strictEqual(result21, "áklala"); const result22 = suppletiveAdjunctToIthkuil({ type: "NAM", case: "STM", }); strictEqual(result22, "hnëi"); const result23 = formativeToIthkuil({ type: "FRM", root: "l", vn: "PAU", }); strictEqual(result23, "láleiwa");