hellgate/sigils/github.com

75 lines
3.5 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

async function gen_gemtext() {
var data = ""
// wait for the page to actually finish loading
// ideally we would use a mutation observer here but i am lazy
await new Promise((resolve,reject) => {
setTimeout(resolve, 900)
});
if (document.querySelector("span[itemprop='author']") === null) {
window.electron.send_gemtext(window.electron.default_sigil())
return
} else {
var title = document.querySelector("span[itemprop='author']").innerText
+ " / "
+ document.querySelector("strong[itemprop='name']").innerText
data += "# " + title + "\n"
var latest_commit = document.querySelector("div.Box-header")
if (latest_commit !== null) {
latest_commit = latest_commit.innerText.replaceAll("\n", " ").replace(/History$/, "")
data += "\n" + latest_commit + "\n"
}
var file_list = document.querySelector("div.repository-content")
if (file_list !== null) {
var file_elements = file_list.querySelectorAll("div.Box-row")
if (file_elements.length !== 0) {
data += "\n## Files\n\n"
for (let i = 0; i < file_elements.length; i++) {
let file_element = file_elements[i]
if (file_element.innerText == "..") { continue }
let link_el = file_element.querySelector("a.js-navigation-open.Link--primary")
let file_title = link_el.innerText
let file_link = link_el.getAttribute("href")
let last_updated = file_element.querySelector("div.color-text-tertiary.text-right").innerText
data += "=> "
+ window.electron.abs_href(file_link)
+ " "
+ file_title
+ "\n"
+ "* " + "Last updated " + last_updated.trim() + "\n"
}
} else {
var code_lines = document.querySelectorAll("td.blob-num[data-line-number]")
var num_lines = code_lines.length
var file_name = document.querySelector("strong.final-path")
var raw_link = document.querySelector("a#raw-url")
if (file_name) {
data += "\n## " + file_name.innerText + "\n\n"
}
if (num_lines !== 0) {
data += "```\n"
code_lines.forEach((line) => {
let line_num = line.getAttribute("data-line-number")
let padding = String(num_lines).length - String(line_num).length
let line_contents = line.nextElementSibling.innerText.replace(/^\n$/, "")
data += line_num + " ".repeat(padding) +"| " + line_contents + "\n"
})
data += "```\n"
}
}
}
var readme_box = document.querySelector("div#readme")
if (readme_box) {
data += "\n----------\n"
var md_contents = document.querySelector("article.markdown-body.entry-content[itemprop='text']")
if (md_contents) {
data += window.electron.md_parse("article.markdown-body.entry-content[itemprop='text']")
} else {
data += readme_box.innerText
}
}
}
window.electron.send_gemtext(data)
}
gen_gemtext()