async function gen_gemtext() { // 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) }); var data = "" var repo_node = document.getElementById("content-body") if (repo_node !== null && repo_node.getAttribute("itemtype") === "http://schema.org/SoftwareSourceCode" ) { var repo_title = repo_node .querySelector("h1[data-qa-selector='project_name_content']") if (repo_title !== null) { data += "# " + repo_title.innerText + "\n\n" } var project_stats = repo_node.querySelector("nav.project-stats") if (project_stats !== null) { project_stats = project_stats.innerText.replaceAll("\n ", " ").replaceAll("\n", " | ") data += project_stats + "\n" } var latest_commit = repo_node.querySelector("div.commit-detail.flex-list") if (latest_commit !== null) { latest_commit = latest_commit.innerText data += "\n## Last updated: \n\n" data += latest_commit + "\n" } file_node_list = repo_node.querySelectorAll("tr.tree-item") if (file_node_list.length !== 0) { data += "\n## Files\n\n" for (let file_node of file_node_list) { if (file_node.innerText === "..") { continue } let file_link = file_node.querySelector("a.tree-item-link") if (file_link !== null) { file_link = window.electron.abs_href(file_link.getAttribute("href")) } let file_info = file_node.innerText.replace(/\t.*\t/, "\n* Last updated ") data += "=> " + file_link + " " + file_info + "\n" } } var readme_node = repo_node.querySelector("div.blob-viewer > div.file-content.md") var code_node = repo_node.querySelector("div.blob-viewer > div.file-content.code") if (readme_node !== null) { data += "\n----------\n" data += window.electron.md_parse("div.blob-viewer > div.file-content.md") } else if (code_node !== null) { var file_name = document.querySelector("div.file-header-content").innerText var code_lines = code_node.querySelectorAll("span.line") var num_lines = code_lines.length var raw_link = document.querySelector("a[aria-label='Open raw'") if (raw_link) { raw_link = window.electron.abs_href(raw_link.getAttribute("href")) data += "\n=> " + raw_link + " Raw" } if (num_lines !== 0) { data += "\n\n# " + file_name.replace("\n", "").replace("\n", "|") + "\n\n" data += "```\n" for (let i = 0; i < code_lines.length; i++) { let padding = String(num_lines).length - String(i + 1).length let code_line = code_lines[i] data += String(i + 1) + " ".repeat(padding) + "| " + code_line.innerText + "\n" } data += "```\n" } } window.electron.send_gemtext(data) } else { window.electron.send_gemtext(window.electron.default_sigil()) } } gen_gemtext()