UNPKG

moy-fp

Version:
25 lines (22 loc) 994 B
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