def rename_post() -> None: blog_post = get_blog_post_by_id() old_slug_path = blog_post.slug_path blog_post.name = input(f"Rename post \"{blog_post.name}\" to: ") os.rename(old_slug_path, blog_post.slug_path) db.commit() done()
def compile_blog_post(blog_post: BlogPost) -> None: print(f"Compiling blog post \"{blog_post.name}\"... ", end="", flush=True) if blog_post.include_in_graph: lenient_error("Cannot compile graph page individually!") return compile_post(blog_post) done()
def compile_all_graph_pages() -> None: print("Compiling graph pages...") definitions = create_node_definitions() if nodes := get_all_nodes().all(): for node in nodes: print(f"Compiling graph page \"{node.name}\"... ", end="", flush=True) create_node_interstage(definitions, node) compile_post(node) done() done()
def save_changes() -> None: print("Saving changes... ", end="") try: db.commit() done() except IntegrityError: print("Error!\n\n" + "This error was caused by invalid data.\n" + "You probably created multiple records with non-unique names.")
def spellcheck() -> None: en_checker = SpellChecker(language="en") de_checker = SpellChecker(language="de") for post in db.query(BlogPost): markdown = read_file(post.markdown_path) for i, line in enumerate(markdown.splitlines()): words = [re.sub(r"[^a-zA-Z ]", "", word) for word in line.replace("-", " ").split()] words = [word for word in words if word] unknown_en_words = en_checker.unknown(words) unknown_de_words = de_checker.unknown(words) unknown_words = [word for word in unknown_en_words if word in unknown_de_words] for unknown_word in unknown_words: print(f"In \"{post.name}\" (line {i + 1}): Unknown word \"{unknown_word}\".") done()
def clean_compiler_output() -> None: print("Cleaning directory... ", end="") if os.path.exists(GENERATED_RESOURCES_PATH): rmtree(GENERATED_RESOURCES_PATH) os.makedirs(GENERATED_RESOURCES_PATH) done()
def compile_all_blog_posts() -> None: print("Compiling blog posts...") if blog_posts := get_all_blog_posts().all(): for blog_post in blog_posts: compile_blog_post(blog_post) done()