UNPKG

tosource-polyfill

Version:

Firefox toSource() function polyfill for browser and Node.js

105 lines (94 loc) 1.82 kB
var assert = require('assert') var toSource = require('./index') // Various types var date = new Date var v = toSource( [ 4, 5, 6, "hello", { a:2, 'b':3, '1':4, 'if':5, yes:true, no:false, nan:NaN, infinity:Infinity, 'undefined':undefined, 'null':null, foo: function(bar) { console.log("woo! a is "+a) console.log("and bar is "+bar) } }, /we$/gi, date, new Date("Wed, 09 Aug 1995 00:00:00 GMT")] ); assert.equal( v, "[\n"+ " 4,\n"+ " 5,\n"+ " 6,\n"+ " \"hello\",\n"+ " {\n"+ " \"1\": 4,\n"+ " a: 2,\n"+ " b: 3,\n"+ " \"if\": 5,\n"+ " yes: true,\n"+ " no: false,\n"+ " nan: NaN,\n"+ " infinity: Infinity,\n"+ " \"undefined\": undefined,\n"+ " \"null\": null,\n"+ " foo: function (bar) {\n"+ " console.log(\"woo! a is \"+a)\n"+ " console.log(\"and bar is \"+bar)\n"+ " }\n"+ " },\n"+ " /we$/gi,\n"+ " new Date("+date.getTime()+"),\n"+ " new Date(807926400000)\n"+ "]" ) // Filter parameter (applies to every object recursively before serializing) assert.equal( toSource( [ 4, 5, 6, { bar:3 } ], function numbersToStrings(value) { return typeof value == 'number' ? '<'+value+'>' : value } ), "[\n"+ " \"<4>\",\n"+ " \"<5>\",\n"+ " \"<6>\",\n"+ " {bar: \"<3>\"}\n"+ "]" ) // No indent assert.equal( toSource([ 4, 5, 6, { bar:3 } ], null, false ), "[4,5,6,{bar: 3}]" ) // Circular reference var object = {a:1, b:2} object.c = object assert.equal( toSource(object), "{\n"+ " a: 1,\n"+ " b: 2,\n"+ " c: {$circularReference:0}\n"+ "}" ) // Not a circular reference foo = {} object = {a:foo, b:foo} assert.equal( toSource(object), "{\n"+ " a: {},\n"+ " b: {}\n"+ "}" )