mirror of
https://github.com/hanzoai/es5-ext.git
synced 2026-09-24 16:58:43 +00:00
Object.stringify
JS version of JSON.stringify, that stringifies also regular expressions, dates and functions
This commit is contained in:
@@ -35,6 +35,7 @@ module.exports = {
|
||||
safeTraverse: require('./safe-traverse'),
|
||||
setPrototypeOf: require('./set-prototype-of'),
|
||||
some: require('./some'),
|
||||
stringify: require('./stringify'),
|
||||
toArray: require('./to-array'),
|
||||
validCallable: require('./valid-callable'),
|
||||
validObject: require('./valid-object'),
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
'use strict';
|
||||
|
||||
var toArray = require('./to-array')
|
||||
, isDate = require('../date/is-date')
|
||||
, isRegExp = require('../reg-exp/is-reg-exp')
|
||||
|
||||
, isArray = Array.isArray, stringify = JSON.stringify
|
||||
, keyValueToString = function (value, key) { return stringify(key) + ':' + exports(value); };
|
||||
|
||||
module.exports = exports = function (obj) {
|
||||
if (obj == null) return String(obj);
|
||||
switch (typeof obj) {
|
||||
case 'string':
|
||||
return stringify(obj);
|
||||
case 'number':
|
||||
case 'boolean':
|
||||
case 'function':
|
||||
return String(obj);
|
||||
default:
|
||||
if (isArray(obj)) return '[' + obj.map(exports) + ']';
|
||||
if (isRegExp(obj)) return String(obj);
|
||||
if (isDate(obj)) return 'new Date(' + obj.valueOf() + ')';
|
||||
return '{' + toArray(obj, keyValueToString) + '}';
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,25 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = function (t, a) {
|
||||
var fn = function (raz, dwa) { return raz + dwa; };
|
||||
a(t(), 'undefined', "Undefined");
|
||||
a(t(null), 'null', "Null");
|
||||
a(t(null), 'null', "Null");
|
||||
a(t('raz'), '"raz"', "String");
|
||||
a(t('raz"ddwa\ntrzy'), '"raz\\"ddwa\\ntrzy"', "String with escape");
|
||||
a(t(false), 'false', "Booelean");
|
||||
a(t(fn), String(fn), "Function");
|
||||
|
||||
a(t(/raz-dwa/g), '/raz-dwa/g', "RegExp");
|
||||
a(t(new Date(1234567)), 'new Date(1234567)', "Date");
|
||||
a(t([]), '[]', "Empty array");
|
||||
a(t([undefined, false, null, 'raz"ddwa\ntrzy', fn, /raz/g, new Date(1234567), ['foo']]),
|
||||
'[undefined,false,null,"raz\\"ddwa\\ntrzy",' + String(fn) +
|
||||
',/raz/g,new Date(1234567),["foo"]]', "Rich Array");
|
||||
a(t({}), '{}', "Empty object");
|
||||
a(t({ raz: undefined, dwa: false, trzy: null, cztery: 'raz"ddwa\ntrzy', piec: fn, szesc: /raz/g,
|
||||
siedem: new Date(1234567), osiem: ['foo', 32], dziewiec: { foo: 'bar', dwa: 343 } }),
|
||||
'{"raz":undefined,"dwa":false,"trzy":null,"cztery":"raz\\"ddwa\\ntrzy","piec":' + String(fn) +
|
||||
',"szesc":/raz/g,"siedem":new Date(1234567),"osiem":["foo",32],' +
|
||||
'"dziewiec":{"foo":"bar","dwa":343}}', "Rich object");
|
||||
};
|
||||
Reference in New Issue
Block a user