@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.
543 lines (542 loc) • 23.4 kB
JavaScript
import { ZodType, boolean, instanceof as instanceOf, literal, object, oboolean, string, undefined, union, } from "zod";
import { ALL_AFFIXUAL_ADJUNCT_SCOPES } from "./generate/adjunct/affixual/scope.js";
import { ALL_BIAS_ADJUNCTS } from "./generate/adjunct/bias.js";
import { ALL_MODULAR_ADJUNCT_SCOPES } from "./generate/adjunct/modular/scope.js";
import { ALL_MODULAR_ADJUNCT_TYPES } from "./generate/adjunct/modular/type.js";
import { ALL_PARSING_ADJUNCTS } from "./generate/adjunct/parsing.js";
import { ALL_REGISTER_ADJUNCTS, ALL_SINGLE_REGISTER_ADJUNCTS, } from "./generate/adjunct/register.js";
import { ALL_SUPPLETIVE_ADJUNCT_TYPES } from "./generate/adjunct/suppletive/type.js";
import { ALL_AFFIX_DEGREES } from "./generate/affix/degree.js";
import { ALL_REFERENTIAL_AFFIX_CASES } from "./generate/affix/index.js";
import { ALL_AFFIX_TYPES } from "./generate/affix/type.js";
import { ALL_AFFILIATIONS } from "./generate/ca/affiliation.js";
import { ALL_CONFIGURATIONS } from "./generate/ca/configuration.js";
import { ALL_ESSENCES } from "./generate/ca/essence.js";
import { ALL_EXTENSIONS } from "./generate/ca/extension.js";
import { ALL_PERSPECTIVES } from "./generate/ca/perspective.js";
import { ALL_SHORTCUT_TYPES } from "./generate/formative/shortcut-type.js";
import { ALL_CA_SHORTCUT_TYPES } from "./generate/formative/slot-1/ca-shortcut-type.js";
import { ALL_CONCATENATION_TYPES } from "./generate/formative/slot-1/concatenation-type.js";
import { ALL_SLOT_X_STRESSES } from "./generate/formative/slot-10/index.js";
import { ALL_AFFIX_SHORTCUTS } from "./generate/formative/slot-2/affix-shortcut.js";
import { ALL_STEMS } from "./generate/formative/slot-2/stem.js";
import { ALL_VERSIONS } from "./generate/formative/slot-2/version.js";
import { ALL_CONTEXTS } from "./generate/formative/slot-4/context.js";
import { ALL_FUNCTIONS } from "./generate/formative/slot-4/function.js";
import { ALL_SPECIFICATIONS } from "./generate/formative/slot-4/specification.js";
import { ALL_ASPECTS } from "./generate/formative/slot-8/aspect.js";
import { ALL_CASE_SCOPES } from "./generate/formative/slot-8/case-scope.js";
import { ALL_EFFECTS } from "./generate/formative/slot-8/effect.js";
import { ALL_LEVELS } from "./generate/formative/slot-8/level.js";
import { MoodOrCaseScope } from "./generate/formative/slot-8/mood-or-case-scope.js";
import { ALL_MOODS } from "./generate/formative/slot-8/mood.js";
import { ALL_PHASES } from "./generate/formative/slot-8/phase.js";
import { ALL_VALENCES } from "./generate/formative/slot-8/valence.js";
import { ALL_VN_TYPES } from "./generate/formative/slot-8/vn-type.js";
import { ALL_CASES } from "./generate/formative/slot-9/case.js";
import { ALL_ILLOCUTION_OR_VALIDATIONS } from "./generate/formative/slot-9/illocution-and-validation.js";
import { ALL_ILLOCUTIONS } from "./generate/formative/slot-9/illocution.js";
import { ALL_VALIDATIONS } from "./generate/formative/slot-9/validation.js";
import { ALL_DIPTHONGS } from "./generate/helpers/dipthongs.js";
import { ALL_REFERENT_EFFECTS } from "./generate/referential/referent/effect.js";
import { ALL_REFERENTS } from "./generate/referential/referent/referent.js";
import { ALL_REFERENT_TARGETS } from "./generate/referential/referent/target.js";
/** A `ZodType` matching a specific enumerated set of literals. */
export class Enum extends ZodType {
items;
/**
* Constructs an `Enum`.
*
* @param items The items to match against.
* @returns The constructed `Enum`.
*/
constructor(items) {
super({});
this.items = items;
Object.freeze(this);
}
_parse(input) {
if (this.items.includes(input.data)) {
return {
status: "valid",
value: input.data,
};
}
else {
return {
status: "aborted",
};
}
}
}
// #region Literals
/** A Zod parser matching affiliations. */
export const affiliation = /* @__PURE__ */ new Enum(ALL_AFFILIATIONS);
/** A Zod parser matching affix degrees. */
export const affixDegree = /* @__PURE__ */ new Enum(ALL_AFFIX_DEGREES);
/** A Zod parser matching affix shortcuts. */
export const affixShortcut = /* @__PURE__ */ new Enum(ALL_AFFIX_SHORTCUTS);
/** A Zod parser matching affix types. */
export const affixType = /* @__PURE__ */ new Enum(ALL_AFFIX_TYPES);
/** A Zod parser matching affixual adjunct scopes. */
export const affixualAdjunctScope = /* @__PURE__ */ new Enum(ALL_AFFIXUAL_ADJUNCT_SCOPES);
/** A Zod parser matching aspects. */
export const aspect = /* @__PURE__ */ new Enum(ALL_ASPECTS);
/** A Zod parser matching bias adjuncts. */
export const biasAdjunct = /* @__PURE__ */ new Enum(ALL_BIAS_ADJUNCTS);
/** A Zod parser matching Ca shortcut types. */
export const caShortcutType = /* @__PURE__ */ new Enum(ALL_CA_SHORTCUT_TYPES);
/** A Zod parser matching cases. */
export const case_ = /* @__PURE__ */ new Enum(ALL_CASES);
/** A Zod parser matching case scopes. */
export const caseScope = /* @__PURE__ */ new Enum(ALL_CASE_SCOPES);
/** A Zod parser matching concatenation types. */
export const concatenationType = /* @__PURE__ */ new Enum(ALL_CONCATENATION_TYPES);
/** A Zod parser matching configurations. */
export const configuration = /* @__PURE__ */ new Enum(ALL_CONFIGURATIONS);
/** A Zod parser matching contexts. */
export const context = /* @__PURE__ */ new Enum(ALL_CONTEXTS);
/** A Zod parser matching dipthongs. */
export const dipthong = /* @__PURE__ */ new Enum(ALL_DIPTHONGS);
/** A Zod parser matching effects. */
export const effect = /* @__PURE__ */ new Enum(ALL_EFFECTS);
/** A Zod parser matching essences. */
export const essence = /* @__PURE__ */ new Enum(ALL_ESSENCES);
/** A Zod parser matching extensions. */
export const extension = /* @__PURE__ */ new Enum(ALL_EXTENSIONS);
/** A Zod parser matching functions. */
export const function_ = /* @__PURE__ */ new Enum(ALL_FUNCTIONS);
/** A Zod parser matching illocutions. */
export const illocution = /* @__PURE__ */ new Enum(ALL_ILLOCUTIONS);
/** A Zod parser matching non-ASR illocutions and validations. */
export const illocutionOrValidation = /* @__PURE__ */ new Enum(ALL_ILLOCUTION_OR_VALIDATIONS);
/** A Zod parser matching levels. */
export const level = /* @__PURE__ */ new Enum(ALL_LEVELS);
/** A Zod parser matching modular adjunct scopes. */
export const modularAdjunctScope = /* @__PURE__ */ new Enum(ALL_MODULAR_ADJUNCT_SCOPES);
/** A Zod parser matching modular adjunct types. */
export const modularAdjunctType = /* @__PURE__ */ new Enum(ALL_MODULAR_ADJUNCT_TYPES);
/** A Zod parser matching moods. */
export const mood = /* @__PURE__ */ new Enum(ALL_MOODS);
/** A Zod parser matching parsing adjuncts. */
export const parsingAdjunct = /* @__PURE__ */ new Enum(ALL_PARSING_ADJUNCTS);
/** A Zod parser matching perspectives. */
export const perspective = /* @__PURE__ */ new Enum(ALL_PERSPECTIVES);
/** A Zod parser matching phases. */
export const phase = /* @__PURE__ */ new Enum(ALL_PHASES);
/** A Zod parser matching referents. */
export const referent = /* @__PURE__ */ new Enum(ALL_REFERENTS);
/** A Zod parser matching referent effects. */
export const referentEffect = /* @__PURE__ */ new Enum(ALL_REFERENT_EFFECTS);
/** A Zod parser matching referent targets. */
export const referentTarget = /* @__PURE__ */ new Enum(ALL_REFERENT_TARGETS);
/** A Zod parser matching referential affix cases. */
export const referentialAffixCase = /* @__PURE__ */ new Enum(ALL_REFERENTIAL_AFFIX_CASES);
/** A Zod parser matching register adjuncts. */
export const registerAdjunct = /* @__PURE__ */ new Enum(ALL_REGISTER_ADJUNCTS);
/** A Zod parser matching shortcut types. */
export const shortcutType = /* @__PURE__ */ new Enum(ALL_SHORTCUT_TYPES);
/** A Zod parser matching single register adjuncts. */
export const singleRegisterAdjunct = /* @__PURE__ */ new Enum(ALL_SINGLE_REGISTER_ADJUNCTS);
/** A Zod parser matching specifications. */
export const specification = /* @__PURE__ */ new Enum(ALL_SPECIFICATIONS);
/** A Zod parser matching stems. */
export const stem = /* @__PURE__ */ new Enum(ALL_STEMS);
/** A Zod parser matching suppletive adjunct types. */
export const suppletiveAdjunctType = /* @__PURE__ */ new Enum(ALL_SUPPLETIVE_ADJUNCT_TYPES);
/** A Zod parser matching valences. */
export const valence = /* @__PURE__ */ new Enum(ALL_VALENCES);
/** A Zod parser matching validations. */
export const validation = /* @__PURE__ */ new Enum(ALL_VALIDATIONS);
/** A Zod parser matching versions. */
export const version = /* @__PURE__ */ new Enum(ALL_VERSIONS);
/** A Zod parser matching Vn types. */
export const vnType = /* @__PURE__ */ new Enum(ALL_VN_TYPES);
// #endregion
// #region More Validators
/** A Zod parser matching `MoodOrCaseScope` instances. */
export const moodOrCaseScope = /* @__PURE__ */ instanceOf(MoodOrCaseScope);
/** A Zod parser matching Cn forms. */
export const cn = /* @__PURE__ */ union([mood, caseScope, moodOrCaseScope]);
/** A Zod parser matching non-aspectual Vn forms. */
export const nonAspectualVn = /* @__PURE__ */ union([
valence,
phase,
effect,
level,
]);
/** A Zod parser matching Vn forms. */
export const vn = /* @__PURE__ */ union([valence, phase, effect, level, aspect]);
/** A Zod parser matching Ca forms. */
export const ca = /* @__PURE__ */ object({
affiliation,
configuration,
extension,
perspective,
essence,
});
/** A Zod parser matching partial Ca forms. */
export const partialCA = /* @__PURE__ */ ca.partial();
/** A Zod parser matching affixes. */
export const affix = /* @__PURE__ */ union([
/* @__PURE__ */ object({
type: affixType,
degree: affixDegree,
cs: /* @__PURE__ */ string(),
ca: /* @__PURE__ */ undefined().optional(),
referent: /* @__PURE__ */ undefined().optional(),
case: /* @__PURE__ */ undefined().optional(),
}),
/* @__PURE__ */ object({
ca: partialCA,
cs: /* @__PURE__ */ undefined().optional(),
referent: /* @__PURE__ */ undefined().optional(),
case: /* @__PURE__ */ undefined().optional(),
}),
/* @__PURE__ */ object({
referent: referent,
perspective: /* @__PURE__ */ new Enum(["M", "G", "N"]).optional(),
case: referentialAffixCase,
cs: /* @__PURE__ */ undefined().optional(),
ca: /* @__PURE__ */ undefined().optional(),
}),
/* @__PURE__ */ object({
case: case_,
type: affixType,
isInverse: /* @__PURE__ */ boolean(),
cs: /* @__PURE__ */ undefined().optional(),
ca: /* @__PURE__ */ undefined().optional(),
referent: /* @__PURE__ */ undefined().optional(),
}),
/* @__PURE__ */ object({
case: case_,
cs: /* @__PURE__ */ undefined().optional(),
ca: /* @__PURE__ */ undefined().optional(),
referent: /* @__PURE__ */ undefined().optional(),
type: /* @__PURE__ */ undefined().optional(),
}),
]);
/** A Zod parser matching affix matadata. */
export const affixMetadata = /* @__PURE__ */ object({
reversed: /* @__PURE__ */ boolean(),
insertGlottalStop: /* @__PURE__ */ oboolean(),
isGlottalStopWordFinal: /* @__PURE__ */ oboolean(),
});
/** A Zod parser matching a list of referents. */
export const referentList = /* @__PURE__ */ referent.array().nonempty();
/** A Zod parser matching {@link ReferentialReferentialCore}s. */
export const referentialReferentialCore = /* @__PURE__ */ object({
referents: referentList,
perspective: perspective,
type: /* @__PURE__ */ undefined().optional(),
case: case_,
case2: /* @__PURE__ */ case_.optional(),
essence,
});
/** A Zod parser matching suppletive adjuncts. */
export const suppletiveAdjunct = /* @__PURE__ */ object({
type: suppletiveAdjunctType,
case: case_,
});
/** A Zod parser matching {@link SuppletiveReferentialCore}s. */
export const suppletiveReferentialCore = /* @__PURE__ */ object({
referents: /* @__PURE__ */ undefined().optional(),
perspective: /* @__PURE__ */ undefined().optional(),
type: suppletiveAdjunctType,
case: case_,
case2: /* @__PURE__ */ case_.optional(),
essence,
});
/** A Zod parser matching {@link ReferentialCore}s. */
export const referentialCore = /* @__PURE__ */ union([
referentialReferentialCore,
suppletiveReferentialCore,
]);
/** A Zod parser matching referent objects. */
export const referentObject = /* @__PURE__ */ object({
target: referentTarget,
effect: referentEffect,
});
/** A Zod parser matching {@link PartialReferentialReferentialCore}s. */
export const partialReferentialReferentialCore = /* @__PURE__ */ object({
referents: referentList,
perspective: /* @__PURE__ */ perspective.optional(),
type: /* @__PURE__ */ undefined().optional(),
case: /* @__PURE__ */ case_.optional(),
case2: /* @__PURE__ */ case_.optional(),
essence: /* @__PURE__ */ essence.optional(),
});
/** A Zod parser matching {@link PartialSuppletiveReferentialCore}s. */
export const partialSuppletiveReferentialCore = /* @__PURE__ */ object({
referents: /* @__PURE__ */ undefined().optional(),
perspective: /* @__PURE__ */ undefined().optional(),
type: suppletiveAdjunctType,
case: /* @__PURE__ */ case_.optional(),
case2: /* @__PURE__ */ case_.optional(),
essence: /* @__PURE__ */ essence.optional(),
});
/** A Zod parser matching {@link PartialReferentialCore}s. */
export const partialReferentialCore = /* @__PURE__ */ union([
partialReferentialReferentialCore,
partialSuppletiveReferentialCore,
]);
/** A Zod parser matching referentials. */
export const referential = /* @__PURE__ */ union([
/* @__PURE__ */ referentialCore.and(
/* @__PURE__ */ object({
referents2: /* @__PURE__ */ undefined().optional(),
perspective2: /* @__PURE__ */ undefined().optional(),
specification: /* @__PURE__ */ undefined().optional(),
affixes: /* @__PURE__ */ undefined().optional(),
})),
/* @__PURE__ */ referentialCore.and(
/* @__PURE__ */ object({
referents2: referent,
perspective2: perspective,
specification: /* @__PURE__ */ undefined().optional(),
affixes: /* @__PURE__ */ undefined().optional(),
})),
/* @__PURE__ */ referentialCore.and(
/* @__PURE__ */ object({
referents2: /* @__PURE__ */ undefined().optional(),
perspective2: /* @__PURE__ */ undefined().optional(),
specification: specification,
affixes: /* @__PURE__ */ affix.array(),
})),
]);
/** A Zod parser matching partial referentials. */
export const partialReferential = /* @__PURE__ */ union([
/* @__PURE__ */ partialReferentialCore.and(
/* @__PURE__ */ object({
referents2: /* @__PURE__ */ undefined().optional(),
perspective2: /* @__PURE__ */ undefined().optional(),
specification: /* @__PURE__ */ undefined().optional(),
affixes: /* @__PURE__ */ undefined().optional(),
})),
/* @__PURE__ */ partialReferentialCore.and(
/* @__PURE__ */ object({
referents2: referent,
perspective2: /* @__PURE__ */ perspective.optional(),
specification: /* @__PURE__ */ undefined().optional(),
affixes: /* @__PURE__ */ undefined().optional(),
})),
/* @__PURE__ */ partialReferentialCore.and(
/* @__PURE__ */ object({
referents2: /* @__PURE__ */ undefined().optional(),
perspective2: /* @__PURE__ */ undefined().optional(),
specification: /* @__PURE__ */ specification.optional(),
affixes: /* @__PURE__ */ affix.array().optional(),
})),
]);
/** A Zod parser matching modular adjuncts. */
export const modularAdjunct = /* @__PURE__ */ union([
/* @__PURE__ */ object({
type: /* @__PURE__ */ modularAdjunctType.optional(),
cn: /* @__PURE__ */ undefined().optional(),
vn1: aspect,
vn2: /* @__PURE__ */ undefined().optional(),
vn3: /* @__PURE__ */ undefined().optional(),
scope: /* @__PURE__ */ undefined().optional(),
}),
/* @__PURE__ */ object({
type: /* @__PURE__ */ modularAdjunctType.optional(),
cn: /* @__PURE__ */ cn.optional(),
vn1: vn,
vn2: /* @__PURE__ */ vn.optional(),
vn3: nonAspectualVn,
scope: /* @__PURE__ */ undefined().optional(),
}),
/* @__PURE__ */ object({
type: /* @__PURE__ */ modularAdjunctType.optional(),
cn: /* @__PURE__ */ cn.optional(),
vn1: vn,
vn2: /* @__PURE__ */ vn.optional(),
vn3: /* @__PURE__ */ undefined().optional(),
scope: modularAdjunctScope,
}),
]);
/** A Zod parser matching affixual adjuncts. */
export const affixualAdjunct = /* @__PURE__ */ object({
affixes: /* @__PURE__ */ affix.array().nonempty(),
scope: /* @__PURE__ */ affixualAdjunctScope.optional(),
scope2: /* @__PURE__ */ affixualAdjunctScope.optional(),
appliesToConcatenatedStemOnly: /* @__PURE__ */ oboolean(),
});
/** A Zod parser matching adjuncts. */
export const adjunct = /* @__PURE__ */ union([
affixualAdjunct,
biasAdjunct,
modularAdjunct,
parsingAdjunct,
registerAdjunct,
singleRegisterAdjunct,
suppletiveAdjunct,
]);
/** A Zod parser matching adjuncts other than non-single register adjuncts. */
export const plainAdjunct = /* @__PURE__ */ union([
affixualAdjunct,
biasAdjunct,
modularAdjunct,
parsingAdjunct,
singleRegisterAdjunct,
suppletiveAdjunct,
]);
// #endregion
// #region Formative Slots
/** A Zod parser matching Slot I data. */
export const slotI = /* @__PURE__ */ object({
concatenationType: concatenationType,
caShortcutType: caShortcutType,
});
/** A Zod parser matching Slot III data. */
export const slotIII = /* @__PURE__ */ union([
/* @__PURE__ */ string(),
referentList,
/* @__PURE__ */ object({
degree: affixDegree,
cs: /* @__PURE__ */ string(),
}),
]);
/** A Zod parser matching Slot II data. */
export const slotII = /* @__PURE__ */ object({ stem, version });
/** A Zod parser matching Slot II metadata. */
export const slotIIMetadata = /* @__PURE__ */ object({
slotI: /* @__PURE__ */ string(),
slotIII,
affixShortcut: /* @__PURE__ */ affixShortcut.optional(),
doesSlotVHaveAtLeastTwoAffixes: /* @__PURE__ */ boolean(),
function: function_,
});
/** A Zod parser matching Slot IV data. */
export const slotIV = /* @__PURE__ */ object({
function: function_,
specification,
context,
});
/** A Zod parser matching Slot IV metadata. */
export const slotIVMetadata = /* @__PURE__ */ object({
slotIII: /* @__PURE__ */ string(),
affixualFormativeDegree: /* @__PURE__ */ affixDegree.optional(),
});
/** A Zod parser matching Slot V data. */
export const slotV = /* @__PURE__ */ affix.array();
/** A Zod parser matching Slot V metadata. */
export const slotVMetadata = /* @__PURE__ */ object({
isSlotVIElided: /* @__PURE__ */ boolean(),
isAtEndOfWord: /* @__PURE__ */ boolean(),
});
/** A Zod parser matching Slot VI data. */
export const slotVI = ca;
/** A Zod parser matching Slot VI metadata. */
export const slotVIMetadata = /* @__PURE__ */ object({
isSlotVFilled: /* @__PURE__ */ boolean(),
});
/** A Zod parser matching Slot VII data. */
export const slotVII = /* @__PURE__ */ affix.array();
/** A Zod parser matching Slot VIII data. */
export const slotVIII = /* @__PURE__ */ object({ vn, cn });
/** A Zod parser matching Slot VIII metadata. */
export const slotVIIIMetadata = /* @__PURE__ */ object({
omitDefault: /* @__PURE__ */ boolean(),
});
/** A Zod parser matching Slot IX data. */
export const slotIX = /* @__PURE__ */ union([case_, illocutionOrValidation]);
/** A Zod parser matching Slot IX metadata. */
export const slotIXMetadata = /* @__PURE__ */ object({
elideIfPossible: /* @__PURE__ */ boolean(),
isPartOfConcatenatedFormative: /* @__PURE__ */ boolean(),
});
/** A Zod parser matching Slot X data. */
export const slotX = /* @__PURE__ */ new Enum(ALL_SLOT_X_STRESSES);
// #endregion
// #region Formatives
/** A Zod parser matching {@link CoreFormative}s. */
export const coreFormative = /* @__PURE__ */ object({
version: version,
stem: stem,
root: slotIII,
function: function_,
specification: specification,
context: context,
slotVAffixes: slotV,
ca: slotVI,
slotVIIAffixes: slotVII,
vn: vn,
shortcut: shortcutType,
});
/** A Zod parser matching {@link PartialCoreFormative}s. */
export const partialCoreFormative = /* @__PURE__ */ object({
version: /* @__PURE__ */ version.optional(),
stem: /* @__PURE__ */ stem.optional(),
root: slotIII,
function: /* @__PURE__ */ function_.optional(),
specification: /* @__PURE__ */ specification.optional(),
context: /* @__PURE__ */ context.optional(),
slotVAffixes: /* @__PURE__ */ slotV.optional(),
ca: partialCA,
slotVIIAffixes: /* @__PURE__ */ slotVII.optional(),
vn: /* @__PURE__ */ vn.optional(),
shortcut: /* @__PURE__ */ shortcutType.optional(),
});
/** A Zod parser matching nominal formatives. */
export const nominalFormative = /* @__PURE__ */ coreFormative.extend({
type: /* @__PURE__ */ literal("UNF/C"),
concatenationType: concatenationType,
caseScope: caseScope,
case: case_,
});
/** A Zod parser matching partial nominal formatives. */
export const partialNominalFormative =
/* @__PURE__ */ partialCoreFormative.extend({
type: /* @__PURE__ */ literal("UNF/C"),
concatenationType: /* @__PURE__ */ concatenationType.optional(),
caseScope: /* @__PURE__ */ caseScope.optional(),
case: /* @__PURE__ */ case_.optional(),
});
/** A Zod parser matching unframed verbal formatives. */
export const unframedVerbalFormative = /* @__PURE__ */ coreFormative.extend({
type: /* @__PURE__ */ literal("UNF/K"),
mood: mood,
illocutionValidation: illocutionOrValidation,
});
/** A Zod parser matching partial unframed verbal formatives. */
export const partialUnframedVerbalFormative =
/* @__PURE__ */ partialCoreFormative.extend({
type: /* @__PURE__ */ literal("UNF/K"),
mood: /* @__PURE__ */ mood.optional(),
illocutionValidation: /* @__PURE__ */ illocutionOrValidation.optional(),
});
/** A Zod parser matching framed verbal formatives. */
export const framedVerbalFormative = /* @__PURE__ */ coreFormative.extend({
type: /* @__PURE__ */ literal("FRM"),
caseScope: caseScope,
case: case_,
});
/** A Zod parser matching partial framed verbal formatives. */
export const partialFramedVerbalFormative =
/* @__PURE__ */ partialCoreFormative.extend({
type: /* @__PURE__ */ literal("FRM"),
caseScope: /* @__PURE__ */ caseScope.optional(),
case: /* @__PURE__ */ case_.optional(),
});
/** A Zod parser matching formatives. */
export const formative = /* @__PURE__ */ union([
nominalFormative,
unframedVerbalFormative,
framedVerbalFormative,
]);
/** A Zod parser matching partial formatives. */
export const partialFormative = /* @__PURE__ */ union([
partialNominalFormative,
partialUnframedVerbalFormative,
partialFramedVerbalFormative,
]);
// #endregion
/** A Zod parser matching any type of Ithkuilic word. */
export const word = /* @__PURE__ */ union([
partialReferential,
partialFormative,
adjunct,
]);
export { case_ as case };
export { function_ as function };