X-Git-Url: https://git.madduck.net/etc/neomutt.git/blobdiff_plain/511e5af574f774aa14b19034f00f3ac5ad987c8b..dd824d822450c4155e80cdef747ccdeff83fd9d6:/.config/neomutt/buildmimetree.py diff --git a/.config/neomutt/buildmimetree.py b/.config/neomutt/buildmimetree.py index 2dac39c..fe85167 100755 --- a/.config/neomutt/buildmimetree.py +++ b/.config/neomutt/buildmimetree.py @@ -140,26 +140,29 @@ class Multipart( return f" children={len(self.children)}" -def convert_markdown_to_html(maildraft, *, extensions=None): - draftpath = pathlib.Path(maildraft) - with open(draftpath, "r", encoding="utf-8") as textmarkdown: - text = textmarkdown.read() +def convert_markdown_to_html( + origtext, draftpath, *, filewriter_fn=None, extensions=None +): mdwn = markdown.Markdown(extensions=extensions) + if not filewriter_fn: + + def filewriter_fn(path, content, mode="w", **kwargs): + with open(path, mode, **kwargs) as out_f: + out_f.write(content) - with open(draftpath, "w", encoding="utf-8") as textplain: - textplain.write(text) + filewriter_fn(draftpath, origtext, encoding="utf-8") textpart = Part( "text", "plain", draftpath, "Plain-text version", orig=True ) - html = mdwn.convert(text) + htmltext = mdwn.convert(origtext) + htmlpath = draftpath.with_suffix(".html") - with open( - htmlpath, "w", encoding="utf-8", errors="xmlcharrefreplace" - ) as texthtml: - texthtml.write(html) + filewriter_fn( + htmlpath, htmltext, encoding="utf-8", errors="xmlcharrefreplace" + ) htmlpart = Part("text", "html", htmlpath, "HTML version") logopart = Part( @@ -301,6 +304,8 @@ def do_setup( editor = f"{sys.argv[0]} massage --write-commands-to {temppath}" if extensions: editor = f'{editor} --extensions {",".join(extensions)}' + if debug_commands: + editor = f'{editor} --debug-commands' cmds.cmd('set my_editor="$editor"') cmds.cmd('set my_edit_headers="$edit_headers"') @@ -339,7 +344,10 @@ def do_massage( cmds.flush() extensions = extensions.split(",") if extensions else [] - tree = converter(maildraft, extensions=extensions) + with open(maildraft, "r") as draft_f: + tree = converter( + draft_f.read(), pathlib.Path(maildraft), extensions=extensions + ) mimetree = MIMETreeDFWalker(debug=debug_walk) @@ -370,8 +378,6 @@ def do_massage( # tree now: if item.cid: cmds.push(f"\\Ca\\Ck{item.cid}") - if item.desc: - cmds.push(f"\\Ca\\Ck{item.desc}") elif isinstance(item, Multipart): # This node has children, but we already visited them (see @@ -385,14 +391,14 @@ def do_massage( elif item.subtype == "multilingual": cmds.push("") - # Again, if there is a description, we might just as well: - if item.desc: - cmds.push(f"\\Ca\\Ck{item.desc}") - else: # We should never get here assert not "is valid part" + # If the item has a description, we might just as well add it + if item.desc: + cmds.push(f"\\Ca\\Ck{item.desc}") + # Finally, if we're at non-root level, tag the new container, # as it might itself be part of a container, to be processed # one level up: