UNPKG

beth-parser

Version:

Parser library for Bethesda's Creation Engine data files

67 lines 2.28 kB
"use strict"; exports.__esModule = true; /** * Render context. */ var RenderContext; (function (RenderContext) { RenderContext[RenderContext["NONE"] = 0] = "NONE"; RenderContext[RenderContext["OBJECT"] = 1] = "OBJECT"; RenderContext[RenderContext["SEQUENCE"] = 2] = "SEQUENCE"; })(RenderContext || (RenderContext = {})); /** * Render array-like structure. */ function renderArray(subject, prefix, indent, context) { // Ignore empty array if (!subject.length) { return ""; } // Render every element on it's own line return (context !== RenderContext.NONE ? "\n" + indent : "") + subject .map(function (value) { return "-" + renderValue(value, " ", indent + " ", RenderContext.SEQUENCE); }) .join("\n" + indent); } /** * Render object-like structure. */ function renderObject(subject, prefix, indent, context) { // Remove NULL values var props = Object.entries(subject).filter(function (prop) { return prop[1] !== null; }); // Render every property on it's own line return (context === RenderContext.OBJECT ? "\n" + indent : prefix) + props .map(function (_a) { var name = _a[0], value = _a[1]; return name + ":" + renderValue(value, " ", indent, RenderContext.OBJECT); }) .join("\n" + indent); } /** * Render generic value. */ function renderValue(subject, prefix, indent, context) { if (context === void 0) { context = RenderContext.NONE; } if (Buffer.isBuffer(subject)) { return prefix + "[" + subject.toString("hex") + "]"; } else if (Array.isArray(subject)) { return renderArray(subject, prefix, indent, context); } else if (subject.toJSON) { return renderValue(subject.toJSON(), prefix, indent, context); } else if (typeof subject === "object") { return renderObject(subject, prefix, context === RenderContext.OBJECT ? indent + " " : indent, context); } else { return prefix + subject.toString(); } } /** * Render value in a YAML-like structure. */ function renderYamlLike(subject) { return renderValue(subject, "", ""); } exports["default"] = renderYamlLike; //# sourceMappingURL=renderYamlLike.js.map