import Text.Pandoc import Text.Pandoc.JSON import Control.Monad.State import Id {- - Écrit par Hédy GIRAUDEAU - 27/07/17 -} extractStart :: [Inline] -> ([Inline],[Inline]) extractStart [] = ([],[]) extractStart ((SoftBreak):q) = ((SoftBreak):y, z) where (y,z) = (extractStart q) extractStart ((LineBreak):q) = ((LineBreak):y, z) where (y,z) = (extractStart q) extractStart (img@(Image _ _ _):q) = (img: y, z) where (y,z) = (extractStart q) extractStart x = ([],x) transformBlock cnt ( hdF@(Header 1 _ inlines) : paraF@(Para inlinesP) : blocks ) = return (( (RawBlock (Format "html") ( start_header ) ) : hdF : (RawBlock (Format "html") ( end_header ) ) : (Plain inlinesP) : (RawBlock (Format "html") ( end_intro ) ) : blocks ) ++ [ (RawBlock (Format "html") (end_article) ) ]) where start_header = "
" end_header = "
" end_intro = "" end_article = "
" --transformBlock _ ((Para inlines):tl) = -- return ((Plain plainInline):(Para paraInline:tl)) -- where (plainInline, paraInline) = extractStart(inlines) transformBlock _ x = return x bar :: Pandoc -> IO Pandoc bar x = do cnt <- newId bottomUpM (transformBlock cnt) x main :: IO() main = toJSONFilter bar -- vim:set et: