@hoppscotch/httpsnippet
Version:
HTTP Request snippet generator for *most* languages
62 lines • 2.79 kB
JavaScript
;
exports.__esModule = true;
exports.literalRepresentation = void 0;
function concatValues(concatType, values, pretty, indentation, indentLevel) {
var currentIndent = indentation.repeat(indentLevel);
var closingBraceIndent = indentation.repeat(indentLevel - 1);
var join = pretty ? ",\n".concat(currentIndent) : ', ';
var openingBrace = concatType === 'object' ? 'json!({' : '(';
var closingBrace = concatType === 'object' ? '})' : ')';
if (pretty) {
return "".concat(openingBrace, "\n").concat(currentIndent).concat(values.join(join), "\n").concat(closingBraceIndent).concat(closingBrace);
}
return "".concat(openingBrace).concat(values.join(join)).concat(closingBrace);
}
/**
* Create a valid Rust string of a literal value using serde_json according to its type.
*
* @param {*} value Any Javascript literal
* @param {Object} opts Target options
* @return {string}
*/
var literalRepresentation = function (value, opts, indentLevel) {
/*
* Note: this version is almost entirely borrowed from the Python client helper. The
* only real modification involves the braces and the types. The helper
* could potentially be parameterised for reuse.
*/
indentLevel = indentLevel === undefined ? 1 : indentLevel + 1;
switch (Object.prototype.toString.call(value)) {
case '[object Number]':
return value;
case '[object Array]': {
var pretty_1 = false;
var valuesRep = value.map(function (v) {
// Switch to prettify if the value is a dict with more than one key.
if (Object.prototype.toString.call(v) === '[object Object]') {
pretty_1 = Object.keys(v).length > 1;
}
return (0, exports.literalRepresentation)(v, opts, indentLevel);
});
return concatValues('array', valuesRep, pretty_1, opts.indent, indentLevel);
}
case '[object Object]': {
var keyValuePairs = [];
for (var key in value) {
keyValuePairs.push("\"".concat(key, "\": ").concat((0, exports.literalRepresentation)(value[key], opts, indentLevel)));
}
return concatValues('object', keyValuePairs, opts.pretty && keyValuePairs.length > 1, opts.indent, indentLevel);
}
case '[object Null]':
return 'json!(null)';
case '[object Boolean]':
return value ? 'true' : 'false';
default:
if (value === null || value === undefined) {
return '';
}
return "\"".concat(value.toString().replace(/"/g, '\\"'), "\"");
}
};
exports.literalRepresentation = literalRepresentation;
//# sourceMappingURL=helpers.js.map