-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Work with HTML more easily in HXT
--   
--   See examples and full readme on the Github page:
--   https://github.com/egonSchiele/HandsomeSoup
@package HandsomeSoup
@version 0.4.2

module Text.CSS.Parser
data Selector
Selector :: String -> [(String, String)] -> [String] -> Selector
[sName] :: Selector -> String
[sAttrs] :: Selector -> [(String, String)]
[spseudoSelectores] :: Selector -> [String]
Space :: Selector
ChildOf :: Selector
FollowedBy :: Selector
pp :: Selector -> [Char]
ident :: ParsecT [Char] u Identity String
nmstart :: () => ParsecT [Char] u Identity Char
nmchar :: () => ParsecT [Char] u Identity Char

-- | selects a tag name, like <tt> h1 </tt>
typeSelector :: ParsecT [Char] u Identity [Char]

-- | universal selector, selects <tt> * </tt>
universalSelector :: ParsecT [Char] u Identity String

-- | selects a pseudo-element or pseudo-class, like <tt> :link </tt>, <tt>
--   :first-child </tt> etc.
pseudoSelector :: ParsecT [Char] u Identity [Char]

-- | class selector, selects <tt> .foo </tt>
classSelector :: ParsecT [Char] u Identity ([Char], [Char])

-- | id selector, selects <tt> #foo </tt>
idSelector :: ParsecT [Char] u Identity ([Char], [Char])

-- | selects attributes, like <tt> [id] </tt> (element must have id) or
--   <tt> [id=foo] </tt> (element must have id foo).
attributeSelector :: ParsecT [Char] u Identity ([Char], [Char])

-- | selector for everything after the type except pseudoSelectores
secondarySelector :: () => ParsecT [Char] u Identity [([Char], [Char])]
space_ :: () => ParsecT [Char] u Identity Selector
childOf :: () => ParsecT [Char] u Identity Selector
followedBy :: () => ParsecT [Char] u Identity Selector

-- | selects a tagname followed by one or more secondary selectors example:
--   <tt> a.foo </tt>, <tt> *#hello </tt>, <tt> h1 </tt> etc
simpleSelectorTag :: ParsecT [Char] u Identity Selector

-- | selects one or more secondary selectors and automatically prepends the
--   universal selector to them. example: <tt> .foo </tt>, <tt> #hello
--   </tt> etc
simpleSelectorNoTag :: () => ParsecT [Char] u Identity Selector

-- | A simple selector is either a type selector or universal selector
--   followed immediately by zero or more attribute selectors, ID
--   selectors, or pseudo-classes, in any order.
simpleSelector :: ParsecT [Char] u Identity Selector

-- | One or more simple selectors separated by combinators.
selector :: ParsecT [Char] u Identity [[Selector]]
css :: [Char] -> Either ParseError [[Selector]]
instance GHC.Show.Show Text.CSS.Parser.Selector

module Text.HandsomeSoup

-- | Helper function for getting page content. Example:
--   
--   <pre>
--   contents &lt;- runMaybeT $ openUrl "http://foo.com"
--   </pre>
openUrl :: String -> MaybeT IO String

-- | Given a url, returns a document. Example:
--   
--   <pre>
--   doc = fromUrl "http://foo.com"
--   doc = fromUrl "tests/test.html"
--   </pre>
fromUrl :: String -> IOSArrow b (NTree XNode)

-- | Given a string, parses it and returns a document. Example:
--   
--   <pre>
--   doc = parseHtml "&lt;h1&gt;hello!&lt;/h1&gt;"
--   </pre>
parseHtml :: String -> IOSArrow b (NTree XNode)

-- | Shortcut for getting attributes. Example:
--   
--   <pre>
--   doc &gt;&gt;&gt; css "a" ! "href"
--   </pre>
(!) :: ArrowXml cat => cat a XmlTree -> String -> cat a String

-- | A css selector for getting elements from a document. Example:
--   
--   <pre>
--   doc &gt;&gt;&gt; css "#menu li"
--   </pre>
css :: ArrowXml a => [Char] -> a (NTree XNode) (NTree XNode)
