moy-fp
Version:
A functional programming library.
25 lines (22 loc) • 994 B
JavaScript
import curry from '../Function/curry'
/**
* * -> String
*/
const toString = curry(
x => {
switch(Object.prototype.toString.call(x)){
case '[object Boolean]': return String(x)
case '[object Date]': return String(x.valueOf())
case '[object Number]': return Number.isNaN(x) ? 'NaN' : String(x)
case '[object String]': return x
case '[object RegExp]': return String(x)
case '[object Null]': return 'null'
case '[object Undefined]': return 'undefined'
case '[object Array]': return `[${x.reduce((str, v, index, array) => `${str}${toString(v)}${index + 1 === array.length ? '' : ', '}`, '')}]`
case '[object Object]': return `{${Object.entries(x).reduce((str, [key, value], index, array) => `${str}${key}: ${toString(value)}${index + 1 === array.length ? '' : ', '}`, '')}}`
case '[object Function]': return x.name || 'anonymous'
default: return x.toString ? x.toString() : 'unknownType'
}
}
)
export default toString