aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorleungbk <bkleung89@gmail.com>2018-12-27 01:09:32 -0800
committerAlbert Krewinkel <albert+github@zeitkraut.de>2018-12-28 15:07:05 +0100
commitc998b937c14cb1f52b8a0ea40eb3ecb49c0c6f63 (patch)
treec0d68f7958880b0e481fa81eac51adb6f5e0de77 /src
parent053c683d35a985844c81ff2683cd1e3b4cffcc15 (diff)
downloadpandoc-c998b937c14cb1f52b8a0ea40eb3ecb49c0c6f63.tar.gz
Org writer: preserve line-numbering for example and code blocks.
Diffstat (limited to 'src')
-rw-r--r--src/Text/Pandoc/Writers/Org.hs12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/Text/Pandoc/Writers/Org.hs b/src/Text/Pandoc/Writers/Org.hs
index 12a54fd71..1ff34dd6f 100644
--- a/src/Text/Pandoc/Writers/Org.hs
+++ b/src/Text/Pandoc/Writers/Org.hs
@@ -188,13 +188,19 @@ blockToOrg (Header level attr inlines) = do
then empty
else cr <> nest (level + 1) (propertiesDrawer attr)
return $ headerStr <> " " <> contents <> drawerStr <> blankline
-blockToOrg (CodeBlock (_,classes,_) str) = do
+blockToOrg (CodeBlock (_,classes,kvs) str) = do
opts <- gets stOptions
let tabstop = writerTabStop opts
+ let startnum = maybe "" (\x -> ' ' : trimr x) $ lookup "startFrom" kvs
+ let numberlines = if "numberLines" `elem` classes
+ then if "continuedSourceBlock" `elem` classes
+ then " +n" ++ startnum
+ else " -n" ++ startnum
+ else ""
let at = map pandocLangToOrg classes `intersect` orgLangIdentifiers
let (beg, end) = case at of
- [] -> ("#+BEGIN_EXAMPLE", "#+END_EXAMPLE")
- (x:_) -> ("#+BEGIN_SRC " ++ x, "#+END_SRC")
+ [] -> ("#+BEGIN_EXAMPLE" ++ numberlines, "#+END_EXAMPLE")
+ (x:_) -> ("#+BEGIN_SRC " ++ x ++ numberlines, "#+END_SRC")
return $ text beg $$ nest tabstop (text str) $$ text end $$ blankline
blockToOrg (BlockQuote blocks) = do
contents <- blockListToOrg blocks