1.0.6 • Published 4 years ago

script-pattern-factory v1.0.6

Weekly downloads
5
License
MIT
Repository
github
Last release
4 years ago

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. if true the 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.g VVVVV -> 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', '')}`);
   }
})();
1.0.6

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago

0.0.1

4 years ago