import Text.Pandoc import Text.Pandoc.JSON import Control.Monad.State import Id {- - Écrit par Hédy GIRAUDEAU - 27/07/17 -} firstPara :: [Block] -> [Block] firstPara [] = [] firstPara (p@(Para x):blocks) = [(Para x)] firstPara (x:blocks) = (firstPara blocks) setMignature (id, classes, mapsAttrib) = (id, "miniature":classes, mapsAttrib) purgePara (Para (Image x y (trgt,title):_)) = (Para [(Image (setMignature x) y ("article/" ++ trgt, title))]) purgePara (Para (x:t)) = purgePara (Para t) purgePara (Para []) = (Para []) transformBlock cnt ( hdF@(Header 1 _ inlines) : paraF@(Para inlinesP) : blocks ) = return (( (RawBlock (Format "html") ( start_header ) ) : hdF : (RawBlock (Format "html") ( end_header ) ) : purgePara(paraF) : firstPara(blocks) ) ++ [ (RawBlock (Format "html") (end_article) ) ]) where start_header = "
" end_header = "
" end_intro = "" end_article = "
" 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: