From 1cdffa967eea30a7947fea23e665fc1e68ffbf58 Mon Sep 17 00:00:00 2001
From: davidovski ")\
- .replace("", " This repo has been compiled for web view on {date} and may not be the latest version", "
", "
", "")\
- .replace("")\
- .replace("
", "
", "")\
- .replace("")\
- .replace("
", "
", "")\
- .replace("")\
- .replace("
", "
", "")\
- .replace("")\
- .replace("
", "
", "")\
-
-def listPages():
- return [
- (lambda path:
- (lambda content:
- (lambda timestamp:
- (lambda name: {
- "source_file" : path,
- "source_content" : content,
- "html" : markdown.markdown("\n".join(content.split("\n...\n"))),
- "title" : content.split("\n")[0].replace("# ", ""),
- "summary" : lowerHeadings(markdown.markdown(content.split("\n...\n")[0])),
- "timestamp" : timestamp,
- "date": time.strftime(date_format, time.localtime(timestamp)),
- "name" : name,
- "url" : f"entries/{name}.html"
- })(".".join(p.split(".")[:-1]))
- )(os.stat(path).st_mtime)
- )(open(path, "r").read())
- )(os.path.join(source, p)) for p in os.listdir(source)
- ]
-
-
-def formatEntry(content, page):
- return content.replace("%date%", page["date"])\
- .replace("%name%", page["name"])\
- .replace("%time%", str(page["timestamp"]))\
- .replace("%source%", site_index + page["source_file"])\
- .replace("%url%", site_index + page["url"])
-
-def make():
-
- try:
- os.makedirs(os.path.join(dist, "entries"))
- except:
- print("Already have content")
- try:
- shutil.rmtree(os.path.join(dist, "src"))
- except:
- pass
- try:
- shutil.rmtree(os.path.join(dist, "images"))
- except:
- pass
- try:
- shutil.copytree(source, os.path.join(dist, "src"))
- except:
- pass
- try:
- shutil.copytree(images, os.path.join(dist, "images"))
- except:
- pass
-
- pages = listPages()
-
- pages = sorted(pages, key=lambda p: p["timestamp"])
-
- summary_templ = getTemplateHTML("summary.html")
-
- summariesHTML = getTemplateHTML("about.html").replace("%posts%", "\n")\
- .replace("
\n"+ "\n".join(
- [
- formatEntry(summary_templ, page)
- .replace(
- "%content%",
- page["summary"] + (f"read more..." if len(page["source_content"].split("\n...\n")) > 1 else "")
- ).replace("%title%", page["title"])
-
- for page in pages
- ][: : -1]
- ) + "
")
-
- entry_templ = getTemplateHTML("page.html")
-
-
- for page in pages:
- with open(os.path.join(dist, page["url"]), "w") as entry:
- entry.write(
- formatEntry(
- entry_templ,
- page
- )
- .replace("%content%", page["html"])
- )
-
-
-
- index_templ = getTemplateHTML("page.html")
-
- with open(os.path.join(dist, "index.html"), "w") as index:
- index.write(
- index_templ.replace("%content%", summariesHTML)
- )
-
-
- item_templ = getTemplateHTML("item.xml")
- rss_templ = getTemplateHTML("rss.xml")
- itemsXML = "\n".join(
- [
- formatEntry(item_templ, page).replace("%content%", page["html"])
- for page in pages
- ][: : -1]
- )
-
- with open(os.path.join(dist, "rss.xml"), "w") as index:
- index.write(
- rss_templ.replace("%items%", itemsXML)
- )
-
- for f in os.listdir(resources):
- shutil.copy(os.path.join(resources, f), dist)
-
- print(f"built in {len(pages)} pages")
-
-
-def get_repos():
- repos = []
- if os.path.exists("git_repos.txt"):
- with open("git_repos.txt", "r") as file:
- repos = [l for l in file.readlines() if l.startswith("http")]
- return repos
-
-def list_files(path):
- files = []
- dirlist = [path]
-
- while len(dirlist) > 0:
- for (dirpath, dirnames, filenames) in os.walk(dirlist.pop()):
- dirlist.extend(dirnames)
- files.extend(map(lambda n: os.path.join(*n), zip([dirpath] * len(filenames), filenames)))
- print(len(files))
-
- return files
-
-def linkify_path(path):
- output = []
- full = "/"
- for s in path.split("/"):
- full += s + "/"
- output.append(f"{s}")
- return "/" + "/".join(output)
-
-
-
-def format_file(page_templ, content, v):
- return page_templ.replace("%title%", v["name"])\
- .replace("%up%", v["above"])\
- .replace("%filename%", linkify_path(v["filename"]))\
- .replace("%commit%", str(v["commit"]))\
- .replace("%url%", str(v["url"]))\
- .replace("%content%", content)
-
-
-def traverse_repo(path, name, commit, url):
- page_templ = getTemplateHTML("page.html")
- page_templ = page_templ.replace("%content%", getTemplateHTML("file.html"))
-
- date = time.strftime(date_format, time.localtime())
- footer = f""
-
- index_content += f"
" + escape(content) + "