angular-estree-parser
Version:
A parser that converts Angular source code into an ESTree-compatible form
34 lines (33 loc) • 1.08 kB
JavaScript
//#region src/ast-transform/transforms/transform-object-expression.ts
const visitLiteralMap = (node, transformer) => {
const { keys, values } = node;
const createChild = (properties, location = node) => transformer.create(properties, location, [node, ...transformer.ancestors]);
return {
type: "ObjectExpression",
properties: keys.map((keyNode, index) => {
const valueNode = values[index];
const range = [keyNode.sourceSpan.start, valueNode.sourceSpan.end];
if (keyNode.kind === "spread") return createChild({
type: "SpreadElement",
argument: transformer.transformChild(valueNode)
}, range);
const shorthand = Boolean(keyNode.isShorthandInitialized);
return createChild({
type: "ObjectProperty",
key: createChild(keyNode.quoted ? {
type: "StringLiteral",
value: keyNode.key
} : {
type: "Identifier",
name: keyNode.key
}, keyNode.sourceSpan),
value: transformer.transformChild(valueNode),
shorthand,
computed: false,
method: false
}, range);
})
};
};
//#endregion
export { visitLiteralMap };