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 Example) String() string { return orgWriter.WriteNodesAsString(n) }
func (n Block) String() string { return orgWriter.WriteNodesAsString(n) } func (n Block) String() string { return orgWriter.WriteNodesAsString(n) }
func (n Result) 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) WritePropertyDrawer(PropertyDrawer) {}
func (w *HTMLWriter) WriteBlock(b Block) { 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 { switch b.Name {
case "SRC": case "SRC":
if params[":exports"] == "results" || params[":exports"] == "none" {
break
}
lang := "text" lang := "text"
if len(b.Parameters) >= 1 { if len(b.Parameters) >= 1 {
lang = strings.ToLower(b.Parameters[0]) lang = strings.ToLower(b.Parameters[0])
@ -135,7 +139,7 @@ func (w *HTMLWriter) WriteBlock(b Block) {
w.WriteString(content + "</div>\n") w.WriteString(content + "</div>\n")
} }
if b.Result != nil { if b.Result != nil && params[":exports"] != "code" && params[":exports"] != "none" {
WriteNodes(w, b.Result) WriteNodes(w, b.Result)
} }
} }

View file

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

View file

@ -24,6 +24,20 @@ echo a source block with results
#+RESULTS: #+RESULTS:
: a source block with 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 #+BEGIN_EXAMPLE foo bar baz
an example block with an example block with
multiple lines including multiple lines including

View file

@ -24,6 +24,20 @@ echo a source block with results
#+RESULTS: #+RESULTS:
: a source block with 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 #+BEGIN_EXAMPLE foo bar baz
an example block with an example block with
multiple lines including multiple lines including