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.

65 lines (64 loc) 2.43 kB
import { deepFreeze } from "../helpers/deep-freeze.js"; import { fillDefaults } from "../helpers/fill-defaults.js"; /** The default referential (1m:NEU, M, THM, NRM). */ export const DEFAULT_REFERENTIAL = /* @__PURE__ */ deepFreeze({ referents: ["1m:NEU"], perspective: "M", case: "THM", essence: "NRM", }); /** The default suppletive referential (CAR, THM, NRM). */ export const DEFAULT_SUPPLETIVE_REFERENTIAL = /* @__PURE__ */ deepFreeze({ type: "CAR", case: "THM", essence: "NRM", }); /** * Fills default values into empty slots of a referential/ * * @param referential The referential to be filled. * @returns A complete referential, with all default slots filled. */ export function fillInDefaultReferentialSlots(referential) { if (referential.perspective2 || referential.referents2) { if (referential.specification || (referential.affixes && referential.affixes.length)) { throw new Error("A referential cannot specify a second referent/perspective and a specification or affix at the same time.", { cause: referential }); } return referential.type ? fillDefaults({ ...DEFAULT_SUPPLETIVE_REFERENTIAL, perspective2: "M", // @ts-ignore referents2: "1m:NEU", }, referential) : fillDefaults({ ...DEFAULT_REFERENTIAL, perspective2: "M", // @ts-ignore referents2: "1m:NEU", }, referential); } if (referential.specification || (referential.affixes && referential.affixes.length)) { if (referential.perspective2 || referential.referents2) { throw new Error("A referential cannot specify a second referent/perspective and a specification or affix at the same time.", { cause: referential }); } return referential.type ? fillDefaults({ ...DEFAULT_SUPPLETIVE_REFERENTIAL, specification: "BSC", affixes: [], }, referential) : fillDefaults({ ...DEFAULT_REFERENTIAL, specification: "BSC", affixes: [], }, referential); } return referential.type ? fillDefaults(DEFAULT_SUPPLETIVE_REFERENTIAL, referential) : fillDefaults(DEFAULT_REFERENTIAL, referential); }