{-# LANGUAGE OverloadedStrings #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Cheapskate (markdown, def, walk, walkM, module Cheapskate.Types ) where import Cheapskate.Types import Cheapskate.Parse import Cheapskate.Html import Data.Default (def) import Data.Data import Data.Generics.Uniplate.Data import Text.Blaze.Html (ToMarkup(..)) instance ToMarkup Doc where toMarkup = renderDoc -- | Apply a transformation bottom-up to every node of a parsed document. -- This can be used, for example, to transform specially marked code blocks -- to highlighted code or images. Here is a simple example that promotes -- the levels of headers: -- -- > promoteHeaders :: Doc -> Doc -- > promoteHeaders = walk promoteHeader -- > where promoteHeader (Header n ils) = Header (n+1) ils -- > promoteHeader x = x walk :: (Data a, Data b) => (a -> a) -> (b -> b) walk = transformBi -- | Monadic version of 'walk'. walkM :: (Data a, Data b, Monad m) => (a -> m a) -> (b -> m b) walkM = transformBiM