Vimwiki2HTML: remove string concat from variable substitution (#1110)

Problem: I noticed that running :Vimwiki2HTML for a file with a `"` in
the `%title` line would error out.  For example, a title like:

    %title this will die: "

Causes:

    Error detected while processing function vimwiki#html#Wiki2HTML[1]..<SNR>177_convert_file[15]..<SNR>177_convert_file_to_lines
_template:
    line    8:
    E116: Invalid arguments for function substitute(v:val, "%title%", "this will die: "", "g")

Solution: It seems like the string concatenation here was unnecessary.
At least on my vim 8.1, the evaluated code seems to have access to the
correct variables.

I'm sure there are bigger problems with the HTML generation here, but this
allows my ~2000 pages with titles to render without throwing errors.

Also adds a brief test and removes some unnecessary DeleteFile() calls
from html_convert_default.vader.

Co-authored-by: Brennen Bearnes <code@p1k3.com>
This commit is contained in:
Brennen Bearnes
2021-04-05 21:07:38 -06:00
committed by GitHub
parent db85dc54c9
commit 618893be00
4 changed files with 18 additions and 19 deletions
+6 -6
View File
@@ -1831,25 +1831,25 @@ function! s:convert_file_to_lines_template(wikifile, current_html_file) abort
let html_lines = s:get_html_template(converted['template_name'])
" processing template variables (refactor to a function)
call map(html_lines, 'substitute(v:val, "%title%", "'. converted['title'] .'", "g")')
call map(html_lines, 'substitute(v:val, "%date%", "'. converted['date'] .'", "g")')
call map(html_lines, 'substitute(v:val, "%title%", converted["title"], "g")')
call map(html_lines, 'substitute(v:val, "%date%", converted["date"], "g")')
call map(html_lines, 'substitute(v:val, "%root_path%", "'.
\ s:root_path(vimwiki#vars#get_bufferlocal('subdir')) .'", "g")')
call map(html_lines, 'substitute(v:val, "%wiki_path%", "'. converted['wiki_path'] .'", "g")')
call map(html_lines, 'substitute(v:val, "%wiki_path%", converted["wiki_path"], "g")')
let css_name = expand(vimwiki#vars#get_wikilocal('css_name'))
let css_name = substitute(css_name, '\', '/', 'g')
call map(html_lines, 'substitute(v:val, "%css%", "'. css_name .'", "g")')
call map(html_lines, 'substitute(v:val, "%css%", css_name, "g")')
let rss_name = expand(vimwiki#vars#get_wikilocal('rss_name'))
let rss_name = substitute(rss_name, '\', '/', 'g')
call map(html_lines, 'substitute(v:val, "%rss%", "'. rss_name .'", "g")')
call map(html_lines, 'substitute(v:val, "%rss%", rss_name, "g")')
let enc = &fileencoding
if enc ==? ''
let enc = &encoding
endif
call map(html_lines, 'substitute(v:val, "%encoding%", "'. enc .'", "g")')
call map(html_lines, 'substitute(v:val, "%encoding%", enc, "g")')
let html_lines = s:html_insert_contents(html_lines, converted['html']) " %contents%