From ac1774c848b66f6f8c525e8609ca6e029c1de75e Mon Sep 17 00:00:00 2001 From: somas95 Date: Thu, 12 Apr 2018 21:55:45 +0200 Subject: [PATCH] convert relative paths to absolute on preview --- data/lua/relative_to_absolute.lua | 21 +++++++++++++++++++++ data/{media => lua}/task-list.lua | 0 uberwriter/UberwriterWindow.py | 15 +++++++++++---- uberwriter_lib/helpers.py | 6 ++++++ 4 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 data/lua/relative_to_absolute.lua rename data/{media => lua}/task-list.lua (100%) diff --git a/data/lua/relative_to_absolute.lua b/data/lua/relative_to_absolute.lua new file mode 100644 index 0000000..23b8017 --- /dev/null +++ b/data/lua/relative_to_absolute.lua @@ -0,0 +1,21 @@ +function string.starts(String,Start) + return string.sub(String,1,string.len(Start))==Start +end + +function fix_path (path) + if string.starts(path, "/") then + return path + else + return (os.getenv('PANDOC_PREFIX') or '') .. path + end +end + +function Link (element) + element.target = fix_path(element.target) + return element +end + +function Image (element) + element.src = fix_path(element.src) + return element +end diff --git a/data/media/task-list.lua b/data/lua/task-list.lua similarity index 100% rename from data/media/task-list.lua rename to data/lua/task-list.lua diff --git a/uberwriter/UberwriterWindow.py b/uberwriter/UberwriterWindow.py index 6900b8d..18f6d81 100644 --- a/uberwriter/UberwriterWindow.py +++ b/uberwriter/UberwriterWindow.py @@ -694,15 +694,22 @@ class UberwriterWindow(Window): # TODO # Find a way to find the next header, scroll to the next header. # TODO: provide a local version of mathjax - + + # We need to convert relative routes to absolute ones + if self.filename: + base_path = os.path.dirname(self.filename) + else: + base_path = '' + os.environ['PANDOC_PREFIX'] = base_path + '/' + args = ['pandoc', '-s', '--from=markdown', - '--to=html', + '--to=html5', '--mathjax', '--css=' + helpers.get_media_path('uberwriter.css'), - '--lua-filter=' + helpers.get_media_path('task-list.lua')] - print(args) + '--lua-filter=' + helpers.get_script_path('relative_to_absolute.lua'), + '--lua-filter=' + helpers.get_script_path('task-list.lua')] p = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE) diff --git a/uberwriter_lib/helpers.py b/uberwriter_lib/helpers.py index be12634..4e3f57f 100644 --- a/uberwriter_lib/helpers.py +++ b/uberwriter_lib/helpers.py @@ -61,6 +61,12 @@ def get_media_path(media_file_name): media_filename = None return media_filename +def get_script_path(script_file_name): + script_filename = get_data_file('lua', '%s' % (script_file_name,)) + if not os.path.exists(script_filename): + script_filename = None + return script_filename + class NullHandler(logging.Handler): def emit(self, record): pass