-- | -- special Filter combinators for XmlTree -- -- Version : $Id: XmlFilterCombinators.hs,v 1.3 2002/12/12 11:59:24 hxml2 Exp $ module XmlFilterCombinators ( whenOk , whenOkM ) where import XmlTree infixr 4 `whenOkM` infixr 4 `whenOk` -- ------------------------------------------------------------ -- | -- apply a filter to a tree and check for errors -- in case of an error return the error tree -- else continue whenOk :: XmlFilter -> XmlFilter ->XmlFilter whenOk f andThen t = let res = f t err = isXError $$ res in if null err then andThen $$ res else err -- ------------------------------------------------------------ -- | -- monadic version whenOkM :: Monad m => (a -> XmlTrees) -> (XmlTrees -> m XmlTrees) -> a -> m XmlTrees whenOkM f action t = let res = f t err = isXError $$ res in if null err then action res else return err -- ------------------------------------------------------------