Skip to content

Latest commit

 

History

History
259 lines (191 loc) · 4.03 KB

.verb.md

File metadata and controls

259 lines (191 loc) · 4.03 KB

Getting started

Usage

const parse = require('{%= name %}');
console.log(parse('function app(a, b, c) {\n\n}'));

API

{%= apidocs('index.js') %}

Examples

function statement

const context = parse('function app(a, b, c) {\n\n}');
console.log(context);

Results in:

{ type: 'function statement',
  name: 'app',
  params: [ 'a', 'b', 'c' ],
  string: 'app()',
  original: 'function app() {\n\n}' }

function expression

parse("var app = function(a, b, c) {\n\n}");

Results in:

{ type: 'function expression',
  name: 'app',
  params: [ 'a', 'b', 'c' ],
  string: 'app()',
  original: 'var app = function() {\n\n}' }

module.exports function expression

parse("module.exports = function foo(a, b, c) {\n\n}");

Results in:

{ type: 'function expression',
  receiver: 'module.exports',
  name: 'foo',
  params: [ 'a', 'b', 'c' ],
  string: 'module.exports()',
  original: 'module.exports = function foo(a, b, c) {\n\n}' }

module.exports method

parse("module.exports = function() {\n\n}");

Results in:

{ type: 'method',
  receiver: 'module.exports',
  name: '',
  params: [],
  string: 'module.exports.() {\n\n}()',
  original: 'module.exports = function() {\n\n}' }

prototype method

parse("Template.prototype.get = function() {}");

Results in:

{ type: 'prototype method',
  class: 'Template',
  name: 'get',
  params: [],
  string: 'Template.prototype.get()',
  original: 'Template.prototype.get = function() {}' }

prototype property

parse("Template.prototype.enabled = true;\nasdf");

Results in:

{ type: 'prototype property',
  class: 'Template',
  name: 'enabled',
  value: 'true',
  string: 'Template.prototype.enabled',
  original: 'Template.prototype.enabled = true;\nasdf' }

method

parse("option.get = function() {}");

Results in:

{ type: 'method',
  receiver: 'option',
  name: 'get',
  params: [],
  string: 'option.get()',
  original: 'option.get = function() {}' }

property

parse("option.name = \"delims\";\nasdf");

Results in:

{ type: 'property',
  receiver: 'option',
  name: 'name',
  value: '"delims"',
  string: 'option.name',
  original: 'option.name = "delims";\nasdf' }

declaration

parse("var name = \"delims\";\nasdf");

Results in:

{ type: 'declaration',
  name: 'name',
  value: '"delims"',
  string: 'name',
  original: 'var name = "delims";\nasdf' }

function statement params

parse("function app(a, b) {\n\n}");

Results in:

{ type: 'function statement',
  name: 'app',
  params: [ 'a', 'b' ],
  string: 'app()',
  original: 'function app(a, b) {\n\n}' }

function expression params

parse("var app = function(foo, bar) {\n\n}");

Results in:

{ type: 'function expression',
  name: 'app',
  params: [ 'foo', 'bar' ],
  string: 'app()',
  original: 'var app = function(foo, bar) {\n\n}' }

function expression params

parse("var app=function(foo,bar) {\n\n}");

Results in:

{ type: 'function expression',
  name: 'app',
  params: [ 'foo', 'bar' ],
  string: 'app()',
  original: 'var app=function(foo,bar) {\n\n}' }

prototype method params

parse("Template.prototype.get = function(key, value, options) {}");

Results in:

{ type: 'prototype method',
  class: 'Template',
  name: 'get',
  params: [ 'key', 'value', 'options' ],
  string: 'Template.prototype.get()',
  original: 'Template.prototype.get = function(key, value, options) {}' }

Custom parsers

Instantiate the Parser class to register custom parsers.

const { Parser} = require('{%= name %}');
const parser = new Parser();

parser.capture(/foo\(([^)]+)\)/, match => {
  return {
    params: match[1].split(/[,\s]+/)
  };
});

console.log(parser.parse('foo(a, b, c)'));

Credit

Regex was originally sourced and modified from https://github.com/visionmedia/dox.