Optimised convertCodeToStructure method

This commit is contained in:
sanex3339
2018-03-28 10:52:06 +03:00
parent 80f86dadbd
commit 1820055616
3 changed files with 15 additions and 20 deletions
+13 -18
View File
@@ -13,22 +13,18 @@ import { NodeMetadata } from './NodeMetadata';
export class NodeUtils {
/**
* @param {T} astTree
* @param {T} node
* @returns {T}
*/
public static addXVerbatimPropertyToLiterals <T extends ESTree.Node = ESTree.Node> (astTree: T): T {
estraverse.replace(astTree, {
leave: (node: ESTree.Node) => {
if (NodeGuards.isLiteralNode(node)) {
node['x-verbatim-property'] = {
content: node.raw,
precedence: escodegen.Precedence.Primary
};
}
}
});
public static addXVerbatimPropertyToLiteralNode <T extends ESTree.Node = ESTree.Node> (node: T): T {
if (NodeGuards.isLiteralNode(node)) {
node['x-verbatim-property'] = {
content: node.raw,
precedence: escodegen.Precedence.Primary
};
}
return astTree;
return node;
}
/**
@@ -44,13 +40,12 @@ export class NodeUtils {
* @returns {Statement[]}
*/
public static convertCodeToStructure (code: string): ESTree.Statement[] {
let structure: ESTree.Program = espree.parse(code, { sourceType: 'script' });
structure = NodeUtils.addXVerbatimPropertyToLiterals(structure);
structure = NodeUtils.parentize(structure);
const structure: ESTree.Program = espree.parse(code, { sourceType: 'script' });
estraverse.replace(structure, {
enter: (node: ESTree.Node): ESTree.Node => {
enter: (node: ESTree.Node, parentNode: ESTree.Node | null): ESTree.Node => {
NodeUtils.parentizeNode(node, parentNode);
NodeUtils.addXVerbatimPropertyToLiteralNode(node);
NodeMetadata.set(node, { ignoredNode: false });
return node;