On Monday, August 28, 2023 at 4:56:12 AM UTC-4 p.os...@datec.at wrote: Yes, that's the point. It simply should work as the RST-plugin does.
I wrote a small script that does what I think you want, although only for a single @md file at a time. The top-level node must have a headline that starts with "*@md *" and a filename or path, like this: @md test.md. This node may optionally be the child of an *@path *node to write the output file somewhere else besides the outline's location. To use the command, select any node in the markdown's subtree and invoke the command. Note that the command as currently written will not recognize an *@auto-md* node. The node's headline has to start with *@md *. All headlines will be indented according to their nesting level, except that the top node, the one with the file name, will not have a heading (since the *@md * headline wouldn't make much sense, at least to me). There are no extra features such as the rst3 command has, but it's a start. Try it out, see what you think or want to change. @language python """Write an @md file tree with headings corresponding to node indentation. Searches node and parents to find the nearest node headline beginning with *@md*, then writes the entire subtree of that node. Output file is written to the path in effect at the @md node. """ from pathlib import Path MD_PREFIX = '@md ' def find_md_root(p): """Return the top position of an @md tree or None. The top headline must begin with "@md ". """ for p0 in p.self_and_parents(): if p0.h.startswith(MD_PREFIX): break else: p0 = None return p0 def walk_md(root): """Return a string for the markdown file from root position. Headlines are indented relative to their nesting level under the root.""" markdown = '' root_indent = root.level() for p in root.self_and_subtree(): if p.h and p != root: indent = p.level() - root_indent + 1 markdown += '#' * indent markdown += p.h + '\n' markdown += p.b + '\n' return markdown root = find_md_root(p) # Get path for node; path does not include the filename path = Path(c.getNodePath(root)) if root else None if path and path.exists(): fname = root.h[len(MD_PREFIX):] path = path.joinpath(Path(fname)) md = walk_md(root) try: with open(path, 'w', encoding = 'utf-8') as f: f.write(md) g.es(f'Wrote {path}') except Exception as e: g.es(f'Could not write file at {path}: {e}') else: g.es(f'Path {path} does not exist') -- You received this message because you are subscribed to the Google Groups "leo-editor" group. To unsubscribe from this group and stop receiving emails from it, send an email to leo-editor+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/leo-editor/4567edf0-7da8-4064-bdea-c4d4d44d93ebn%40googlegroups.com.