git.iko.soy/typeable/pandoc
on master help sign in
Specially mark code blocks that were "literate" in the input.

They can then be treated differently in the writers. This allows authors to distinguish bits of the literate program they are writing from source code examples, even if the examples are marked as Haskell for highlighting. Resolves Issue #174. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1618 788f1e2b-df1e-0410-8736-df70ead52e1b

commitfce48c392acd5c56141ce924f4aaa8fadd10085d authorfiddlosopher <fiddlosopher@788f1e2b-df1e-0410-8736-df70ead52e1b> dateTue 3 Nov 2009, 06:50 (17 years ago) parent683b8e1
8 files changed+11−7
src/Text/Pandoc/Readers/LaTeX.hs+1−1 src/Text/Pandoc/Readers/Markdown.hs+1−1 src/Text/Pandoc/Readers/RST.hs+1−1 src/Text/Pandoc/Writers/HTML.hs+2−1 src/Text/Pandoc/Writers/LaTeX.hs+2−1 src/Text/Pandoc/Writers/Markdown.hs+1 src/Text/Pandoc/Writers/RST.hs+2−1 tests/lhs-test.native+1−1
src/Text/Pandoc/Readers/LaTeX.hs+1−1
@@ -207,7 +207,7 @@ lhsCodeBlock :: GenParser Char ParserState Block
207207lhsCodeBlock = do
208208 failUnlessLHS
209209 (CodeBlock (_,_,_) cont) <- codeBlockWith "code"
210− return $ CodeBlock ("", ["sourceCode","haskell"], []) cont
210+ return $ CodeBlock ("", ["sourceCode","literate","haskell"], []) cont
211211
212212--
213213-- block quotes
src/Text/Pandoc/Readers/Markdown.hs+1−1
@@ -407,7 +407,7 @@ lhsCodeBlock :: GenParser Char ParserState Block
407407lhsCodeBlock = do
408408 failUnlessLHS
409409 contents <- lhsCodeBlockBird <|> lhsCodeBlockLaTeX
410− return $ CodeBlock ("",["sourceCode","haskell"],[]) contents
410+ return $ CodeBlock ("",["sourceCode","literate","haskell"],[]) contents
411411
412412lhsCodeBlockLaTeX :: GenParser Char ParserState String
413413lhsCodeBlockLaTeX = try $ do
src/Text/Pandoc/Readers/RST.hs+1−1
@@ -342,7 +342,7 @@ lhsCodeBlock = try $ do
342342 then map (drop 1) lns
343343 else lns
344344 blanklines
345− return $ CodeBlock ("", ["sourceCode", "haskell"], []) $ intercalate "\n" lns'
345+ return $ CodeBlock ("", ["sourceCode", "literate", "haskell"], []) $ intercalate "\n" lns'
346346
347347birdTrackLine :: GenParser Char st [Char]
348348birdTrackLine = do
src/Text/Pandoc/Writers/HTML.hs+2−1
@@ -249,7 +249,8 @@ blockToHtml opts (Para lst) = inlineListToHtml opts lst >>= (return . paragraph)
249249blockToHtml _ (RawHtml str) = return $ primHtml str
250250blockToHtml _ (HorizontalRule) = return $ hr
251251blockToHtml opts (CodeBlock (_,classes,_) rawCode) | "haskell" `elem` classes &&
252− writerLiterateHaskell opts =
252+ "literate" `elem` classes &&
253+ writerLiterateHaskell opts =
253254 let classes' = map (\c -> if c == "haskell" then "literatehaskell" else c) classes
254255 in blockToHtml opts $ CodeBlock ("",classes',[]) $ intercalate "\n" $ map ("> " ++) $ lines rawCode
255256blockToHtml _ (CodeBlock attr@(_,classes,_) rawCode) = do
src/Text/Pandoc/Writers/LaTeX.hs+2−1
@@ -149,7 +149,8 @@ blockToLaTeX (BlockQuote lst) = do
149149 return $ text "\\begin{quote}" $$ contents $$ text "\\end{quote}"
150150blockToLaTeX (CodeBlock (_,classes,_) str) = do
151151 st <- get
152− env <- if writerLiterateHaskell (stOptions st) && "haskell" `elem` classes
152+ env <- if writerLiterateHaskell (stOptions st) && "haskell" `elem` classes &&
153+ "literate" `elem` classes
153154 then return "code"
154155 else if stInNote st
155156 then do addToHeader "\\usepackage{fancyvrb}"
src/Text/Pandoc/Writers/Markdown.hs+1
@@ -198,6 +198,7 @@ blockToMarkdown opts (Header level inlines) = do
198198 _ -> empty
199199 else return $ text ((replicate level '#') ++ " ") <> contents <> text "\n"
200200blockToMarkdown opts (CodeBlock (_,classes,_) str) | "haskell" `elem` classes &&
201+ "literate" `elem` classes &&
201202 writerLiterateHaskell opts =
202203 return $ (vcat $ map (text "> " <>) $ map text (lines str)) <> text "\n"
203204blockToMarkdown opts (CodeBlock _ str) = return $
src/Text/Pandoc/Writers/RST.hs+2−1
@@ -183,7 +183,8 @@ blockToRST (Header level inlines) = do
183183blockToRST (CodeBlock (_,classes,_) str) = do
184184 opts <- stOptions <$> get
185185 let tabstop = writerTabStop opts
186− if "haskell" `elem` classes && writerLiterateHaskell opts
186+ if "haskell" `elem` classes && "literate" `elem` classes &&
187+ writerLiterateHaskell opts
187188 then return $ (vcat $ map (text "> " <>) $ map text (lines str)) <> text "\n"
188189 else return $ (text "::\n") $+$
189190 (nest tabstop $ vcat $ map text (lines str)) <> text "\n"
tests/lhs-test.native+1−1
@@ -1,7 +1,7 @@
11Pandoc (Meta [] [] "")
22[ Header 1 [Str "lhs",Space,Str "test"]
33, 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) "
55, 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 "."]
66, CodeBlock ("",[],[]) "f *** g = first f >>> second g"
77, Para [Str "Block",Space,Str "quote:"]