summaryrefslogtreecommitdiff
path: root/src/Text
diff options
context:
space:
mode:
Diffstat (limited to 'src/Text')
-rw-r--r--src/Text/Pandoc/Writers/Org.hs10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Writers/Org.hs b/src/Text/Pandoc/Writers/Org.hs
index a283d0265..407c0a637 100644
--- a/src/Text/Pandoc/Writers/Org.hs
+++ b/src/Text/Pandoc/Writers/Org.hs
@@ -194,7 +194,15 @@ blockToOrg (CodeBlock (ident,classes,kvs) str) = do
let (beg, end) = case lang of
Nothing -> ("#+begin_example" <> numberlines, "#+end_example")
Just x -> ("#+begin_src " <> x <> numberlines <> args, "#+end_src")
- return $ name $$ literal beg $$ literal str $$ literal end $$ blankline
+ -- escape special lines
+ let escape_line line =
+ let (spaces, code) = T.span (\c -> c == ' ' || c == '\t') line
+ in spaces <>
+ (if T.isPrefixOf "#+" code || T.isPrefixOf "*" code
+ then T.cons ',' code
+ else code)
+ let escaped = T.unlines . map escape_line . T.lines $ str
+ return $ name $$ literal beg $$ literal escaped $$ literal end $$ blankline
blockToOrg (BlockQuote blocks) = do
contents <- blockListToOrg blocks
return $ blankline $$ "#+begin_quote" $$