minecraft-text
Version:
Parse Minecraft text into many formats including HTML.
47 lines • 1.65 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.renderComponent = exports.wrap = void 0;
const parse_js_1 = __importDefault(require("./parse.js"));
const static_js_1 = require("./static.js");
function wrap(tag, content) {
return `<${tag}>${content}</${tag.split(" ")[0]}>`;
}
exports.wrap = wrap;
function renderComponent(jsonPart) {
let classlist = "";
let text = "";
for (const key of Object.keys(jsonPart)) {
if (key === "text") {
text += jsonPart.text;
continue;
}
if (static_js_1.Classes.hasOwnProperty(key)) {
classlist += " mc-" + static_js_1.Classes[key];
continue;
}
if (key === "color") {
classlist += " mc-" + jsonPart[key];
continue;
}
if (key === "extra") {
for (const jsonPartExtra of jsonPart.extra) {
text += renderComponent(jsonPartExtra);
}
}
}
classlist = classlist.replace(/dark_acqua/gm, "dark_aqua");
return wrap(`span${classlist.trim() !== "" ? ` class="${classlist.trim()}"` : ""}`, text);
}
exports.renderComponent = renderComponent;
function render(input, delimiter = "§") {
let json = (0, parse_js_1.default)(input, delimiter);
json = JSON.parse(JSON.stringify(json)
.split("\\n")
.join("<br>"));
return wrap("span class=\"mc\"", renderComponent(json));
}
exports.default = render;
//# sourceMappingURL=render.js.map
;