kitchensink
Version:
Dispatch's awesome components and style guide
16 lines (13 loc) • 507 B
JavaScript
;
var isCallable = require('is-callable');
var fnToStr = Function.prototype.toString;
var isNonArrowFnRegex = /^\s*function/;
var isArrowFnWithParensRegex = /^\([^\)]*\) *=>/;
var isArrowFnWithoutParensRegex = /^[^=]*=>/;
module.exports = function isArrowFunction(fn) {
if (!isCallable(fn)) { return false; }
var fnStr = fnToStr.call(fn);
return fnStr.length > 0 &&
!isNonArrowFnRegex.test(fnStr) &&
(isArrowFnWithParensRegex.test(fnStr) || isArrowFnWithoutParensRegex.test(fnStr));
};