mirror of
https://github.com/Kornstalx/5etools-mirror-2.github.io.git
synced 2025-10-28 20:45:35 -05:00
v1.198.1
This commit is contained in:
81
js/utils-changelog.js
Normal file
81
js/utils-changelog.js
Normal file
@@ -0,0 +1,81 @@
|
||||
"use strict";
|
||||
|
||||
class UtilsChangelog {
|
||||
static _RELEASE_URL = "https://github.com/5etools-mirror-2/5etools-mirror-2.github.io/releases";
|
||||
|
||||
static renderChangelog (changelog, $wrp) {
|
||||
let lastMajorVersion = 0;
|
||||
let lastMinorVersion = 0;
|
||||
changelog.forEach((it, i) => {
|
||||
if (!it.txt) return;
|
||||
|
||||
let [vMajor, vMinor, vPatch] = it.ver.split(".");
|
||||
vMajor = Number(vMajor);
|
||||
vMinor = Number(vMinor);
|
||||
|
||||
const hLevel = vMajor !== lastMajorVersion ? "2" : vMinor !== lastMinorVersion ? "3" : "4";
|
||||
const blocks = it.txt.trim().split(/\n\n+/g);
|
||||
|
||||
let htmlStack = "";
|
||||
|
||||
const cleanListLine = l => l.trim().replace(/^-\s*/, "");
|
||||
|
||||
blocks.forEach(block => {
|
||||
htmlStack += `<div class="small mb-2">`;
|
||||
|
||||
const lines = block.split("\n");
|
||||
|
||||
let ulStack = [];
|
||||
let depth = -1;
|
||||
lines.forEach(l => {
|
||||
if (l.trim().startsWith("-")) {
|
||||
const nxtDepth = l.length - l.trimLeft().length;
|
||||
|
||||
if (nxtDepth > depth) {
|
||||
depth = nxtDepth;
|
||||
htmlStack += `<ul><li>${cleanListLine(l).qq()}</li>`;
|
||||
} else if (nxtDepth < depth) {
|
||||
depth = nxtDepth;
|
||||
htmlStack += `</ul><li>${cleanListLine(l).qq()}</li>`;
|
||||
} else {
|
||||
htmlStack += `<li>${cleanListLine(l).qq()}</li>`;
|
||||
}
|
||||
} else {
|
||||
while (ulStack.length) {
|
||||
ulStack.pop();
|
||||
htmlStack += "</ul>";
|
||||
}
|
||||
depth = -1;
|
||||
htmlStack += `<div class="mb-1">${l.qq()}</div>`;
|
||||
}
|
||||
});
|
||||
|
||||
while (ulStack.length) {
|
||||
ulStack.pop();
|
||||
htmlStack += "</ul>";
|
||||
}
|
||||
|
||||
htmlStack += `</div>`;
|
||||
});
|
||||
|
||||
htmlStack += `</div>`;
|
||||
|
||||
const isLast = i === changelog.length - 1;
|
||||
|
||||
const titlePart = it.title ? `, "<span ${it.titleAlt ? `class="help" title="AKA "${it.titleAlt.escapeQuotes()}" Edition"` : ""}>${it.title.escapeQuotes()}</span>" Edition` : "";
|
||||
$wrp.prepend(`<div class="ve-flex-col" id="v${it.ver}">
|
||||
<div class="split-v-center">
|
||||
<h${hLevel} class="bold">v${isLast ? `<a href="${UtilsChangelog._RELEASE_URL}" rel="noopener noreferrer">` : ""}${it.ver}${isLast ? `</a>` : ""}${titlePart}</h${hLevel}>
|
||||
<span class="text-muted">${it.date}</span>
|
||||
</div>
|
||||
|
||||
${htmlStack}
|
||||
</div>`);
|
||||
|
||||
lastMajorVersion = vMajor;
|
||||
lastMinorVersion = vMinor;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
globalThis.UtilsChangelog = UtilsChangelog;
|
||||
Reference in New Issue
Block a user