UNPKG

@minofrk/msf-pretty-print

Version:

An opinionated pretty-printer for MSF format.

35 lines 1.38 kB
"use strict"; 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