diff options
author | John MacFarlane <jgm@berkeley.edu> | 2016-06-14 20:21:37 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-14 20:21:37 -0600 |
commit | 15d2c09ba134094afe8fb4b74ccf50754f11e865 (patch) | |
tree | 16de375633d41f5e660617cffe5b1c6c8b3d8c8b /src | |
parent | 5ea3cc647b2645baeb6247d8bc422989d87b42aa (diff) | |
parent | 29552eff3e1c0a7eab8b114ac58ca83422a84fb0 (diff) | |
download | pandoc-15d2c09ba134094afe8fb4b74ccf50754f11e865.tar.gz |
Merge pull request #2980 from tarleb/org-raw-inlines
Org reader: raw inlines in arbitrary formats
Diffstat (limited to 'src')
-rw-r--r-- | src/Text/Pandoc/Readers/Org/Inlines.hs | 10 | ||||
-rw-r--r-- | src/Text/Pandoc/Writers/Org.hs | 7 |
2 files changed, 13 insertions, 4 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/src/Text/Pandoc/Writers/Org.hs b/src/Text/Pandoc/Writers/Org.hs index f87aeca81..79ca37395 100644 --- a/src/Text/Pandoc/Writers/Org.hs +++ b/src/Text/Pandoc/Writers/Org.hs @@ -305,9 +305,10 @@ inlineToOrg (Math t str) = do return $ if t == InlineMath then "$" <> text str <> "$" else "$$" <> text str <> "$$" -inlineToOrg (RawInline f str) | isRawFormat f = - return $ text str -inlineToOrg (RawInline _ _) = return empty +inlineToOrg (RawInline f@(Format f') str) = + return $ if isRawFormat f + then text str + else "@@" <> text f' <> ":" <> text str <> "@@" inlineToOrg (LineBreak) = return (text "\\\\" <> cr) inlineToOrg Space = return space inlineToOrg SoftBreak = do |