From fa884624190f89f30dd2148d4f2a8a665c1f7f77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Wed, 26 Jan 2022 14:30:11 +0100 Subject: Interwiki links? --- do.py | 74 ++++++++++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 44 insertions(+), 30 deletions(-) diff --git a/do.py b/do.py index 7042a5f..0b93d7d 100755 --- a/do.py +++ b/do.py @@ -7,6 +7,7 @@ import subprocess from subprocess import PIPE import hashlib import os.path as path +from os.path import dirname import email from email.policy import default from datetime import datetime @@ -75,7 +76,7 @@ def split_into_paragraphs(str): def parse_options_paragraph(paragraphs): """ check the first paragraph for a definition list, and parse that - into variables + into variables """ options = {} @@ -95,7 +96,7 @@ def parse_options_paragraph(paragraphs): return options, paragraphs -def resolve_mail(mode, addr, frag, comment): +def resolve_mail(mode, source_file_name, addr, frag, comment): outstr = '' @@ -174,12 +175,12 @@ def resolve_mail(mode, addr, frag, comment): return outstr -def resolve_help(mode, addr, frag, comment): +def resolve_help(mode, source_file_name, addr, frag, comment): pass return '' -def resolve_file(mode, addr, frag, comment): +def resolve_file(mode, source_file_name, addr, frag, comment): extension = addr.split('.')[-1] full_file = path.join(path_base, addr) @@ -199,33 +200,44 @@ def resolve_file(mode, addr, frag, comment): return f.read() + '\n' -def resolve_default(mode, addr, frag, comment): +def generate_attachement(mode, data): outstr = '' - if addr == '': - page = get_heading(frag, data) - opts, paragraphs = parse_options_paragraph(split_into_paragraphs(page)) - options = { - 'mode': 'verbatim', - **opts - } + opts, paragraphs = parse_options_paragraph(split_into_paragraphs(data)) + options = { + 'mode': 'verbatim', + **opts + } - if mode == 'tex': - if options['mode'] == 'tex': - pass - else: - outstr += '\\begin{verbatim}\n' - for paragraph in paragraphs: - outstr += '\n'.join(paragraph) - outstr += '\n\n' - if mode == 'tex': - if options['mode'] == 'tex': - pass - else: - outstr += '\\end{verbatim}\n' + if mode == 'tex': + if options['mode'] == 'tex': + pass + else: + outstr += '\\begin{verbatim}\n' + for paragraph in paragraphs: + outstr += '\n'.join(paragraph) + outstr += '\n\n' + if mode == 'tex': + if options['mode'] == 'tex': + pass + else: + outstr += '\\end{verbatim}\n' + + return outstr + +def resolve_default(mode, source_file_name, addr, frag, comment): + outstr = '' + if addr == '': + outstr = generate_attachement(mode, get_heading(frag, data)) else: - print(addr) - print("Vimwiki intra-page links not yet supported") - outstr = '' + with open('{}/{}.wiki'.format(dirname(source_file_name), addr)) as f: + dat = f.read() + if frag == '': + outstr = dat + else: + outstr = generate_attachement(mode, get_heading(frag, dat)) + # print(addr) + # print("Vimwiki intra-page links not yet supported") + # outstr = '' return outstr # Should all take (mode string, url without protocol, fragment, comment) @@ -241,6 +253,8 @@ resolvers = { # TODO handle case where heading is missing def get_heading(name, data): + print(data) + print(name) start_match = re.search(f'(?m)^(=+) {name} =+$', data) print(start_match) heading_level = len(start_match.group(1)) @@ -366,13 +380,13 @@ if __name__ == '__main__': attach_str += f'\n{st}\n{"="*len(st)}\n' resolver = resolvers.get(proto, resolve_default) - attach_str += resolver(mode, addr, frag, comment) + attach_str += resolver(mode, infile, addr, frag, comment) bilagor += [attach_str] outstr += page1[pos:] - options = { + options = { 'date': '\\today' if mode == 'tex' else f'{datetime.now():%Y-%m-%d}', 'mode': 'vimwiki', } -- cgit v1.2.3