You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

32 lines
817 B

4 years ago
import {isFunction} from './checks'
// does simply nothing
export 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
*/
export 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
*/
export function callOrAssign(source) {
return isFunction(source) ? (source.prototype && source.prototype.constructor ?
new source() : source()
) : source
}