idyll-ast
Version:
Utilities for manipulating Idyll's AST
1 lines • 16 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../v1/src/index.js"],"sourcesContent":["/**\n *\n * module contains utility functions\n * for dealing with Idyll's internal representation\n * of an AST. The ast object is an array of nodes,\n * where each node is defined like:\n *\n * [ name, [\n * [property1, [valueType, value ]],\n * [property2, [valueType, value ]]\n * ], [\n * child1,\n * child2,\n * ...\n * ] ]\n *\n */\n\nconst appendNode = function(ast, node) {\n return appendNodes(ast, [node]);\n};\n\nconst appendNodes = function(ast, nodes) {\n return [].concat(ast, nodes);\n};\n\n/**\n * function that returns the names of the passed node\n * @param {*} node\n * @return {String} name of the node\n */\nconst getNodeName = function(node) {\n return node[0];\n};\n\nconst createNode = function(name, props, children) {\n let node = [name, [], children || []];\n node = setProperties(node, props || {});\n return node;\n};\n\n/**\n * Creates a textnode with the text passed\n * @param {*} text the text inside a textnode\n */\nconst createTextNode = function(text) {\n if (typeof text === 'string') {\n return text;\n }\n};\n\nconst getChildren = function(node) {\n if (typeof node === 'string') {\n return [];\n }\n if (typeof node[2] === 'string') {\n return [node[2]];\n }\n return node[2] || [];\n};\n\nconst getText = function(node) {\n const texts = [];\n walkNodes(node, n => {\n if (typeof n === 'string') {\n texts.push(n);\n }\n });\n return texts.join(' ');\n};\n\nconst walkNodes = function(ast, f) {\n (ast || []).forEach(node => {\n walkNodes(getChildren(node), f);\n f(node);\n });\n};\n\n/**\n * function to do a depth first traversal on the ast tree.\n * @param {*} ast Array that forms the tree structure\n * @param {*} f call-back function\n */\nconst walkNodesBreadthFirst = function(ast, f) {\n let childAst = [];\n (ast || []).forEach(node => {\n f(node);\n childAst = childAst.concat(getChildren(node));\n });\n if (childAst.length !== 0) {\n walkNodesBreadthFirst(childAst, f);\n }\n};\nconst findNodes = function(ast, filter) {\n var result = [];\n walkNodes(ast, node => {\n if (filter(node)) result.push(node);\n });\n return result;\n};\n\nconst modifyChildren = function(node, modifier) {\n if (typeof node === 'string') {\n return node;\n }\n node[2] = getChildren(node).map(child => {\n return modifier(child);\n });\n return node;\n};\n\n// TODO: wrap string in array so that the reduce doesn't err\nconst getNodesByName = function(ast, name) {\n const handleNode = (acc, node) => {\n if (node[0].toLowerCase() === name.toLowerCase()) {\n acc.push(node);\n }\n\n const children = getChildren(node);\n\n if (!children || typeof children === 'string') {\n return acc;\n }\n\n return children.reduce(handleNode, acc);\n };\n\n // if (typeof ast === 'string') {\n // ast = [ast];\n // }\n\n return ast.reduce(handleNode, []);\n};\n\nconst filterChildren = function(node, filter) {\n if (typeof node === 'string') {\n return node;\n }\n node[2] = getChildren(node).filter(child => {\n return filter(child);\n });\n return node;\n};\n\nconst filterNodes = function(ast, filter) {\n return ast.filter(filter).map(node => {\n if (typeof node === 'string') {\n return node;\n }\n\n node[2] = filterNodes(node[2] || [], filter);\n return node;\n });\n};\n\nconst modifyNodesByName = function(ast, name, modifier) {\n const handleNode = node => {\n if (typeof node === 'string') {\n return node;\n }\n if (node[0].toLowerCase() === name.toLowerCase()) {\n node = modifier(node);\n }\n\n node = modifyChildren(node, handleNode);\n return node;\n };\n\n ast = ast.map(node => {\n return handleNode(node);\n });\n return ast;\n};\n\nconst getProperty = function(node, key) {\n if (typeof node === 'string') {\n return null;\n }\n let retProp;\n node[1].forEach(element => {\n if (element[0] === key) {\n retProp = element[1];\n }\n });\n return retProp;\n};\n\nconst getProperties = function(node) {\n if (typeof node === 'string') {\n return [];\n }\n return node[1] || [];\n};\n\nconst getPropertiesByType = function(node, type) {\n if (typeof node === 'string') {\n return [];\n }\n return (node[1] || []).filter(([propName, [propType, propValue]]) => {\n return propType === type;\n });\n};\n\nconst prependNode = function(ast, node) {\n return prependNodes(ast, [node]);\n};\n\nconst prependNodes = function(ast, nodes) {\n return [].concat(nodes, ast);\n};\n\nconst removeNodesByName = function(ast, name) {\n return filterNodes(ast, node => {\n if (typeof node === 'string') {\n return true;\n }\n if (node[0].toLowerCase() === name.toLowerCase()) {\n return false;\n }\n return true;\n });\n};\n\nconst setProperty = function(node, key, value) {\n if (typeof node === 'string') {\n console.warn('Cannot setPropery on string node.');\n return node;\n }\n\n let hasSet = false;\n const isArr = Array.isArray(value);\n node[1] = node[1].map(element => {\n if (element[0] === key) {\n hasSet = true;\n return [element[0], isArr ? value : ['value', value]];\n }\n return element;\n });\n if (!hasSet) {\n node[1] = node[1].concat([[key, isArr ? value : ['value', value]]]);\n }\n\n return node;\n};\n\nconst setProperties = function(node, properties) {\n if (typeof node === 'string') {\n console.warn('Cannot setProperties of string node.');\n return node;\n }\n Object.keys(properties).forEach(key => {\n node = setProperty(node, key, properties[key]);\n });\n return node;\n};\n\nconst removeProperty = function(node, key) {\n if (typeof node === 'string') {\n console.warn('Cannot removePropery of string node.');\n return node;\n }\n node[1] = node[1].filter(([propName, propVal]) => {\n if (propName === key) {\n return false;\n }\n return true;\n });\n return node;\n};\n\nexport {\n appendNode,\n appendNodes,\n createNode,\n createTextNode,\n walkNodesBreadthFirst,\n getChildren,\n getNodesByName,\n filterChildren,\n filterNodes,\n modifyChildren,\n modifyNodesByName,\n getNodeName,\n getProperty,\n getProperties,\n getPropertiesByType,\n getText,\n prependNode,\n prependNodes,\n removeNodesByName,\n setProperties,\n setProperty,\n removeProperty,\n walkNodes,\n findNodes\n};\n"],"names":["appendNode","ast","node","appendNodes","nodes","concat","getNodeName","createNode","name","props","children","setProperties","createTextNode","text","getChildren","getText","texts","walkNodes","n","push","join","f","forEach","walkNodesBreadthFirst","childAst","length","findNodes","filter","result","modifyChildren","modifier","map","child","getNodesByName","handleNode","acc","toLowerCase","reduce","filterChildren","filterNodes","modifyNodesByName","getProperty","key","retProp","element","getProperties","getPropertiesByType","type","propType","prependNode","prependNodes","removeNodesByName","setProperty","value","console","warn","hasSet","isArr","Array","isArray","properties","Object","keys","removeProperty","propName"],"mappings":"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"}