mirror of
https://github.com/MonitorControl/MonitorControl.git
synced 2026-05-15 14:15:55 -06:00
feat: Use github api for changelog
- Use the github api instead of scraping - Reorganize files
This commit is contained in:
parent
7207e53f85
commit
9ba2de58ab
4 changed files with 52 additions and 10 deletions
|
|
@ -3,25 +3,24 @@
|
|||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<link rel="stylesheet" href="changelog.css" />
|
||||
<link rel="stylesheet" href="./styles/changelog.css" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Changelog</title>
|
||||
<script src="./scripts/marked.min.js"></script>
|
||||
<script src="./scripts/marked-footnotes.min.js"></script>
|
||||
<script>
|
||||
const urlSearchParams = new URLSearchParams(window.location.search);
|
||||
const params = Object.fromEntries(urlSearchParams.entries());
|
||||
|
||||
if (params?.tag) {
|
||||
const url = `https://github.com/MonitorControl/MonitorControl/releases/tag/${params.tag}`;
|
||||
const proxy =
|
||||
'https://api.allorigins.win/get?url=' + encodeURIComponent(url);
|
||||
const url = `https://api.github.com/repos/MonitorControl/MonitorControl/releases/tags/${params.tag}`;
|
||||
let request = new XMLHttpRequest();
|
||||
request.open('GET', proxy, true);
|
||||
request.open('GET', url, true);
|
||||
request.onload = (event) => {
|
||||
const el = document.createElement('html');
|
||||
const page = JSON.parse(event.target.response);
|
||||
el.innerHTML = page.contents;
|
||||
const mk = el.getElementsByClassName('markdown-body')[0];
|
||||
document.body.appendChild(mk);
|
||||
const response = JSON.parse(event.target.response);
|
||||
const el = document.createElement('div');
|
||||
el.innerHTML = marked(response.body);
|
||||
document.body.appendChild(el);
|
||||
document.title = `Changelog ${params.tag}`;
|
||||
};
|
||||
request.send();
|
||||
|
|
|
|||
42
docs/scripts/marked-footnotes.min.js
vendored
Normal file
42
docs/scripts/marked-footnotes.min.js
vendored
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
const footnoteMatch = /^\[\^([^\]]+)\]:([\s\S]*)$/;
|
||||
const referenceMatch = /\[\^([^\]]+)\](?!\()/g;
|
||||
const referencePrefix = "fnref";
|
||||
const footnotePrefix = "fn";
|
||||
const footnoteTemplate = (ref, text) => {
|
||||
return `<p id="${footnotePrefix}:${ref}">${ref}. ${text}</p>`;
|
||||
};
|
||||
const footnoteContainerTemplate = (text) => {
|
||||
return `<h3>Footnotes</h3>${text}`
|
||||
}
|
||||
const referenceTemplate = ref => {
|
||||
return `<sup id="${referencePrefix}:${ref}"><a href="#${footnotePrefix}:${ref}">[${ref}]</a></sup>`;
|
||||
};
|
||||
const interpolateReferences = (text) => {
|
||||
return text.replace(referenceMatch, (_, ref) => {
|
||||
return referenceTemplate(ref);
|
||||
});
|
||||
}
|
||||
const interpolateFootnotes = (text) => {
|
||||
const found = text.match(footnoteMatch)
|
||||
if (found) {
|
||||
const replacedText = text.replace(footnoteMatch, (_, value, text) => {
|
||||
return footnoteTemplate(value, text);
|
||||
});
|
||||
return footnoteContainerTemplate(replacedText)
|
||||
}
|
||||
return text
|
||||
}
|
||||
|
||||
const renderer = {
|
||||
paragraph(text) {
|
||||
return marked.Renderer.prototype.paragraph.apply(null, [
|
||||
interpolateReferences(interpolateFootnotes(text))
|
||||
]);
|
||||
},
|
||||
text(text) {
|
||||
return marked.Renderer.prototype.text.apply(null, [
|
||||
interpolateReferences(interpolateFootnotes(text))
|
||||
]);
|
||||
}
|
||||
};
|
||||
marked.use({ renderer });
|
||||
1
docs/scripts/marked.min.js
vendored
Normal file
1
docs/scripts/marked.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue