@@ -586,8 +586,9 @@ directive' = do
586586 case trim top of
587587 "" -> stateRstDefaultRole def
588588 role -> role })
589− "code" -> codeblock (lookup "number-lines" fields) (trim top) body
590− "code-block" -> codeblock (lookup "number-lines" fields) (trim top) body
589+ x | x == "code" || x == "code-block" ->
590+ codeblock (words $ fromMaybe [] $ lookup "class" fields)
591+ (lookup "number-lines" fields) (trim top) body
591592 "aafig" -> do
592593 let attribs = ("", ["aafig"], map (\(k,v) -> (k, trimr v)) fields)
593594 return $ B.codeBlockWith attribs $ stripTrailingNewlines body
@@ -713,12 +714,13 @@ toChunks = dropWhile null
713714 . map (trim . unlines)
714715 . splitBy (all (`elem` (" \t" :: String))) . lines
715716
716−codeblock :: Maybe String -> String -> String -> RSTParser Blocks
717−codeblock numberLines lang body =
717+codeblock :: [String] -> Maybe String -> String -> String -> RSTParser Blocks
718+codeblock classes numberLines lang body =
718719 return $ B.codeBlockWith attribs $ stripTrailingNewlines body
719− where attribs = ("", classes, kvs)
720− classes = "sourceCode" : lang
720+ where attribs = ("", classes', kvs)
721+ classes' = "sourceCode" : lang
721722 : maybe [] (\_ -> ["numberLines"]) numberLines
723+ ++ classes
722724 kvs = case numberLines of
723725 Just "" -> []
724726 Nothing -> []