diff --git a/generate_v3.py b/generate_v3.py index 4af8b06..2ca2b90 100644 --- a/generate_v3.py +++ b/generate_v3.py @@ -5,6 +5,12 @@ from bs4 import BeautifulSoup import markdown +def parse_for_toc(content): + # TODO: ADD .TableofContent directly to the page (see hugo theme ?) + content = content.replace("[TOC]", "") + return content + + def parse_for_notice(content): result = re.findall(":::warning.*?:::", content, re.MULTILINE | re.DOTALL) for notice in result: @@ -42,7 +48,7 @@ def parse_for_notice(content): ":::", "{{% /notice %}}" ), ) - print(content) + # print(content) return content @@ -68,36 +74,58 @@ def parse_markdown_file(markdown_file_path, base_dir="./"): heading_level = int(element.name[1]) # Determine the directory to create for the heading - if heading_level == current_heading_level: - heading_dir = os.path.join(last_heading_dir, heading_text) - else: + print( + "heading_level: %s(%s) , heading_text: %s, base_dir: %s, last_heading_dir: %s, current_heading_dir: %s " + % ( + heading_level, + current_heading_level, + heading_text, + base_dir, + last_heading_dir, + current_heading_dir, + ) + ) + if heading_level == 1: + heading_dir = os.path.join(base_dir, heading_text) + current_heading_dir = heading_dir + last_heading_dir = base_dir + elif heading_level == current_heading_level: + heading_dir = os.path.join( + os.path.dirname(current_heading_dir), heading_text + ) + last_heading_dir = heading_dir + current_heading_dir = heading_dir + elif heading_level >= current_heading_level: heading_dir = os.path.join(current_heading_dir, heading_text) + last_heading_dir = current_heading_dir + current_heading_dir = heading_dir + else: + print("NOT SUPPORTED YET") if not os.path.exists(heading_dir): os.makedirs(heading_dir) # add _index.md for page organization with open(heading_dir + "/_index.md", "wb") as f: print("Created", heading_dir + "/_index.md") - index = ( - """ + index = """ +++ -title = "%s" +title = "{heading_text}" chapter = true weight = 5 +++ -# Basics +# {heading_text} Discover what this Hugo theme is all about and the core-concepts behind it. - """ - % heading_text + """.format( + heading_text=heading_text ) f.write(b"%s" % index.encode("utf-8")) # Set the current heading level and directory current_heading_level = heading_level - last_heading_dir = current_heading_dir - current_heading_dir = heading_dir + # last_heading_dir = current_heading_dir + # current_heading_dir = heading_dir elif element.name == "hr": current_heading_level = 0 @@ -122,6 +150,7 @@ Discover what this Hugo theme is all about and the core-concepts behind it. content = parse_for_notice( response.content.decode("utf-8") ).encode("utf-8") + content = parse_for_toc(content.decode("utf-8")).encode("utf-8") f.write(hugo_header.encode("utf-8")) f.write(content.replace(b"---", b"")) print("Downloaded", doc_link, "to", file_path)