diff --git a/org/block.go b/org/block.go index 11b135f..9793f81 100644 --- a/org/block.go +++ b/org/block.go @@ -54,7 +54,7 @@ func isRawTextBlock(name string) bool { return name == "SRC" || name == "EXAMPLE func (d *Document) parseBlock(i int, parentStop stopFn) (int, Node) { t, start := d.tokens[i], i - name, parameters := t.content, strings.Fields(t.matches[3]) + name, parameters := t.content, splitParameters(t.matches[3]) trim := trimIndentUpTo(d.tokens[i].lvl) stop := func(d *Document, i int) bool { return i >= len(d.tokens) || (d.tokens[i].kind == "endBlock" && d.tokens[i].content == name) @@ -121,6 +121,19 @@ func trimIndentUpTo(max int) func(string) string { } } +func splitParameters(s string) []string { + parameters, parts := []string{}, strings.Split(s, " :") + lang, rest := strings.TrimSpace(parts[0]), parts[1:] + if lang != "" { + parameters = append(parameters, lang) + } + for _, p := range rest { + kv := strings.SplitN(p+" ", " ", 2) + parameters = append(parameters, ":"+kv[0], strings.TrimSpace(kv[1])) + } + return parameters +} + func (b Block) ParameterMap() map[string]string { if len(b.Parameters) == 0 { return nil diff --git a/org/testdata/blocks.html b/org/testdata/blocks.html index cf1db87..20c7746 100644 --- a/org/testdata/blocks.html +++ b/org/testdata/blocks.html @@ -40,6 +40,9 @@ a source block with results a source block that only exports results
+but the result block is
+
+
 an example block with
 multiple lines including
 
diff --git a/org/testdata/blocks.org b/org/testdata/blocks.org
index b880eea..b4fa908 100644
--- a/org/testdata/blocks.org
+++ b/org/testdata/blocks.org
@@ -38,6 +38,14 @@ echo a source block that only exports results
 #+RESULTS:
 : a source block that only exports results
 
+#+begin_src bash :cmdline -foo -bar :exports results
+# the code block is not rendered
+echo but the result block is
+#+end_src
+
+#+RESULTS:
+: but the result block is
+
 #+BEGIN_EXAMPLE foo bar baz
 an example block with
 multiple lines including
diff --git a/org/testdata/blocks.pretty_org b/org/testdata/blocks.pretty_org
index 8359623..2fade9b 100644
--- a/org/testdata/blocks.pretty_org
+++ b/org/testdata/blocks.pretty_org
@@ -38,6 +38,14 @@ echo a source block that only exports results
 #+RESULTS:
 : a source block that only exports results
 
+#+BEGIN_SRC bash :cmdline -foo -bar :exports results
+# the code block is not rendered
+echo but the result block is
+#+END_SRC
+
+#+RESULTS:
+: but the result block is
+
 #+BEGIN_EXAMPLE foo bar baz
 an example block with
 multiple lines including