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()
|