Web/main/actaddmanual/index.js
Ell 812fe57577
All checks were successful
ci/woodpecker/push/main Pipeline was successful
cool cleanup club
2023-08-07 14:04:06 +02:00

67 lines
2.1 KiB
JavaScript

const replacements = new Map();
replacements.set(/<imp>([^<]*)<r>/g, function (content) {
return `<span class="imp">${content}</span>`;
});
replacements.set(/<item>([^<]*)<r>/g, function (content) {
return `<span class="item">${content}</span>`;
});
replacements.set(/<n>/g, function (_content) {
return "<br>";
});
replacements.set(/<i>([^<]*)<r>/g, function (content) {
return `<em>${content}</em>`;
});
replacements.set(/<tifisgrin>([^<]*)<r>/g, function (content) {
return `<span class="tifisgrin">${content}</span>`;
});
$.ajax({
url: "https://cdn.jsdelivr.net/gh/Ellpeck/ActuallyAdditions@1.12.2/src/main/resources/assets/actuallyadditions/lang/en_US.lang",
cache: false,
success: populateManual
});
function populateManual(lang) {
let startIndex = lang.indexOf("#Booklet Chapters");
let data = lang.substring(startIndex + 18);
let entries = $("#entries");
let sidebar = $("#sidebar-content");
for (let topic of data.split("\n\n")) {
let lines = topic.split("\n");
let t = "<div class=\"entry rounded\">";
// first line is name
let name = lines[0].substring(lines[0].indexOf("=") + 1);
let id = lines[0].match(/chapter\.([^.]*)\.name/)[1];
sidebar.append(`<a href=#${id}>${name}</a>`);
t += `<h1 id="${id}">${name}</h1>`;
// following lines are content
for (let i = 1; i < lines.length; i++) {
let text = lines[i].substring(lines[i].indexOf("=") + 1);
t += `<p>${replaceFormatting(text)}</p>`;
}
t += "</div>";
entries.append(t);
}
// force-scroll to proper anchor
if (location.hash.startsWith("#")) {
let element = $(location.hash);
if (element.length) {
$("html, body").animate({
scrollTop: element.offset().top
}, 0);
}
}
}
function replaceFormatting(text) {
for (let [k, v] of replacements.entries()) {
const finalV = v;
text = text.replace(k, function (_substring, group) {
return finalV(group);
});
}
return text;
}