script-pattern-factory
v1.0.6
Published
Creates patterns from Javascript code
Downloads
1
Readme
script pattern factory
Simple tool for creating AST patterns from JavaScript code
API
SPF.parse (source, opts)
Traverse source code and returns its AST pattern
source
(string)opts
(object) - optionalinput
(object)minify
(boolean/opts) uglify-js minify configuration. iftrue
the source will be minified using the default configuration (UglifyJS.minify(code);
)
parse
(object) meriyah parsing APIoutput
(object)raw
(boolean) return raw nodescompressed
(boolean) return compressed pattern (e.gVVVVV
->V5
)map
(object) override AST nodes mapping
SPF.inspect()
returns the AST nodes mapping
AST Nodes Mapping
{
Program: '',
FunctionDeclaration: 'F',
VariableDeclaration: 'V',
VariableDeclarator: 'v',
BlockStatement: 'B',
Identifier: 'I',
ExpressionStatement: 'E',
CallExpression: 'C',
ThisExpression: 'd',
Literal: 'e',
EmptyStatement: 'h',
DebuggerStatement: 'i',
WithStatement: 'j',
ReturnStatement: 'k',
LabeledStatement: 'l',
BreakStatement: 'm',
ContinueStatement: 'n',
IfStatement: 'o',
SwitchStatement: 'p',
SwitchCase: 'q',
ThrowStatement: 'r',
TryStatement: 's',
CatchClause: 't',
WhileStatement: 'u',
DoWhileStatement: 'c',
ForStatement: 'w',
ForInStatement: 'x',
Property: 'z',
ArrayExpression: 'A',
ObjectExpression: 'b',
FunctionExpression: 'P',
UnaryExpression: 'D',
UnaryOperator: 'g',
UpdateExpression: 'a',
UpdateOperator: 'G',
BinaryExpression: 'H',
BinaryOperator: 'f',
AssignmentExpression: 'J',
AssignmentOperator: 'K',
LogicalExpression: 'L',
LogicalOperator: 'M',
MemberExpression: 'N',
ConditionalExpression: 'O',
NewExpression: 'Q',
SequenceExpression: 'R',
}
Example - SPF.parse
const SPF = require('script-pattern-factory');
(async function () {
const code = `
const x = 10;
function foo(val){
console.log(val);
}
foo(x);
const y = 55;
`;
const pattern = await SPF.getPattern(code);
//VveIFIBECNIIIIECIIVveI
console.log(`Pattern ${pattern}`);
console.log(`Symbol Map:\n${JSON.stringify(SPF.inspect())}`);
})();
SPF.getNodes (source, opts)
Traverse source code and returns its AST, complete with the code for each node.
source
(string)parse
(object) meriyah parsing API. Note the location (loc
) option is on by default and is required to extract the actual code for each node.
Example - SPF.getNodes
const SPF = require('script-pattern-factory');
(async function () {
const code = `
const x = 10;
function foo(val){
console.log(val);
}
foo(x);
;
const y = 55;
`;
const nodes = await SPF.getNodes(code);
console.log(`Parsed ${nodes.length}:`);
for (let node of nodes) {
console.log(`[${node.type.padEnd(19)}] ==> ${node.src.replace('\n', '')}`);
}
})();