diff options
author | John MacFarlane <jgm@berkeley.edu> | 2011-01-29 16:04:07 -0800 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2011-01-29 16:04:07 -0800 |
commit | 9f28acba9dc43a63172e771b57f8a51b6b738d71 (patch) | |
tree | e1854e3a5d312fa48949f26e465d12043fb36387 | |
parent | 9e89047518c9fc4278454574d4c0e86fffe75675 (diff) | |
download | pandoc-9f28acba9dc43a63172e771b57f8a51b6b738d71.tar.gz |
Fixed highlighting for inline code.
highlightHtml in Highlighting now has a boolean argument that
selects between inline and block content.
Revised tests for new highlighting-kate.
-rw-r--r-- | changelog | 4 | ||||
-rw-r--r-- | src/Text/Pandoc/Highlighting.hs | 8 | ||||
-rw-r--r-- | src/Text/Pandoc/Writers/HTML.hs | 4 | ||||
-rw-r--r-- | tests/lhs-test.html | 30 | ||||
-rw-r--r-- | tests/lhs-test.html+lhs | 30 |
5 files changed, 42 insertions, 34 deletions
@@ -169,6 +169,10 @@ pandoc (1.8) * Added support for `lang` in `html` tag in the HTML template, so you can do `pandoc -s -V lang=es`, for example. + * `highlightHtml` in `Text.Pandoc.Highlighting` now takes + a boolean argument that selects between "inline" and + "block" HTML. + * `Text.Pandoc.Writers.RTF` now exports `rtfEmbedImage`. Images are embedded in RTF output when possible (png, jpeg). Resolves Issue #275. diff --git a/src/Text/Pandoc/Highlighting.hs b/src/Text/Pandoc/Highlighting.hs index f29106262..cf8d37431 100644 --- a/src/Text/Pandoc/Highlighting.hs +++ b/src/Text/Pandoc/Highlighting.hs @@ -37,10 +37,14 @@ import Data.List (find) import Data.Maybe (fromMaybe) import Data.Char (toLower) -highlightHtml :: Attr -> String -> Either String Html -highlightHtml (_, classes, keyvals) rawCode = +highlightHtml :: Bool -- ^ True if inline HTML + -> Attr -- ^ Attributes of the Code or CodeBlock + -> String -- ^ Raw contents of the Code or CodeBlock + -> Either String Html -- ^ An error or the formatted Html +highlightHtml inline (_, classes, keyvals) rawCode = let firstNum = read $ fromMaybe "1" $ lookup "startFrom" keyvals fmtOpts = [OptNumberFrom firstNum] ++ + [OptInline | inline] ++ case find (`elem` ["number","numberLines","number-lines"]) classes of Nothing -> [] Just _ -> [OptNumberLines] diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs index 3b40515da..08860e0f1 100644 --- a/src/Text/Pandoc/Writers/HTML.hs +++ b/src/Text/Pandoc/Writers/HTML.hs @@ -324,7 +324,7 @@ blockToHtml opts (CodeBlock (id',classes,keyvals) rawCode) = do let classes' = if writerLiterateHaskell opts then classes else filter (/= "literate") classes - case highlightHtml (id',classes',keyvals) rawCode of + case highlightHtml False (id',classes',keyvals) rawCode of Left _ -> -- change leading newlines into <br /> tags, because some -- browsers ignore leading newlines in pre blocks let (leadingBreaks, rawCode') = span (=='\n') rawCode @@ -484,7 +484,7 @@ inlineToHtml opts inline = (Emph lst) -> inlineListToHtml opts lst >>= return . emphasize (Strong lst) -> inlineListToHtml opts lst >>= return . strong (Code attr str) -> return $ thecode ! (attrsToHtml opts attr) << str' - where str' = case highlightHtml attr str of + where str' = case highlightHtml True attr str of Left _ -> stringToHtml str Right h -> h (Strikeout lst) -> inlineListToHtml opts lst >>= diff --git a/tests/lhs-test.html b/tests/lhs-test.html index 46ab8f2e4..0e5587a83 100644 --- a/tests/lhs-test.html +++ b/tests/lhs-test.html @@ -9,19 +9,19 @@ table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode, table.sourceCode { margin: 0; padding: 0; border: 0; vertical-align: baseline; border: none; } td.lineNumbers { border-right: 1px solid #AAAAAA; text-align: right; color: #AAAAAA; padding-right: 5px; padding-left: 5px; } td.sourceCode { padding-left: 5px; } -pre.sourceCode span.kw { color: #007020; font-weight: bold; } -pre.sourceCode span.dt { color: #902000; } -pre.sourceCode span.dv { color: #40a070; } -pre.sourceCode span.bn { color: #40a070; } -pre.sourceCode span.fl { color: #40a070; } -pre.sourceCode span.ch { color: #4070a0; } -pre.sourceCode span.st { color: #4070a0; } -pre.sourceCode span.co { color: #60a0b0; font-style: italic; } -pre.sourceCode span.ot { color: #007020; } -pre.sourceCode span.al { color: red; font-weight: bold; } -pre.sourceCode span.fu { color: #06287e; } -pre.sourceCode span.re { } -pre.sourceCode span.er { color: red; font-weight: bold; } +code.sourceCode span.kw { color: #007020; font-weight: bold; } +code.sourceCode span.dt { color: #902000; } +code.sourceCode span.dv { color: #40a070; } +code.sourceCode span.bn { color: #40a070; } +code.sourceCode span.fl { color: #40a070; } +code.sourceCode span.ch { color: #4070a0; } +code.sourceCode span.st { color: #4070a0; } +code.sourceCode span.co { color: #60a0b0; font-style: italic; } +code.sourceCode span.ot { color: #007020; } +code.sourceCode span.al { color: red; font-weight: bold; } +code.sourceCode span.fu { color: #06287e; } +code.sourceCode span.re { } +code.sourceCode span.er { color: red; font-weight: bold; } </style> </head> <body> @@ -31,8 +31,8 @@ pre.sourceCode span.er { color: red; font-weight: bold; } ><code >unsplit</code > is an arrow that takes a pair of values and combines them to return a single value:</p -><pre class="sourceCode haskell" -><code +><pre class="sourceCode" +><code class="sourceCode haskell" ><span class="ot" >unsplit </span ><span class="ot" diff --git a/tests/lhs-test.html+lhs b/tests/lhs-test.html+lhs index dd6b5b33c..8a4b82e0a 100644 --- a/tests/lhs-test.html+lhs +++ b/tests/lhs-test.html+lhs @@ -9,19 +9,19 @@ table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode, table.sourceCode { margin: 0; padding: 0; border: 0; vertical-align: baseline; border: none; } td.lineNumbers { border-right: 1px solid #AAAAAA; text-align: right; color: #AAAAAA; padding-right: 5px; padding-left: 5px; } td.sourceCode { padding-left: 5px; } -pre.sourceCode span.kw { color: #007020; font-weight: bold; } -pre.sourceCode span.dt { color: #902000; } -pre.sourceCode span.dv { color: #40a070; } -pre.sourceCode span.bn { color: #40a070; } -pre.sourceCode span.fl { color: #40a070; } -pre.sourceCode span.ch { color: #4070a0; } -pre.sourceCode span.st { color: #4070a0; } -pre.sourceCode span.co { color: #60a0b0; font-style: italic; } -pre.sourceCode span.ot { color: #007020; } -pre.sourceCode span.al { color: red; font-weight: bold; } -pre.sourceCode span.fu { color: #06287e; } -pre.sourceCode span.re { } -pre.sourceCode span.er { color: red; font-weight: bold; } +code.sourceCode span.kw { color: #007020; font-weight: bold; } +code.sourceCode span.dt { color: #902000; } +code.sourceCode span.dv { color: #40a070; } +code.sourceCode span.bn { color: #40a070; } +code.sourceCode span.fl { color: #40a070; } +code.sourceCode span.ch { color: #4070a0; } +code.sourceCode span.st { color: #4070a0; } +code.sourceCode span.co { color: #60a0b0; font-style: italic; } +code.sourceCode span.ot { color: #007020; } +code.sourceCode span.al { color: red; font-weight: bold; } +code.sourceCode span.fu { color: #06287e; } +code.sourceCode span.re { } +code.sourceCode span.er { color: red; font-weight: bold; } </style> </head> <body> @@ -31,8 +31,8 @@ pre.sourceCode span.er { color: red; font-weight: bold; } ><code >unsplit</code > is an arrow that takes a pair of values and combines them to return a single value:</p -><pre class="sourceCode haskell" -><code +><pre class="sourceCode" +><code class="sourceCode haskell" >> <span class="ot" >unsplit </span ><span class="ot" |