1.0.6 • Published 6 years ago
script-pattern-factory v1.0.6
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) - optional -input(object) -minify(boolean/opts) uglify-js minify configuration. iftruethe source will be minified using the default configuration (UglifyJS.minify(code);) -parse(object) meriyah parsing API -output(object) -raw(boolean) return raw nodes -compressed(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', '')}`);
}
})();