diff --git a/source/_posts/2025-07-27.md b/source/_posts/2025-07-27.md new file mode 100644 index 0000000..97f6b64 --- /dev/null +++ b/source/_posts/2025-07-27.md @@ -0,0 +1,33 @@ +--- +title: Separate markdown headings into pages +date: 2025-07-27 +--- + +Previously the [Threat Hunting](/threat-hunting/) page contained all search queries in one page separated by headings. That approach was untidy especially when conducting a web search; where after being redirected to the threat hunting page, still had to navigate to the relevant heading to locate the relevant search query. + +Each heading or search query is now in a [separate page](https://gitlab.com/curben/blog/-/commit/4922492c959627fe7beeb678c13e29efee79b540), so once those new pages are indexed by search engine, the search result will lead directly to a page that only contains the relevant search query, e.g. [FileFix detection](/threat-hunting/filefix-detection). + +```py +from os import chdir, path +from re import S, findall, sub + +chdir(path.dirname(__file__)) + +template = """--- +title: {title} +layout: page +date: 2025-07-27 +--- +{content}""" + +with open("index.md") as f: + s = f.read() + # https://stackoverflow.com/a/66619938 + for title, content in findall(r"(?:^|\n)##\s([^\n]+)\n(.*?)(?=\n##?\s|$)", s, S): + # https://stackoverflow.com/a/74260791 + fname = sub(r"\W+", "-", title).strip("-").lower() + with open(fname + ".md", "w") as w: + w.write(template.format(title=title, content=content)) + with open("index-new.md", "a") as a: + a.write(f"- [{title}]({fname})\n") +```