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