diff options
author | fiddlosopher <fiddlosopher@788f1e2b-df1e-0410-8736-df70ead52e1b> | 2009-07-03 02:33:58 +0000 |
---|---|---|
committer | fiddlosopher <fiddlosopher@788f1e2b-df1e-0410-8736-df70ead52e1b> | 2009-07-03 02:33:58 +0000 |
commit | c177c7095938e8db29044c0f8194e53c6a2be61f (patch) | |
tree | 7530942d2999899f3027952f7890063c0f5b8ff4 /src | |
parent | e5772330951afa6f8e874d56537953d90f95222b (diff) | |
download | pandoc-c177c7095938e8db29044c0f8194e53c6a2be61f.tar.gz |
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
Diffstat (limited to 'src')
-rw-r--r-- | src/Text/Pandoc/Writers/Docbook.hs | 16 |
1 files changed, 14 insertions, 2 deletions
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 <author> 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 "<screen>\n" <> text (escapeStringForXML str) <> text "\n</screen>" +blockToDocbook _ (CodeBlock (_,classes,_) str) = + text ("<screen" ++ lang ++ ">\n") <> + text (escapeStringForXML str) <> text "\n</screen>" + 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 |