diff options
Diffstat (limited to 'src/Text')
| -rw-r--r-- | src/Text/Pandoc/Highlighting.hs | 7 | ||||
| -rw-r--r-- | src/Text/Pandoc/Writers/HTML.hs | 14 | 
2 files changed, 16 insertions, 5 deletions
| diff --git a/src/Text/Pandoc/Highlighting.hs b/src/Text/Pandoc/Highlighting.hs index cc72967e4..cd8c5fd4b 100644 --- a/src/Text/Pandoc/Highlighting.hs +++ b/src/Text/Pandoc/Highlighting.hs @@ -81,12 +81,15 @@ highlight :: SyntaxMap            -> Attr   -- ^ Attributes of the CodeBlock            -> String -- ^ Raw contents of the CodeBlock            -> Either String a -highlight syntaxmap formatter (_, classes, keyvals) rawCode = +highlight syntaxmap formatter (ident, classes, keyvals) rawCode =    let firstNum = fromMaybe 1 (safeRead (fromMaybe "1" $ lookup "startFrom" keyvals))        fmtOpts = defaultFormatOpts{                    startNumber = firstNum,                    numberLines = any (`elem` -                        ["number","numberLines", "number-lines"]) classes } +                        ["number","numberLines", "number-lines"]) classes, +                  lineIdPrefix = if null ident +                                    then mempty +                                    else T.pack (ident ++ "-") }        tokenizeOpts = TokenizerConfig{ syntaxMap = syntaxmap                                      , traceOutput = False }        classes' = map T.pack classes diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs index 89cec38a2..1999bdbcf 100644 --- a/src/Text/Pandoc/Writers/HTML.hs +++ b/src/Text/Pandoc/Writers/HTML.hs @@ -101,6 +101,7 @@ data WriterState = WriterState      , stHtml5        :: Bool    -- ^ Use HTML5      , stEPUBVersion  :: Maybe EPUBVersion -- ^ EPUB version if for epub      , stSlideVariant :: HTMLSlideVariant +    , stCodeBlockNum :: Int     -- ^ Number of code block      }  defaultWriterState :: WriterState @@ -108,7 +109,8 @@ defaultWriterState = WriterState {stNotes= [], stMath = False, stQuotes = False,                                    stHighlighting = False, stSecNum = [],                                    stElement = False, stHtml5 = False,                                    stEPUBVersion = Nothing, -                                  stSlideVariant = NoSlides} +                                  stSlideVariant = NoSlides, +                                  stCodeBlockNum = 0}  -- Helpers to render HTML with the appropriate function. @@ -703,6 +705,12 @@ blockToHtml _ HorizontalRule = do    html5 <- gets stHtml5    return $ if html5 then H5.hr else H.hr  blockToHtml opts (CodeBlock (id',classes,keyvals) rawCode) = do +  id'' <- if null id' +             then do +               modify $ \st -> st{ stCodeBlockNum = stCodeBlockNum st + 1 } +               codeblocknum <- gets stCodeBlockNum +               return ("cb" ++ show codeblocknum) +             else return id'    let tolhs = isEnabled Ext_literate_haskell opts &&                  any (\c -> map toLower c == "haskell") classes &&                  any (\c -> map toLower c == "literate") classes @@ -716,7 +724,7 @@ blockToHtml opts (CodeBlock (id',classes,keyvals) rawCode) = do                      else rawCode        hlCode   = if isJust (writerHighlightStyle opts)                      then highlight (writerSyntaxMap opts) formatHtmlBlock -                            (id',classes',keyvals) adjCode +                            (id'',classes',keyvals) adjCode                      else Left ""    case hlCode of           Left msg -> do @@ -725,7 +733,7 @@ blockToHtml opts (CodeBlock (id',classes,keyvals) rawCode) = do             addAttrs opts (id',classes,keyvals)               $ H.pre $ H.code $ toHtml adjCode           Right h -> modify (\st -> st{ stHighlighting = True }) >> -                    addAttrs opts (id',[],keyvals) h +                    addAttrs opts (id'',[],keyvals) h  blockToHtml opts (BlockQuote blocks) = do    -- in S5, treat list in blockquote specially    -- if default is incremental, make it nonincremental; | 
