json-joy
Version:
Collection of libraries for building collaborative editing apps.
37 lines (36 loc) • 1.08 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.stringify = void 0;
/**
* @todo Rename to `toLine`?
*/
const stringify = (value, spacing = ' ') => {
switch (value) {
case null:
return '!n';
case undefined:
return '!u';
case true:
return '!t';
case false:
return '!f';
}
if (Array.isArray(value))
return `[${spacing}${value.map((v) => (0, exports.stringify)(v, spacing)).join(',' + spacing)}${spacing}]`;
if (value instanceof Uint8Array)
return `${value}`;
switch (typeof value) {
case 'number':
return `${value}`;
case 'string':
return JSON.stringify(value);
case 'object': {
const keys = Object.keys(value);
return `{${spacing}${keys
.map((k) => `${k}${spacing}=${spacing}${(0, exports.stringify)(value[k], spacing)}`)
.join(',' + spacing)}${spacing}}`;
}
}
return '?';
};
exports.stringify = stringify;
;