import os from html5tagger import Document, E, HTML from shutil import rmtree import markdown #if homepage is at Home.page, set homepage to "Home" homepage = "Home" try: os.mkdir("./website-output") except FileExistsError: print("Output directory already exists, let's clean it!") #deleting contents of folder without deleting the folder, to increase compatibility with various systems for root, dirs, files in os.walk('./website-output'): for f in files: os.unlink(os.path.join(root, f)) for d in dirs: rmtree(os.path.join(root, d)) def generateNavigationBar(lines): global navbar navbar = E for line in lines: title, link = line.strip().split(";", 1) navbar = navbar.li(HTML("" + title + "")) def generateLines(title, lines): title = title.replace(".page", "") doc = Document(title, lang="en") rawhtml = False for line in lines: #raw html start if line.strip() == ">": rawhtml = True html = "" #parse indented raw html elif rawhtml == True: if line.startswith(" "): html = html + line.strip() else: rawhtml = False doc(HTML(html)) #parse markdown else: md = markdown.markdown(line.strip()) doc(HTML(md)) #if indented html was the last line, this is needed for it to not be ignored if rawhtml == True: rawhtml = False doc(HTML(html)) generatePage(title, doc) def generatePage(title, doc): #creates ./website-output/pagetitle/index.html file if it is not homepage foldername = "" if title != homepage: foldername = "/" + title.replace(" ", "-").lower() os.mkdir("./website-output" + foldername) with open("./website-output" + foldername + "/index.html", 'w') as newpage: if 'navbar' in globals(): newpage.write(str(E.ul(navbar)) + str(doc)) else: newpage.write(str(doc)) if os.path.exists("./navbar"): with open("./navbar", 'r') as navbarfile: generateNavigationBar(navbarfile.readlines()) else: print("No 'navbar' file found, there will be no navigation bar.") pagescount = 0 for file in os.listdir("./"): if file.endswith(".page"): with open(file, 'r') as page: generateLines(os.path.basename(file), page.readlines()) pagescount=pagescount+1 print("Generated " + str(pagescount) + " pages")