html: Implement source block :exports parameter

This commit is contained in:
Niklas Fasching 2020-04-17 15:24:42 +02:00
parent efe1c4eb07
commit 7e69931976
5 changed files with 48 additions and 2 deletions

View file

@ -118,6 +118,17 @@ func trimIndentUpTo(max int) func(string) string {
}
}
func (b Block) ParameterMap() map[string]string {
if len(b.Parameters) == 0 {
return nil
}
m := map[string]string{":lang": b.Parameters[0]}
for i := 1; i+1 < len(b.Parameters); i += 2 {
m[b.Parameters[i]] = b.Parameters[i+1]
}
return m
}
func (n Example) String() string { return orgWriter.WriteNodesAsString(n) }
func (n Block) String() string { return orgWriter.WriteNodesAsString(n) }
func (n Result) String() string { return orgWriter.WriteNodesAsString(n) }

View file

@ -110,9 +110,13 @@ func (w *HTMLWriter) WriteComment(Comment) {}
func (w *HTMLWriter) WritePropertyDrawer(PropertyDrawer) {}
func (w *HTMLWriter) WriteBlock(b Block) {
content := w.blockContent(b.Name, b.Children)
content, params := w.blockContent(b.Name, b.Children), b.ParameterMap()
switch b.Name {
case "SRC":
if params[":exports"] == "results" || params[":exports"] == "none" {
break
}
lang := "text"
if len(b.Parameters) >= 1 {
lang = strings.ToLower(b.Parameters[0])
@ -135,7 +139,7 @@ func (w *HTMLWriter) WriteBlock(b Block) {
w.WriteString(content + "</div>\n")
}
if b.Result != nil {
if b.Result != nil && params[":exports"] != "code" && params[":exports"] != "none" {
WriteNodes(w, b.Result)
}
}

View file

@ -37,6 +37,9 @@ echo a source block with results
a source block with results
</pre>
<pre class="example">
a source block that only exports results
</pre>
<pre class="example">
an example block with
multiple lines including

View file

@ -24,6 +24,20 @@ echo a source block with results
#+RESULTS:
: a source block with results
#+BEGIN_SRC bash :exports none
echo a source block with results that is not exported
#+END_SRC
#+RESULTS:
: a source block with results that is not exported
#+BEGIN_SRC bash :exports results
echo a source block that only exports results
#+END_SRC
#+RESULTS:
: a source block that only exports results
#+BEGIN_EXAMPLE foo bar baz
an example block with
multiple lines including

View file

@ -24,6 +24,20 @@ echo a source block with results
#+RESULTS:
: a source block with results
#+BEGIN_SRC bash :exports none
echo a source block with results that is not exported
#+END_SRC
#+RESULTS:
: a source block with results that is not exported
#+BEGIN_SRC bash :exports results
echo a source block that only exports results
#+END_SRC
#+RESULTS:
: a source block that only exports results
#+BEGIN_EXAMPLE foo bar baz
an example block with
multiple lines including