import type { DefinitionObject } from "./promoted_attribute_definition_interface.js"; function parse(value: string): DefinitionObject { const tokens = value.split(",").map((t) => t.trim()); const defObj: DefinitionObject = {}; for (const token of tokens) { if (token === "promoted") { defObj.isPromoted = true; } else if (["text", "number", "boolean", "date", "datetime", "time", "url"].includes(token)) { defObj.labelType = token; } else if (["single", "multi"].includes(token)) { defObj.multiplicity = token; } else if (token.startsWith("precision")) { const chunks = token.split("="); defObj.numberPrecision = parseInt(chunks[1]); } else if (token.startsWith("alias")) { const chunks = token.split("="); defObj.promotedAlias = chunks[1]; } else if (token.startsWith("inverse")) { const chunks = token.split("="); defObj.inverseRelation = chunks[1].replace(/[^\p{L}\p{N}_:]/gu, ""); } else { console.log("Unrecognized attribute definition token:", token); } } return defObj; } export default { parse };