@minofrk/msf-pretty-print
Version:
An opinionated pretty-printer for MSF format.
29 lines • 1.03 kB
JavaScript
import stringify from 'json-stable-stringify';
import { indentString } from './constants';
import format from './format';
import comparator from './comparator';
import { isNone } from 'fp-ts/lib/Option';
export default function msfPrettyPrint(source) {
var replacements = [];
var replacer = function (key, value) {
var product = format(key, value);
if (isNone(product))
return value;
replacements.push(product.value);
return '$' + (replacements.length - 1);
};
var options = {
replacer: replacer,
space: indentString,
cmp: function (x, y) { return comparator(x.key, y.key); }
};
return stringify(source, options).replace(/^(\s*)(".*?": )"\$(\d+)"(,?)$/gm, function () {
var $ = [];
for (var _i = 0; _i < arguments.length; _i++) {
$[_i] = arguments[_i];
}
var item = $[2] + replacements[Number($[3])] + $[4];
return item.replace(/^/gm, $[1]);
});
}
//# sourceMappingURL=index.js.map