const parse = require('{%= name %}');
console.log(parse('function app(a, b, c) {\n\n}'));
{%= apidocs('index.js') %}
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}' }
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}' }
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}' }
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}' }
parse("Template.prototype.get = function() {}");
Results in:
{ type: 'prototype method',
class: 'Template',
name: 'get',
params: [],
string: 'Template.prototype.get()',
original: 'Template.prototype.get = function() {}' }
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' }
parse("option.get = function() {}");
Results in:
{ type: 'method',
receiver: 'option',
name: 'get',
params: [],
string: 'option.get()',
original: 'option.get = function() {}' }
parse("option.name = \"delims\";\nasdf");
Results in:
{ type: 'property',
receiver: 'option',
name: 'name',
value: '"delims"',
string: 'option.name',
original: 'option.name = "delims";\nasdf' }
parse("var name = \"delims\";\nasdf");
Results in:
{ type: 'declaration',
name: 'name',
value: '"delims"',
string: 'name',
original: 'var name = "delims";\nasdf' }
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}' }
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}' }
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}' }
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) {}' }
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)'));
Regex was originally sourced and modified from https://github.com/visionmedia/dox.