diff options
author | Albert Krewinkel <albert@zeitkraut.de> | 2016-05-29 20:00:52 +0200 |
---|---|---|
committer | Albert Krewinkel <albert@zeitkraut.de> | 2016-05-29 21:08:50 +0200 |
commit | c17c62a2c74bbb6e36e12feea5aa6ba8679a023a (patch) | |
tree | 33d18ed315087426f356b8be643337f75bcff67a | |
parent | 4f84cf02c78cc20f7e52d9e82149fdfcc8282960 (diff) | |
download | pandoc-c17c62a2c74bbb6e36e12feea5aa6ba8679a023a.tar.gz |
Org reader: support new syntax for export blocks
Org-mode version 9 usees a new syntax for export blocks. Instead of
`#+BEGIN_<FORMAT>`, where `<FORMAT>` is the format of the block's
content, the new format uses `#+BEGIN_export <FORMAT>` instead. Both
types are supported.
-rw-r--r-- | src/Text/Pandoc/Readers/Org/Blocks.hs | 9 | ||||
-rw-r--r-- | tests/Tests/Readers/Org.hs | 16 |
2 files changed, 24 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Readers/Org/Blocks.hs b/src/Text/Pandoc/Readers/Org/Blocks.hs index dba36fa4d..36645a356 100644 --- a/src/Text/Pandoc/Readers/Org/Blocks.hs +++ b/src/Text/Pandoc/Readers/Org/Blocks.hs @@ -168,6 +168,7 @@ orgBlock = try $ do blkType <- blockHeaderStart ($ blkType) $ case blkType of + "export" -> exportBlock "comment" -> rawBlockLines (const mempty) "html" -> rawBlockLines (return . (B.rawBlock blkType)) "latex" -> rawBlockLines (return . (B.rawBlock blkType)) @@ -239,6 +240,14 @@ rawBlockContent blockType = try $ do ignHeaders :: OrgParser () ignHeaders = (() <$ newline) <|> (() <$ anyLine) +-- | Read a block containing code intended for export in specific backends +-- only. +exportBlock :: String -> OrgParser (F Blocks) +exportBlock blockType = try $ do + exportType <- skipSpaces *> orgArgWord <* ignHeaders + contents <- rawBlockContent blockType + returnF (B.rawBlock (map toLower exportType) contents) + verseBlock :: String -> OrgParser (F Blocks) verseBlock blockType = try $ do ignHeaders diff --git a/tests/Tests/Readers/Org.hs b/tests/Tests/Readers/Org.hs index 780053059..345ed462a 100644 --- a/tests/Tests/Readers/Org.hs +++ b/tests/Tests/Readers/Org.hs @@ -1293,7 +1293,7 @@ tests = ] ] - , "Verse block with newlines" =: + , "Verse block with blank lines" =: unlines [ "#+BEGIN_VERSE" , "foo" , "" @@ -1302,6 +1302,20 @@ tests = ] =?> para ("foo" <> linebreak <> linebreak <> "bar") + , "Raw block LaTeX" =: + unlines [ "#+BEGIN_LaTeX" + , "The category $\\cat{Set}$ is adhesive." + , "#+END_LaTeX" + ] =?> + rawBlock "latex" "The category $\\cat{Set}$ is adhesive.\n" + + , "Export block HTML" =: + unlines [ "#+BEGIN_export html" + , "<samp>Hello, World!</samp>" + , "#+END_export" + ] =?> + rawBlock "html" "<samp>Hello, World!</samp>\n" + , "LaTeX fragment" =: unlines [ "\\begin{equation}" , "X_i = \\begin{cases}" |