Permalink
Cannot retrieve contributors at this time
71 lines (60 sloc)
1.83 KB
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
codeql-action/node_modules/@sinonjs/samsam/lib/iterable-to-string.js
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"use strict"; | |
var slice = require("@sinonjs/commons").prototypes.string.slice; | |
var typeOf = require("@sinonjs/commons").typeOf; | |
var valueToString = require("@sinonjs/commons").valueToString; | |
/** | |
* Creates a string represenation of an iterable object | |
* | |
* @private | |
* @param {object} obj The iterable object to stringify | |
* @returns {string} A string representation | |
*/ | |
function iterableToString(obj) { | |
if (typeOf(obj) === "map") { | |
return mapToString(obj); | |
} | |
return genericIterableToString(obj); | |
} | |
/** | |
* Creates a string representation of a Map | |
* | |
* @private | |
* @param {Map} map The map to stringify | |
* @returns {string} A string representation | |
*/ | |
function mapToString(map) { | |
var representation = ""; | |
// eslint-disable-next-line @sinonjs/no-prototype-methods/no-prototype-methods | |
map.forEach(function (value, key) { | |
representation += `[${stringify(key)},${stringify(value)}],`; | |
}); | |
representation = slice(representation, 0, -1); | |
return representation; | |
} | |
/** | |
* Create a string represenation for an iterable | |
* | |
* @private | |
* @param {object} iterable The iterable to stringify | |
* @returns {string} A string representation | |
*/ | |
function genericIterableToString(iterable) { | |
var representation = ""; | |
// eslint-disable-next-line @sinonjs/no-prototype-methods/no-prototype-methods | |
iterable.forEach(function (value) { | |
representation += `${stringify(value)},`; | |
}); | |
representation = slice(representation, 0, -1); | |
return representation; | |
} | |
/** | |
* Creates a string representation of the passed `item` | |
* | |
* @private | |
* @param {object} item The item to stringify | |
* @returns {string} A string representation of `item` | |
*/ | |
function stringify(item) { | |
return typeof item === "string" ? `'${item}'` : valueToString(item); | |
} | |
module.exports = iterableToString; |