source: node_modules/ramda/es/internal/_toString.js@ d24f17c

main
Last change on this file since d24f17c was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 1.9 KB
RevLine 
[d24f17c]1import _includes from "./_includes.js";
2import _map from "./_map.js";
3import _quote from "./_quote.js";
4import _toISOString from "./_toISOString.js";
5import keys from "../keys.js";
6import reject from "../reject.js";
7export default function _toString(x, seen) {
8 var recur = function recur(y) {
9 var xs = seen.concat([x]);
10 return _includes(y, xs) ? '<Circular>' : _toString(y, xs);
11 }; // mapPairs :: (Object, [String]) -> [String]
12
13
14 var mapPairs = function (obj, keys) {
15 return _map(function (k) {
16 return _quote(k) + ': ' + recur(obj[k]);
17 }, keys.slice().sort());
18 };
19
20 switch (Object.prototype.toString.call(x)) {
21 case '[object Arguments]':
22 return '(function() { return arguments; }(' + _map(recur, x).join(', ') + '))';
23
24 case '[object Array]':
25 return '[' + _map(recur, x).concat(mapPairs(x, reject(function (k) {
26 return /^\d+$/.test(k);
27 }, keys(x)))).join(', ') + ']';
28
29 case '[object Boolean]':
30 return typeof x === 'object' ? 'new Boolean(' + recur(x.valueOf()) + ')' : x.toString();
31
32 case '[object Date]':
33 return 'new Date(' + (isNaN(x.valueOf()) ? recur(NaN) : _quote(_toISOString(x))) + ')';
34
35 case '[object Map]':
36 return 'new Map(' + recur(Array.from(x)) + ')';
37
38 case '[object Null]':
39 return 'null';
40
41 case '[object Number]':
42 return typeof x === 'object' ? 'new Number(' + recur(x.valueOf()) + ')' : 1 / x === -Infinity ? '-0' : x.toString(10);
43
44 case '[object Set]':
45 return 'new Set(' + recur(Array.from(x).sort()) + ')';
46
47 case '[object String]':
48 return typeof x === 'object' ? 'new String(' + recur(x.valueOf()) + ')' : _quote(x);
49
50 case '[object Undefined]':
51 return 'undefined';
52
53 default:
54 if (typeof x.toString === 'function') {
55 var repr = x.toString();
56
57 if (repr !== '[object Object]') {
58 return repr;
59 }
60 }
61
62 return '{' + mapPairs(x, keys(x)).join(', ') + '}';
63 }
64}
Note: See TracBrowser for help on using the repository browser.