Browse Source

[FIX] folder hierarchy and some tricks :)

refactor_hedgedoc_parser
Nicolas JEUDY 1 year ago
parent
commit
846692b133
  1. 53
      generate_v3.py

53
generate_v3.py

@ -5,6 +5,12 @@ from bs4 import BeautifulSoup
import markdown 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): def parse_for_notice(content):
result = re.findall(":::warning.*?:::", content, re.MULTILINE | re.DOTALL) result = re.findall(":::warning.*?:::", content, re.MULTILINE | re.DOTALL)
for notice in result: for notice in result:
@ -42,7 +48,7 @@ def parse_for_notice(content):
":::", "{{% /notice %}}" ":::", "{{% /notice %}}"
), ),
) )
print(content)
# print(content)
return content return content
@ -68,36 +74,58 @@ def parse_markdown_file(markdown_file_path, base_dir="./"):
heading_level = int(element.name[1]) heading_level = int(element.name[1])
# Determine the directory to create for the heading # 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) 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): if not os.path.exists(heading_dir):
os.makedirs(heading_dir) os.makedirs(heading_dir)
# add _index.md for page organization # add _index.md for page organization
with open(heading_dir + "/_index.md", "wb") as f: with open(heading_dir + "/_index.md", "wb") as f:
print("Created", heading_dir + "/_index.md") print("Created", heading_dir + "/_index.md")
index = (
"""
index = """
+++ +++
title = "%s"
title = "{heading_text}"
chapter = true chapter = true
weight = 5 weight = 5
+++ +++
# Basics
# {heading_text}
Discover what this Hugo theme is all about and the core-concepts behind it. 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")) f.write(b"%s" % index.encode("utf-8"))
# Set the current heading level and directory # Set the current heading level and directory
current_heading_level = heading_level 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": elif element.name == "hr":
current_heading_level = 0 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( content = parse_for_notice(
response.content.decode("utf-8") response.content.decode("utf-8")
).encode("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(hugo_header.encode("utf-8"))
f.write(content.replace(b"---", b"")) f.write(content.replace(b"---", b""))
print("Downloaded", doc_link, "to", file_path) print("Downloaded", doc_link, "to", file_path)

Loading…
Cancel
Save