From c177c7095938e8db29044c0f8194e53c6a2be61f Mon Sep 17 00:00:00 2001 From: fiddlosopher Date: Fri, 3 Jul 2009 02:33:58 +0000 Subject: Use language attribute to indicate source language in docbook code blocks. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1587 788f1e2b-df1e-0410-8736-df70ead52e1b --- src/Text/Pandoc/Writers/Docbook.hs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src/Text') diff --git a/src/Text/Pandoc/Writers/Docbook.hs b/src/Text/Pandoc/Writers/Docbook.hs index eed428d23..cd426e7c8 100644 --- a/src/Text/Pandoc/Writers/Docbook.hs +++ b/src/Text/Pandoc/Writers/Docbook.hs @@ -33,7 +33,9 @@ import Text.Pandoc.XML import Text.Pandoc.Shared import Text.Pandoc.Readers.TeXMath import Data.List ( isPrefixOf, drop, intercalate ) +import Data.Char ( toLower ) import Text.PrettyPrint.HughesPJ hiding ( Str ) +import Text.Pandoc.Highlighting (languages, languagesByExtension) -- | Convert list of authors to a docbook section authorToDocbook :: [Char] -> Doc @@ -129,8 +131,18 @@ blockToDocbook opts (Plain lst) = wrap opts lst blockToDocbook opts (Para lst) = inTagsIndented "para" $ wrap opts lst blockToDocbook opts (BlockQuote blocks) = inTagsIndented "blockquote" $ blocksToDocbook opts blocks -blockToDocbook _ (CodeBlock _ str) = - text "\n" <> text (escapeStringForXML str) <> text "\n" +blockToDocbook _ (CodeBlock (_,classes,_) str) = + text ("\n") <> + text (escapeStringForXML str) <> text "\n" + where lang = if null langs + then "" + else " language=\"" ++ escapeStringForXML (head langs) ++ + "\"" + isLang l = map toLower l `elem` map (map toLower) languages + langsFrom s = if isLang s + then [s] + else languagesByExtension . map toLower $ s + langs = concatMap langsFrom classes blockToDocbook opts (BulletList lst) = inTagsIndented "itemizedlist" $ listItemsToDocbook opts lst blockToDocbook _ (OrderedList _ []) = empty -- cgit v1.2.3