script-pattern-factory
v1.0.6
Published
Creates patterns from Javascript code
Downloads
18
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. iftruethe 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', '')}`);
}
})();