@minofrk/msf-pretty-print
Version:
An opinionated pretty-printer for MSF format.
35 lines • 1.38 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
exports.__esModule = true;
var json_stable_stringify_1 = __importDefault(require("json-stable-stringify"));
var constants_1 = require("./constants");
var format_1 = __importDefault(require("./format"));
var comparator_1 = __importDefault(require("./comparator"));
var Option_1 = require("fp-ts/lib/Option");
function msfPrettyPrint(source) {
var replacements = [];
var replacer = function (key, value) {
var product = format_1["default"](key, value);
if (Option_1.isNone(product))
return value;
replacements.push(product.value);
return '$' + (replacements.length - 1);
};
var options = {
replacer: replacer,
space: constants_1.indentString,
cmp: function (x, y) { return comparator_1["default"](x.key, y.key); }
};
return json_stable_stringify_1["default"](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]);
});
}
exports["default"] = msfPrettyPrint;
//# sourceMappingURL=index.js.map