@@ -134,7 +134,6 @@ block = choice [ codeBlock
134 , rawBlock
134 , rawBlock
135 , blockQuote
135 , blockQuote
136 , fieldList
136 , fieldList
138 , directive
137 , directive
139 , comment
138 , comment
@@ -336,19 +335,6 @@ codeBlock = try $ codeBlockStart >> codeBlockBody
336codeBlockBody :: Parser [Char] st Blocks
335codeBlockBody :: Parser [Char] st Blocks
337codeBlockBody = try $ B.codeBlock . stripTrailingNewlines <$> indentedBlock
336codeBlockBody = try $ B.codeBlock . stripTrailingNewlines <$> indentedBlock
339−figureBlock :: RSTParser Blocks
340−figureBlock = try $ do
341− string ".. figure::"
342− src <- escapeURI . trim <$> manyTill anyChar newline
343− body <- indentedBlock
344− caption <- parseFromString extractCaption body
345− return $ B.para $ B.image src "" caption
347−extractCaption :: RSTParser Inlines
348−extractCaption = try $ do
349− manyTill anyLine blanklines
350− trimInlines . mconcat <$> many inline
352lhsCodeBlock :: RSTParser Blocks
338lhsCodeBlock :: RSTParser Blocks
353lhsCodeBlock = try $ do
339lhsCodeBlock = try $ do
354 getPosition >>= guard . (==1) . sourceColumn
340 getPosition >>= guard . (==1) . sourceColumn
@@ -544,6 +530,10 @@ directive' = do
544 "code-block" -> codeblock (lookup "number-lines" fields) (trim top) body
530 "code-block" -> codeblock (lookup "number-lines" fields) (trim top) body
545 "math" -> return $ B.para $ mconcat $ map B.displayMath
531 "math" -> return $ B.para $ mconcat $ map B.displayMath
546 $ toChunks $ top ++ "\n\n" ++ body
532 $ toChunks $ top ++ "\n\n" ++ body
534+ (caption, legend) <- parseFromString extractCaption body'
535+ let src = escapeURI $ trim top
536+ return $ B.para (B.image src "" caption) <> legend
547 "image" -> do
537 "image" -> do
548 let src = escapeURI $ trim top
538 let src = escapeURI $ trim top
549 let alt = B.str $ maybe "image" trim $ lookup "alt" fields
539 let alt = B.str $ maybe "image" trim $ lookup "alt" fields
@@ -554,6 +544,12 @@ directive' = do
554 Nothing -> B.image src "" alt
544 Nothing -> B.image src "" alt
555 _ -> return mempty
545 _ -> return mempty
547+extractCaption :: RSTParser (Inlines, Blocks)
549+ capt <- trimInlines . mconcat <$> many inline
550+ legend <- optional blanklines >> (mconcat <$> many block)
551+ return (capt,legend)
557-- divide string by blanklines
553-- divide string by blanklines
558toChunks :: String -> [String]
554toChunks :: String -> [String]
559toChunks = dropWhile null
555toChunks = dropWhile null