UNPKG

qlogger

Version:

very fast easily customizable logger

47 lines (45 loc) 1.44 kB
var jex = require('json-exec'); function toJsonString( str ) { // return ((str.length > 80) || /[\"\\\x00-\x1f\0x007f-\0xffff]/g.test(str)) ? JSON.stringify(str) : '"' + str + '"'; return ((str.length > 80) || /[^0-9a-zA-Z_-]/g.test(str)) ? JSON.stringify(str) : '"' + str + '"'; } function toJsonHash( hash ) { var str = ''; var keys = Object.keys(hash); for (var i=0; i<keys.length; i++) { var key = keys[i], value = hash[key]; var valueStr = toJsonValue(value); if (valueStr !== undefined) { if (str) str += ','; str += toJsonString(key) + ':' + valueStr; } } return str; } function toJsonArray( array ) { var str = ''; for (var i = 0; i < array.length; i++) { if (str) str += ','; var valueStr = toJsonValue(array[i]); str += valueStr !== undefined ? valueStr : 'null'; } return str; } function toJsonValue( value ) { switch (typeof value) { case 'string': return toJsonString(value); case 'number': case 'boolean': return '' + value; case 'object': if (value === null) return 'null'; if (typeof value.toJSON === 'function') return toJsonString(value.toJSON()); if (Array.isArray(value)) return '[' + toJsonArray(array) + ']'; return '{' + toJsonHash(value) + '}'; default: case 'undefined': case 'function': break; } }