diff options
author | Albert Krewinkel <albert@zeitkraut.de> | 2016-06-13 23:53:14 +0200 |
---|---|---|
committer | Albert Krewinkel <albert@zeitkraut.de> | 2016-06-13 23:53:14 +0200 |
commit | 29552eff3e1c0a7eab8b114ac58ca83422a84fb0 (patch) | |
tree | 27e4d08cc4bc998b9f8d07e56a5a9468f51f9dbe | |
parent | cf2502de8fb3d208a6b062d38a09cec0f9faba5a (diff) | |
download | pandoc-29552eff3e1c0a7eab8b114ac58ca83422a84fb0.tar.gz |
Org reader: support arbitrary raw inlines
Org mode allows arbitrary raw inlines ("export snippets" in Emacs
parlance) to be included as `@@format:raw foreign format text@@`.
Support for this features is added to the Org reader.
-rw-r--r-- | src/Text/Pandoc/Readers/Org/Inlines.hs | 10 | ||||
-rw-r--r-- | tests/Tests/Readers/Org.hs | 4 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Readers/Org/Inlines.hs b/src/Text/Pandoc/Readers/Org/Inlines.hs index dc6b739fe..d0e007312 100644 --- a/src/Text/Pandoc/Readers/Org/Inlines.hs +++ b/src/Text/Pandoc/Readers/Org/Inlines.hs @@ -118,6 +118,7 @@ inline = , subscript , superscript , inlineLaTeX + , exportSnippet , smart , symbol ] <* (guard =<< newlinesCountWithinLimits) @@ -129,7 +130,7 @@ inlines = trimInlinesF . mconcat <$> many1 inline -- treat these as potentially non-text when parsing inline: specialChars :: [Char] -specialChars = "\"$'()*+-,./:;<=>[\\]^_{|}~" +specialChars = "\"$'()*+-,./:;<=>@[\\]^_{|}~" whitespace :: OrgParser (F Inlines) @@ -841,6 +842,13 @@ inlineLaTeXCommand = try $ do dropWhileEnd :: (a -> Bool) -> [a] -> [a] dropWhileEnd p = foldr (\x xs -> if p x && null xs then [] else x : xs) [] +exportSnippet :: OrgParser (F Inlines) +exportSnippet = try $ do + string "@@" + format <- many1Till (alphaNum <|> char '-') (char ':') + snippet <- manyTill anyChar (try $ string "@@") + returnF $ B.rawInline format snippet + smart :: OrgParser (F Inlines) smart = do getOption readerSmart >>= guard diff --git a/tests/Tests/Readers/Org.hs b/tests/Tests/Readers/Org.hs index ab50aa49c..56dedee55 100644 --- a/tests/Tests/Readers/Org.hs +++ b/tests/Tests/Readers/Org.hs @@ -405,6 +405,10 @@ tests = "\\notacommand{foo}" =?> para (rawInline "latex" "\\notacommand{foo}") + , "Export snippet" =: + "@@html:<kbd>M-x org-agenda</kbd>@@" =?> + para (rawInline "html" "<kbd>M-x org-agenda</kbd>") + , "MathML symbol in LaTeX-style" =: "There is a hackerspace in Lübeck, Germany, called nbsp (unicode symbol: '\\nbsp')." =?> para ("There is a hackerspace in Lübeck, Germany, called nbsp (unicode symbol: ' ').") |