29 lines
839 B
JavaScript
29 lines
839 B
JavaScript
'use strict';
|
|
|
|
const unpackString = require('unpack-string');
|
|
|
|
function stringifyParameters(fn) {
|
|
if (!fn || (fn.constructor !== String && fn.constructor !== Function)) {
|
|
return;
|
|
}
|
|
|
|
let fnString = fn.toString().replace(/^\s+|\s+$/g, '');
|
|
if (!fnString) {
|
|
return;
|
|
}
|
|
|
|
const isDeclaredWithFunctionKeyword = /^function/i;
|
|
const isNotArrowFunction = /^[^\s=>]+\(/i;
|
|
|
|
// Is an Arrow function with a parameter declared without parenthesis and with no default value
|
|
if (!isDeclaredWithFunctionKeyword.test(fnString) && !isNotArrowFunction.test(fnString)) {
|
|
let arrowWithoutParenthesis = fnString.match(/^(.*?)=>/);
|
|
if (arrowWithoutParenthesis) {
|
|
return unpackString(arrowWithoutParenthesis[1]).replace(/^\s+|\s+$/g, '');
|
|
}
|
|
}
|
|
|
|
return unpackString(fnString).replace(/^\s+|\s+$/g, '');
|
|
}
|
|
|
|
module.exports = stringifyParameters; |