From 79e83749bf75770e7a53e9982dd2f9060e736f89 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Thu, 10 May 2012 10:10:24 -0700 Subject: DocBook reader: Support language attribute in programlisting. --- src/Text/Pandoc/Readers/DocBook.hs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/Text/Pandoc') diff --git a/src/Text/Pandoc/Readers/DocBook.hs b/src/Text/Pandoc/Readers/DocBook.hs index 0d0adf649..aed7b5977 100644 --- a/src/Text/Pandoc/Readers/DocBook.hs +++ b/src/Text/Pandoc/Readers/DocBook.hs @@ -650,13 +650,19 @@ parseBlock (Elem e) = "book" -> modify (\st -> st{ dbBook = True }) >> getTitle >> getBlocks e "table" -> parseTable "informaltable" -> parseTable - "literallayout" -> return $ codeBlock $ trimNl . strContent $ e -- TODO attrs - "computeroutput" -> return $ codeBlock $ trimNl . strContent $ e -- TODO attrs - "screen" -> return $ codeBlock $ trimNl . strContent $ e -- TODO attrs - "programlisting" -> return $ codeBlock $ trimNl . strContent $ e -- TODO attrs + "literallayout" -> codeBlockWithLang ["literallayout"] + "computeroutput" -> codeBlockWithLang ["computeroutput"] + "screen" -> codeBlockWithLang ["screen"] + "programlisting" -> codeBlockWithLang [] "?xml" -> return mempty _ -> getBlocks e where getBlocks e' = mconcat <$> (mapM parseBlock $ elContent e') + codeBlockWithLang classes = do + let classes' = case attrValue "language" e of + "" -> classes + x -> x:classes + return $ codeBlockWith (attrValue "id" e, classes', []) + $ trimNl $ strContent e skipWhite (Text (CData _ s _):xs) | all isSpace s = skipWhite xs | otherwise = xs skipWhite xs = xs -- cgit v1.2.3