module Text.XML.Monad.Proc
where
import Control.Monad.Error.Class
import Control.Monad.Reader.Class
import Text.XML.Monad.Error
import qualified Text.XML.Light as L
strContent :: MonadReader L.Element m => m String
strContent = asks L.strContent
readContent :: (MonadReader L.Element m, Read a) => m a
readContent = asks (read . L.strContent)
onlyElems :: MonadReader [L.Content] m => m [L.Element]
onlyElems = asks L.onlyElems
elChildren :: MonadReader L.Element m => m [L.Element]
elChildren = asks L.elChildren
onlyText :: MonadReader [L.Content] m => m [L.CData]
onlyText = asks L.onlyText
findChildren :: MonadReader L.Element m => L.QName -> m [L.Element]
findChildren = asks . L.findChildren
filterChildren :: MonadReader L.Element m => (L.Element -> Bool) -> m [L.Element]
filterChildren = asks . L.filterChildren
filterChildrenName :: MonadReader L.Element m => (L.QName -> Bool) -> m [L.Element]
filterChildrenName = asks . L.filterChildrenName
findChild :: (MonadReader L.Element m, MonadError e m, FromXmlError e) => L.QName -> m L.Element
findChild name = asksMaybe (fromXmlError $ XmlChildNotFoundQ name) (L.findChild name)
filterChild :: (MonadReader L.Element m, MonadError e m, FromXmlError e) => (L.Element -> Bool) -> m L.Element
filterChild = asksMaybe (fromXmlError XmlChildNotFound) . L.filterChild
filterChildName :: (MonadReader L.Element m, MonadError e m, FromXmlError e) => (L.QName -> Bool) -> m L.Element
filterChildName = asksMaybe (fromXmlError XmlChildNotFound) . L.filterChildName
findElement :: (MonadReader L.Element m, MonadError e m, FromXmlError e) => L.QName -> m L.Element
findElement name = asksMaybe (fromXmlError $ XmlElementNotFoundQ name) (L.findElement name)
filterElement :: (MonadReader L.Element m, MonadError e m, FromXmlError e) => (L.Element -> Bool) -> m L.Element
filterElement = asksMaybe (fromXmlError XmlElementNotFound) . L.filterElement
filterElementName :: (MonadReader L.Element m, MonadError e m, FromXmlError e) => (L.QName -> Bool) -> m L.Element
filterElementName = asksMaybe (fromXmlError XmlElementNotFound) . L.filterElementName
findElements :: MonadReader L.Element m => L.QName -> m [L.Element]
findElements = asks . L.findElements
filterElements :: MonadReader L.Element m => (L.Element -> Bool) -> m [L.Element]
filterElements = asks . L.filterElements
filterElementsName :: MonadReader L.Element m => (L.QName -> Bool) -> m [L.Element]
filterElementsName = asks . L.filterElementsName
findAttr :: (MonadReader L.Element m, MonadError e m, FromXmlError e) => L.QName -> m String
findAttr name = asksMaybe (fromXmlError $ XmlAttributeNotFoundQ name) (L.findAttr name)
lookupAttr :: (MonadReader [L.Attr] m, MonadError e m, FromXmlError e) => L.QName -> m String
lookupAttr name = asksMaybe (fromXmlError $ XmlAttributeNotFoundQ name) (L.lookupAttr name)
findAttrBy :: (MonadReader L.Element m, MonadError e m, FromXmlError e) => (L.QName -> Bool) -> m String
findAttrBy = asksMaybe (fromXmlError XmlAttributeNotFound) . L.findAttrBy
lookupAttrBy :: (MonadReader [L.Attr] m, MonadError e m, FromXmlError e) => (L.QName -> Bool) -> m String
lookupAttrBy = asksMaybe (fromXmlError XmlAttributeNotFound) . L.lookupAttrBy