var a = (await Promise.all(Array.from($(".phui-oi-list-view").children).filter(li =>
{ {
let tableElement = li.children[0].children[0].children[0].children[0].children[0].children;
let commitNumber = tableElement[1].children[0].children[0].innerText;
commitNumber = +commitNumber.substring(2);
return commitNumber > 25016;
}).map(async (li) =>942;
}).map(async (li) => {
let tableElement = li.children[0].children[0].children[0].children[0].children[0].children;
let commitNumber = tableElement[1].children[0].children[0].innerText;
let revisionTitle = tableElement[1].children[0].children[1].innerText;
let committer = tableElement[2].children[1].children[0].children[0]?.text; || "";
let revisionUrl = "https://code.wildfiregames.com/" + commitNumber;
let contributor = await fetch(revisionUrl).then((response) => response.text()).then((html) => html.match(/Patch by\s*:\s*(?:(?!<br>).*)/g))
String = null;
if(let contributor == null await fetch(revisionUrl)
contributor = committer;.then((response) => response?.text() || "")
else .then((html) => html.match(/Patch by\s*:\s*[^@]*@*(?<nick>[^><]+).*/g));
{if (contributor === null)
contributor = contributor[0].replace(/.*@([^<]*).*/,"$1");String = committer;
contributor = contributor.replace(/.*:\s*([^<]*).*/,"$1");else {
contributorString = contributor[0].replace(/Patch by\s*:\s*[^@]*@*(?<nick>[^><]+).*/g, "$1");
}
return {
"contributor": contributorString,
"commitNumber": commitNumber,
"contributed": contributor !== null,
"revisionTitle": revisionTitle,
"revisionUrl": "https://code.wildfiregames.com/" + commitNumber,
}
}))).reduce(function (rv, x)
{x) {
(rv[x.contributor] = rv[x.contributor] || []).push({
"revisionTitle": x.revisionTitle,
"commitNumber": x.commitNumber,
"contributed": x.contributed,
"revisionUrl": x.revisionUrl
});
return rv;
}, {});
var div = document.createElement("div");
sortedContributorNames = Object.keys(a).filter(b => b != "autobuild");div.id = "summary-output";
var sortedContributorNames.sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));s = Object.keys(a).filter(b => b != "autobuild");
div.innerHTML = sortedContributorNames.map(contributorName =>
{
var contributorData = a[contributorName];sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));
var string = `<strong>${cdiv.innerHTML = sortedContributorName}</strong> committed:\n<ul>`s.map(contributorName => {
for (let commit of let contributorData = a[contributorData)Name];
{
let string += `<listrong>${commit.commitNumber} <a href="${commit.revisionUrl}">${commit.revisionTitle}</a><li>`ntributorName}</strong> ${(contributorData[0].contributed ? "contributed" : "committed")}:\n<ul>`
}string += contributorData.map(commit => `<li>${commit.commitNumber} <a href="${commit.revisionUrl}">${commit.revisionTitle}</a><li>`).join("");
string += `</ul>`;
return string;
}).join("<br/>");
document.getElementById("main-page-frame").prepend(div);