43 lines
1.2 KiB
JavaScript
43 lines
1.2 KiB
JavaScript
"use strict";
|
|
|
|
var slice = require("@sinonjs/commons").prototypes.string.slice;
|
|
var typeOf = require("@sinonjs/commons").typeOf;
|
|
var valueToString = require("@sinonjs/commons").valueToString;
|
|
|
|
module.exports = function iterableToString(obj) {
|
|
var representation = "";
|
|
|
|
function stringify(item) {
|
|
return typeof item === "string"
|
|
? "'" + item + "'"
|
|
: valueToString(item);
|
|
}
|
|
|
|
function mapToString(map) {
|
|
/* eslint-disable-next-line local-rules/no-prototype-methods */
|
|
map.forEach(function(value, key) {
|
|
representation +=
|
|
"[" + stringify(key) + "," + stringify(value) + "],";
|
|
});
|
|
|
|
representation = slice(representation, 0, -1);
|
|
return representation;
|
|
}
|
|
|
|
function genericIterableToString(iterable) {
|
|
/* eslint-disable-next-line local-rules/no-prototype-methods */
|
|
iterable.forEach(function(value) {
|
|
representation += stringify(value) + ",";
|
|
});
|
|
|
|
representation = slice(representation, 0, -1);
|
|
return representation;
|
|
}
|
|
|
|
if (typeOf(obj) === "map") {
|
|
return mapToString(obj);
|
|
}
|
|
|
|
return genericIterableToString(obj);
|
|
};
|