@lottiefiles/relottie-stringify
Version:
relottie plugin to add support for serializing LAST
47 lines (46 loc) • 1.39 kB
JavaScript
// src/helpers.ts
function evaluate(node) {
const getObjectValue = (objectLikeNode) => {
const objectValue = {};
objectLikeNode.children.forEach((member) => {
const key = typeof member.key === "string" ? member.key : member.key.value;
const value = member.children[0];
if (value) {
objectValue[key] = evaluate(value);
}
});
return objectValue;
};
switch (node.type) {
case "primitive":
switch (typeof node.value) {
case "number":
return node.value;
case "string":
return node.value;
case "boolean":
return node.value;
case "object":
return null;
default:
throw new Error(`Unknown Primitive type ${node.type}.`);
}
case "attribute":
return node.children[0] ? evaluate(node.children[0]) : null;
case "collection":
return node.children[0] ? evaluate(node.children[0]) : null;
case "element":
return node.children[0] ? evaluate(node.children[0]) : null;
case "array":
return node.children.map(evaluate);
case "root":
return getObjectValue(node);
case "object":
return getObjectValue(node);
default:
throw new Error(`Unknown node type ${node.type}.`);
}
}
export { evaluate };
//# sourceMappingURL=chunk-IU7XTU53.js.map
//# sourceMappingURL=chunk-IU7XTU53.js.map