hellgate/sigils/github.com

75 lines
3.5 KiB
Plaintext
Raw Permalink Normal View History

2021-04-23 23:43:02 +00:00
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()