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