75 lines
3.5 KiB
Plaintext
75 lines
3.5 KiB
Plaintext
|
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()
|