git.iko.soy/typeable/pandoc
on master help sign in
Specially mark code blocks that were "literate" in the input.
fce48c3fiddlosopher
src/Text/Pandoc/Readers/LaTeX.hs+1−1
@@ -207,7 +207,7 @@ lhsCodeBlock :: GenParser Char ParserState Block
207lhsCodeBlock = do
207lhsCodeBlock = do
208 failUnlessLHS
208 failUnlessLHS
209 (CodeBlock (_,_,_) cont) <- codeBlockWith "code"
209 (CodeBlock (_,_,_) cont) <- codeBlockWith "code"
210− return $ CodeBlock ("", ["sourceCode","haskell"], []) cont
210+ return $ CodeBlock ("", ["sourceCode","literate","haskell"], []) cont
211
211
212--
212--
213-- block quotes
213-- block quotes
src/Text/Pandoc/Readers/Markdown.hs+1−1
@@ -407,7 +407,7 @@ lhsCodeBlock :: GenParser Char ParserState Block
407lhsCodeBlock = do
407lhsCodeBlock = do
408 failUnlessLHS
408 failUnlessLHS
409 contents <- lhsCodeBlockBird <|> lhsCodeBlockLaTeX
409 contents <- lhsCodeBlockBird <|> lhsCodeBlockLaTeX
410− return $ CodeBlock ("",["sourceCode","haskell"],[]) contents
410+ return $ CodeBlock ("",["sourceCode","literate","haskell"],[]) contents
411
411
412lhsCodeBlockLaTeX :: GenParser Char ParserState String
412lhsCodeBlockLaTeX :: GenParser Char ParserState String
413lhsCodeBlockLaTeX = try $ do
413lhsCodeBlockLaTeX = try $ do
src/Text/Pandoc/Readers/RST.hs+1−1
@@ -342,7 +342,7 @@ lhsCodeBlock = try $ do
342 then map (drop 1) lns
342 then map (drop 1) lns
343 else lns
343 else lns
344 blanklines
344 blanklines
345− return $ CodeBlock ("", ["sourceCode", "haskell"], []) $ intercalate "\n" lns'
345+ return $ CodeBlock ("", ["sourceCode", "literate", "haskell"], []) $ intercalate "\n" lns'
346
346
347birdTrackLine :: GenParser Char st [Char]
347birdTrackLine :: GenParser Char st [Char]
348birdTrackLine = do
348birdTrackLine = do
src/Text/Pandoc/Writers/HTML.hs+2−1
@@ -249,7 +249,8 @@ blockToHtml opts (Para lst) = inlineListToHtml opts lst >>= (return . paragraph)
249blockToHtml _ (RawHtml str) = return $ primHtml str
249blockToHtml _ (RawHtml str) = return $ primHtml str
250blockToHtml _ (HorizontalRule) = return $ hr
250blockToHtml _ (HorizontalRule) = return $ hr
251blockToHtml opts (CodeBlock (_,classes,_) rawCode) | "haskell" `elem` classes &&
251blockToHtml opts (CodeBlock (_,classes,_) rawCode) | "haskell" `elem` classes &&
252+ "literate" `elem` classes &&
252− writerLiterateHaskell opts =
253+ writerLiterateHaskell opts =
253 let classes' = map (\c -> if c == "haskell" then "literatehaskell" else c) classes
254 let classes' = map (\c -> if c == "haskell" then "literatehaskell" else c) classes
254 in blockToHtml opts $ CodeBlock ("",classes',[]) $ intercalate "\n" $ map ("> " ++) $ lines rawCode
255 in blockToHtml opts $ CodeBlock ("",classes',[]) $ intercalate "\n" $ map ("> " ++) $ lines rawCode
255blockToHtml _ (CodeBlock attr@(_,classes,_) rawCode) = do
256blockToHtml _ (CodeBlock attr@(_,classes,_) rawCode) = do
src/Text/Pandoc/Writers/LaTeX.hs+2−1
@@ -149,7 +149,8 @@ blockToLaTeX (BlockQuote lst) = do
149 return $ text "\\begin{quote}" $$ contents $$ text "\\end{quote}"
149 return $ text "\\begin{quote}" $$ contents $$ text "\\end{quote}"
150blockToLaTeX (CodeBlock (_,classes,_) str) = do
150blockToLaTeX (CodeBlock (_,classes,_) str) = do
151 st <- get
151 st <- get
152− env <- if writerLiterateHaskell (stOptions st) && "haskell" `elem` classes
152+ env <- if writerLiterateHaskell (stOptions st) && "haskell" `elem` classes &&
153+ "literate" `elem` classes
153 then return "code"
154 then return "code"
154 else if stInNote st
155 else if stInNote st
155 then do addToHeader "\\usepackage{fancyvrb}"
156 then do addToHeader "\\usepackage{fancyvrb}"
src/Text/Pandoc/Writers/Markdown.hs+1
@@ -198,6 +198,7 @@ blockToMarkdown opts (Header level inlines) = do
198 _ -> empty
198 _ -> empty
199 else return $ text ((replicate level '#') ++ " ") <> contents <> text "\n"
199 else return $ text ((replicate level '#') ++ " ") <> contents <> text "\n"
200blockToMarkdown opts (CodeBlock (_,classes,_) str) | "haskell" `elem` classes &&
200blockToMarkdown opts (CodeBlock (_,classes,_) str) | "haskell" `elem` classes &&
201+ "literate" `elem` classes &&
201 writerLiterateHaskell opts =
202 writerLiterateHaskell opts =
202 return $ (vcat $ map (text "> " <>) $ map text (lines str)) <> text "\n"
203 return $ (vcat $ map (text "> " <>) $ map text (lines str)) <> text "\n"
203blockToMarkdown opts (CodeBlock _ str) = return $
204blockToMarkdown opts (CodeBlock _ str) = return $
src/Text/Pandoc/Writers/RST.hs+2−1
@@ -183,7 +183,8 @@ blockToRST (Header level inlines) = do
183blockToRST (CodeBlock (_,classes,_) str) = do
183blockToRST (CodeBlock (_,classes,_) str) = do
184 opts <- stOptions <$> get
184 opts <- stOptions <$> get
185 let tabstop = writerTabStop opts
185 let tabstop = writerTabStop opts
186+ if "haskell" `elem` classes && "literate" `elem` classes &&
186− if "haskell" `elem` classes && writerLiterateHaskell opts
187+ writerLiterateHaskell opts
187 then return $ (vcat $ map (text "> " <>) $ map text (lines str)) <> text "\n"
188 then return $ (vcat $ map (text "> " <>) $ map text (lines str)) <> text "\n"
188 else return $ (text "::\n") $+$
189 else return $ (text "::\n") $+$
189 (nest tabstop $ vcat $ map text (lines str)) <> text "\n"
190 (nest tabstop $ vcat $ map text (lines str)) <> text "\n"
tests/lhs-test.native+1−1
@@ -1,7 +1,7 @@
1Pandoc (Meta [] [] "")
1Pandoc (Meta [] [] "")
2[ Header 1 [Str "lhs",Space,Str "test"]
2[ Header 1 [Str "lhs",Space,Str "test"]
3, Para [Code "unsplit",Space,Str "is",Space,Str "an",Space,Str "arrow",Space,Str "that",Space,Str "takes",Space,Str "a",Space,Str "pair",Space,Str "of",Space,Str "values",Space,Str "and",Space,Str "combines",Space,Str "them",Space,Str "to",Space,Str "return",Space,Str "a",Space,Str "single",Space,Str "value:"]
3, Para [Code "unsplit",Space,Str "is",Space,Str "an",Space,Str "arrow",Space,Str "that",Space,Str "takes",Space,Str "a",Space,Str "pair",Space,Str "of",Space,Str "values",Space,Str "and",Space,Str "combines",Space,Str "them",Space,Str "to",Space,Str "return",Space,Str "a",Space,Str "single",Space,Str "value:"]
4−, CodeBlock ("",["sourceCode","haskell"],[]) "unsplit :: (Arrow a) => (b -> c -> d) -> a (b, c) d\nunsplit = arr . uncurry \n -- arr (\\op (x,y) -> x `op` y) "
4+, CodeBlock ("",["sourceCode","literate","haskell"],[]) "unsplit :: (Arrow a) => (b -> c -> d) -> a (b, c) d\nunsplit = arr . uncurry \n -- arr (\\op (x,y) -> x `op` y) "
5, Para [Code "(***)",Space,Str "combines",Space,Str "two",Space,Str "arrows",Space,Str "into",Space,Str "a",Space,Str "new",Space,Str "arrow",Space,Str "by",Space,Str "running",Space,Str "the",Space,Str "two",Space,Str "arrows",Space,Str "on",Space,Str "a",Space,Str "pair",Space,Str "of",Space,Str "values",Space,Str "(one",Space,Str "arrow",Space,Str "on",Space,Str "the",Space,Str "first",Space,Str "item",Space,Str "of",Space,Str "the",Space,Str "pair",Space,Str "and",Space,Str "one",Space,Str "arrow",Space,Str "on",Space,Str "the",Space,Str "second",Space,Str "item",Space,Str "of",Space,Str "the",Space,Str "pair)",Str "."]
5, Para [Code "(***)",Space,Str "combines",Space,Str "two",Space,Str "arrows",Space,Str "into",Space,Str "a",Space,Str "new",Space,Str "arrow",Space,Str "by",Space,Str "running",Space,Str "the",Space,Str "two",Space,Str "arrows",Space,Str "on",Space,Str "a",Space,Str "pair",Space,Str "of",Space,Str "values",Space,Str "(one",Space,Str "arrow",Space,Str "on",Space,Str "the",Space,Str "first",Space,Str "item",Space,Str "of",Space,Str "the",Space,Str "pair",Space,Str "and",Space,Str "one",Space,Str "arrow",Space,Str "on",Space,Str "the",Space,Str "second",Space,Str "item",Space,Str "of",Space,Str "the",Space,Str "pair)",Str "."]
6, CodeBlock ("",[],[]) "f *** g = first f >>> second g"
6, CodeBlock ("",[],[]) "f *** g = first f >>> second g"
7, Para [Str "Block",Space,Str "quote:"]
7, Para [Str "Block",Space,Str "quote:"]