41 lines
965 B
JavaScript
41 lines
965 B
JavaScript
'use strict';
|
|
|
|
var checks = require('./checks.cjs');
|
|
require('./constants.cjs');
|
|
|
|
// does simply nothing
|
|
function noop() {
|
|
return this
|
|
}
|
|
|
|
/**
|
|
* Autobind the methods of a source object to itself
|
|
* @param {object} source - probably a riot tag instance
|
|
* @param {Array<string>} methods - list of the methods to autobind
|
|
* @returns {object} the original object received
|
|
*/
|
|
function autobindMethods(source, methods) {
|
|
methods.forEach((method) => {
|
|
source[method] = source[method].bind(source);
|
|
});
|
|
|
|
return source
|
|
}
|
|
|
|
/**
|
|
* Call the first argument received only if it's a function otherwise return it as it is
|
|
* @param {*} source - anything
|
|
* @returns {*} anything
|
|
*/
|
|
function callOrAssign(source) {
|
|
return checks.isFunction(source)
|
|
? source.prototype && source.prototype.constructor
|
|
? new source()
|
|
: source()
|
|
: source
|
|
}
|
|
|
|
exports.autobindMethods = autobindMethods;
|
|
exports.callOrAssign = callOrAssign;
|
|
exports.noop = noop;
|