html: Fix code block export (superfluous newlines)

I didn't consider that all newlines in the pre block will be printed and we
thus shouldn't wrap html that has it's tags on separate lines (i.e. contains
superfluous newlines) - wrapping in a div less accurately represents
org-html-export but it provides the same information and gives us more freedom
in the return value of HighlightCodeBlock as well as allowing us to keep the
html tags on new lines (consistency).
This commit is contained in:
Niklas Fasching 2019-07-28 16:40:09 +02:00
parent 777899c803
commit 97fe8b7850
8 changed files with 31 additions and 30 deletions

View file

@ -59,7 +59,7 @@ func NewHTMLWriter() *HTMLWriter {
log: defaultConfig.Log,
htmlEscape: true,
HighlightCodeBlock: func(source, lang string) string {
return fmt.Sprintf("%s\n<pre>\n%s\n</pre>\n</div>", `<div class="highlight">`, html.EscapeString(source))
return fmt.Sprintf("<div class=\"highlight\">\n<pre>\n%s\n</pre>\n</div>", html.EscapeString(source))
},
footnotes: footnotes{
mapping: map[string]int{},
@ -109,7 +109,7 @@ func (w *HTMLWriter) WriteBlock(b Block) {
lang = strings.ToLower(b.Parameters[0])
}
content = w.HighlightCodeBlock(content, lang)
w.WriteString(fmt.Sprintf("<pre class=\"src src-%s\">\n%s\n</pre>\n", lang, content))
w.WriteString(fmt.Sprintf("<div class=\"src src-%s\">\n%s\n</div>\n", lang, content))
case name == "EXAMPLE":
w.WriteString(`<pre class="example">` + "\n" + content + "\n</pre>\n")
case name == "EXPORT" && len(b.Parameters) >= 1 && strings.ToLower(b.Parameters[0]) == "html":

View file

@ -1,5 +1,5 @@
<figure>
<pre class="src src-bash">
<div class="src src-bash">
<div class="highlight">
<pre>
echo &#34;a bash source block&#34;
@ -11,18 +11,18 @@ function hello {
hello
</pre>
</div>
</pre>
</div>
<figcaption>
block caption
</figcaption>
</figure>
<pre class="src src-text">
<div class="src src-text">
<div class="highlight">
<pre>
a source block without a language
</pre>
</div>
</pre>
</div>
<pre class="example">
an example block with
multiple lines including
@ -124,13 +124,13 @@ this unindented line is outside of the list item
<p>
list item 2
</p>
<pre class="src src-text">
<div class="src src-text">
<div class="highlight">
<pre>
#+BEGIN_EXAMPLE
</pre>
</div>
</pre>
</div>
<p>
#+END_EXAMPLE
</p>

View file

@ -2,13 +2,13 @@
Anything can be captioned.
</p>
<figure>
<pre class="src src-sh">
<div class="src src-sh">
<div class="highlight">
<pre>
echo &#34;i have a caption!&#34;
</pre>
</div>
</pre>
</div>
<figcaption>
captioned soure block
</figcaption>

View file

@ -75,13 +75,13 @@ and other elements
<p>
like blocks
</p>
<pre class="src src-text">
<div class="src src-text">
<div class="highlight">
<pre>
other non-plain
</pre>
</div>
</pre>
</div>
</li>
<li>
<p>

View file

@ -68,11 +68,11 @@ headline with custom status
<p>
it&#39;s possible to use <code class="verbatim">#+SETUPFILE</code> - in this case the setup file contains the following
</p>
<pre class="src src-org">
<div class="src src-org">
<div class="highlight">
<pre>
#+TODO: TODO DONE CUSTOM
#+EXCLUDE_TAGS: noexport custom_noexport
</pre>
</div>
</pre>
</div>

View file

@ -1,9 +1,10 @@
<figure>
<pre class="src src-sh a b c d" id="it"><div class="highlight">
<div class="src src-sh a b c d" id="it">
<div class="highlight">
<pre>echo &#34;a bash source block with custom html attributes&#34;
</pre>
</div>
</pre>
</div>
<figcaption>
and <span style="text-decoration: underline;">multiple</span> lines of <strong>captions</strong>!
</figcaption>

View file

@ -59,13 +59,13 @@ and some lines of text
<p>
and another subitem
</p>
<pre class="src src-sh">
<div class="src src-sh">
<div class="highlight">
<pre>
echo with a block
</pre>
</div>
</pre>
</div>
</li>
<li>
<p>
@ -133,13 +133,13 @@ term<dd>
details on a new line (with an empty line in between)
<strong>continued</strong>
</p>
<pre class="src src-bash">
<div class="src src-bash">
<div class="highlight">
<pre>
echo &#34;Hello World!&#34;
</pre>
</div>
</pre>
</div>
<dd>
</dl>
<p>

View file

@ -114,7 +114,7 @@ for now files can be included as:
<p>
src block
</p>
<pre class="src src-org">
<div class="src src-org">
<div class="highlight">
<pre>
#+SETUPFILE: setup_file_org
@ -147,7 +147,7 @@ this headline and it&#39;s content are not exported as it is marked with an =EXC
By default =EXCLUDE_TAGS= is just =:noexport:=.
</pre>
</div>
</pre>
</div>
</li>
<li>
<p>
@ -392,13 +392,13 @@ inline code <code class="verbatim">--</code> <code class="verbatim">---</code> a
<p>
src/example/export blocks should not be converted!
</p>
<pre class="src src-sh">
<div class="src src-sh">
<div class="highlight">
<pre>
--, ---
</pre>
</div>
</pre>
</div>
<pre class="example">
--, ---
</pre>
@ -427,25 +427,25 @@ The behaviour of Org mode <code class="verbatim">&lt;s TAB</code> changed and it
<p>
lowercased:
</p>
<pre class="src src-bash">
<div class="src src-bash">
<div class="highlight">
<pre>
uname -a
</pre>
</div>
</pre>
</div>
</li>
<li>
<p>
uppercased
</p>
<pre class="src src-bash">
<div class="src src-bash">
<div class="highlight">
<pre>
uname -a
</pre>
</div>
</pre>
</div>
</li>
</ul>
<h2 id="headline-24">
@ -463,7 +463,7 @@ When inserting an image link like <img src="/home/amos/Pictures/Screenshots/img-
<h3 id="headline-26">
<a href="https://github.com/gohugoio/hugo/issues/4006">#4006</a> source code blocks in org not rendered correctly
</h3>
<pre class="src src-emacs-lisp">
<div class="src src-emacs-lisp">
<div class="highlight">
<pre>
(defun small-shell ()
@ -474,7 +474,7 @@ When inserting an image link like <img src="/home/amos/Pictures/Screenshots/img-
(ansi-term))
</pre>
</div>
</pre>
</div>
<h1 id="headline-27">
Footnotes
</h1>