source: node_modules/ramda/src/internal/_toString.js

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

Initial commit

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