-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | XML parser which uses simple-pipe -- -- This package process subset of XML and is still far from perfect, now. -- -- Example programs -- -- examples/indians.hs -- -- extensions -- -- -- --
--   import Control.Monad
--   import "monads-tf" Control.Monad.Trans
--   import Data.Maybe
--   import Data.Pipe
--   import Data.Pipe.List
--   import Text.XML.Pipe
--   
--   import qualified Data.ByteString.Char8 as BSC
--   
--   littleIndians :: Int -> BSC.ByteString
--   littleIndians n = "<indians>" `BSC.append`
--   	BSC.pack (show n) `BSC.append` " little, " `BSC.append`
--   	BSC.pack (show $ n + 1) `BSC.append` " little, " `BSC.append`
--   	BSC.pack (show $ n + 2) `BSC.append` " little Indians" `BSC.append`
--   	"</indians>"
--   
--   infiniteIndians :: [BSC.ByteString]
--   infiniteIndians = map littleIndians [1, 4 .. ]
--   
--   xml :: [BSC.ByteString]
--   xml = "<?xml version='1.0'?><song>" : infiniteIndians
--   
--   main :: IO ()
--   main = void . runPipe $ fromList xml
--   	=$= xmlEvent
--   	=$= convert fromJust
--   	=$= (xmlBegin >>= xmlNode)
--   	=$= takeP 8
--   	=$= printP
--   
--   takeP :: Monad m => Int -> Pipe a a m ()
--   takeP 0 = return ()
--   takeP n = do
--   	mx <- await
--   	maybe (return ()) (\x -> yield x >> takeP (n - 1)) mx
--   
--   convert :: Monad m => (a -> b) -> Pipe a b m ()
--   convert f = do
--   	mx <- await
--   	maybe (return ()) (\x -> yield (f x) >> convert f) mx
--   
--   printP :: Show a => Pipe a () IO ()
--   printP = do
--   	mx <- await
--   	maybe (return ()) (\x -> lift (print x) >> printP) mx
--   
-- -- examples/starttls.hs -- -- It process STARTTLS of XMPP as client. The fllowings are only main -- part. -- --
--   main :: IO ()
--   main = do
--   	h <- connectTo "localhost" (PortNumber 5222)
--   	BS.hPut h $ xmlString begin
--   	BS.hPut h $ xmlString startTls
--   	void . runPipe $ handleP h
--   		=$= xmlEvent
--   		=$= convert fromJust
--   		=$= (xmlBegin >>= xmlNodeUntil isProceed)
--   		=$= printP
--   	ca <- readCertificateStore ["cacert.sample_pem"]
--   	g <- cprgCreate <$> createEntropyPool :: IO SystemRNG
--   	(`run` g) $ do
--   		p <- open' h "localhost" ["TLS_RSA_WITH_AES_128_CBC_SHA"] [] ca
--   		hlPut p $ xmlString begin
--   		void . runPipe $ handleP p
--   			=$= xmlEvent
--   			=$= convert fromJust
--   			=$= (xmlBegin >>= xmlNode)
--   			=$= printP
--   
@package xml-pipe @version 0.0.0.10 module Text.XML.Pipe xmlEvent :: Monad m => Pipe ByteString (Maybe XmlEvent) m () xmlBegin :: Monad m => Pipe XmlEvent XmlNode m [Xmlns] xmlNode :: Monad m => [Xmlns] -> Pipe XmlEvent XmlNode m Bool xmlReborn :: Monad m => Pipe XmlEvent XmlNode m () xmlNodeUntil :: Monad m => (XmlNode -> Bool) -> [Xmlns] -> Pipe XmlEvent XmlNode m () xmlString :: [XmlNode] -> ByteString data XmlEvent XEXmlDecl :: (Int, Int) -> XmlEvent XESTag :: XEQName -> [Xmlns] -> [(XEQName, ByteString)] -> XmlEvent XEETag :: XEQName -> XmlEvent XEEmptyElemTag :: XEQName -> [Xmlns] -> [(XEQName, ByteString)] -> XmlEvent XECharData :: ByteString -> XmlEvent data XmlNode XmlDecl :: (Int, Int) -> XmlNode XmlStart :: QName -> [Xmlns] -> [(QName, ByteString)] -> XmlNode XmlCharData :: ByteString -> XmlNode XmlNode :: QName -> [Xmlns] -> [(QName, ByteString)] -> [XmlNode] -> XmlNode XmlEnd :: QName -> XmlNode type XEQName = (ByteString, ByteString) type Xmlns = (ByteString, ByteString) type QName = ((ByteString, Maybe ByteString), ByteString) nullQ :: ByteString -> QName