script-pattern-factory

1.0.6 • Public • Published

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)
    • 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', '')}`);
   }
})();

Readme

Keywords

Package Sidebar

Install

npm i script-pattern-factory

Weekly Downloads

4

Version

1.0.6

License

MIT

Unpacked Size

210 kB

Total Files

14

Last publish

Collaborators

  • bgauryy