summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2021-08-20 17:44:03 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2021-08-20 17:44:03 +0200
commit202b74e54885f88a546f721a6a8bbde3e825eb13 (patch)
tree872f78cef25dd846167ab9a66cb1b4f9f7aabd78
parentMove stuff into main, makeing code library loadable. (diff)
downloadvimwiki-scripts-202b74e54885f88a546f721a6a8bbde3e825eb13.tar.gz
vimwiki-scripts-202b74e54885f88a546f721a6a8bbde3e825eb13.tar.xz
Support mode option for inline attachements.
-rwxr-xr-xdo.py101
1 files changed, 66 insertions, 35 deletions
diff --git a/do.py b/do.py
index 89d56fa..7042a5f 100755
--- a/do.py
+++ b/do.py
@@ -57,6 +57,43 @@ def texify_filename(str):
return out
+def split_into_paragraphs(str):
+ lines = str.split('\n')
+ paragraphs = []
+ paragraph = []
+ for line in lines:
+ if line == '':
+ if paragraph == []:
+ continue
+ else:
+ paragraphs.append(paragraph)
+ paragraph = []
+ else:
+ paragraph.append(line)
+ return paragraphs
+
+def parse_options_paragraph(paragraphs):
+ """
+ check the first paragraph for a definition list, and parse that
+ into variables
+ """
+
+ options = {}
+
+ for i in range(len(paragraphs[0])):
+ line = paragraphs[0][i]
+ if m := re.match('^(\w+)\s*::\s*(.*)', line):
+ options[m[1]] = m[2]
+ else:
+ # remove handled lines, keep remaining lines in paragraphs list
+ paragraphs[0] = paragraphs[0][i:]
+ break
+ else:
+ # remove first paragraph from paragraphs list
+ paragraphs = paragraphs[1:]
+
+ return options, paragraphs
+
def resolve_mail(mode, addr, frag, comment):
@@ -166,11 +203,25 @@ def resolve_default(mode, addr, frag, comment):
outstr = ''
if addr == '':
page = get_heading(frag, data)
+ opts, paragraphs = parse_options_paragraph(split_into_paragraphs(page))
+ options = {
+ 'mode': 'verbatim',
+ **opts
+ }
+
if mode == 'tex':
- outstr += '\\begin{verbatim}\n'
- outstr += page + '\n'
+ if options['mode'] == 'tex':
+ pass
+ else:
+ outstr += '\\begin{verbatim}\n'
+ for paragraph in paragraphs:
+ outstr += '\n'.join(paragraph)
+ outstr += '\n\n'
if mode == 'tex':
- outstr += '\\end{verbatim}\n'
+ if options['mode'] == 'tex':
+ pass
+ else:
+ outstr += '\\end{verbatim}\n'
else:
print(addr)
print("Vimwiki intra-page links not yet supported")
@@ -315,7 +366,7 @@ if __name__ == '__main__':
attach_str += f'\n{st}\n{"="*len(st)}\n'
resolver = resolvers.get(proto, resolve_default)
- attach_str += resolver(addr, frag, comment)
+ attach_str += resolver(mode, addr, frag, comment)
bilagor += [attach_str]
@@ -327,41 +378,21 @@ if __name__ == '__main__':
}
# split the text into paragraph blocks
- lines = outstr.split('\n')
- paragraphs = []
- paragraph = []
- for line in lines:
- if line == '':
- if paragraph == []:
- continue
- else:
- paragraphs.append(paragraph)
- paragraph = []
- else:
- paragraph.append(line)
+ paragraphs = split_into_paragraphs(outstr)
- # check the first paragraph for a deffinition list, and parse that
- # into variables
- for i in range(len(paragraphs[0])):
- line = paragraphs[0][i]
- if m := re.match('^(\w+)\s*::\s*(.*)', line):
- if m[1] == 'date':
- dt = dtparser.parse(m[2])
- if mode == 'tex':
- options['date'] = f'{dt:%Y--%m--%d}'
- else:
- options['date'] = f'{dt:%Y-%m-%d}'
+ override_options, paragraphs = parse_options_paragraph(paragraphs)
+ # Merge found options with default options
+ for key, value in override_options.items():
+ # Parse and recard date option
+ if key == 'date':
+ dt = dtparser.parse(value)
+ if mode == 'tex':
+ options['date'] = f'{dt:%Y--%m--%d}'
else:
- options[m[1]] = m[2]
+ options['date'] = f'{dt:%Y-%m-%d}'
else:
- # remove handled lines, keep remaining lines in paragraphs list
- paragraphs[0] = paragraphs[0][i:]
- break
- else:
- # remove first paragraph from paragraphs list
- paragraphs = paragraphs[1:]
-
+ options[key] = value