27 lines
842 B
JavaScript
27 lines
842 B
JavaScript
// Reflection on function formal parameter lists.
|
|
// This module is based on Angular's "injector" code,
|
|
// https://github.com/angular/angular.js/blob/master/src/auto/injector.js,
|
|
// MIT licensed, and hence:
|
|
// Copyright (c) 2010-2014 Google, Inc. http://angularjs.org
|
|
// Copyright (c) 2014 Tony Garnock-Jones
|
|
|
|
var FN_ARGS = /^function\s*[^\(]*\(\s*([^\)]*)\)/m;
|
|
var FN_ARG_SPLIT = /,/;
|
|
var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
|
|
|
|
function formalParameters(fn) {
|
|
var result = [];
|
|
|
|
var fnText = fn.toString().replace(STRIP_COMMENTS, '');
|
|
var argDecl = fnText.match(FN_ARGS);
|
|
var args = argDecl[1].split(FN_ARG_SPLIT);
|
|
for (var i = 0; i < args.length; i++) {
|
|
var trimmed = args[i].trim();
|
|
if (trimmed) { result.push(trimmed); }
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
module.exports.formalParameters = formalParameters;
|