tagsoup-0.11.1: Parsing and extracting information from (possibly malformed) HTML/XML documentsSource codeContentsIndex
Text.HTML.TagSoup.Tree
Description

NOTE: This module is preliminary and may change at a future date.

This module is intended to help converting a list of tags into a tree of tags.

Synopsis
data TagTree str
= TagBranch str [Attribute str] [TagTree str]
| TagLeaf (Tag str)
tagTree :: Eq str => [Tag str] -> [TagTree str]
flattenTree :: [TagTree str] -> [Tag str]
transformTree :: (TagTree str -> [TagTree str]) -> [TagTree str] -> [TagTree str]
universeTree :: [TagTree str] -> [TagTree str]
Documentation
data TagTree str Source
Constructors
TagBranch str [Attribute str] [TagTree str]
TagLeaf (Tag str)
show/hide Instances
Functor TagTree
Eq str => Eq (TagTree str)
Ord str => Ord (TagTree str)
Show str => Show (TagTree str)
tagTree :: Eq str => [Tag str] -> [TagTree str]Source
Convert a list of tags into a tree. This version is not lazy at all, that is saved for version 2.
flattenTree :: [TagTree str] -> [Tag str]Source
transformTree :: (TagTree str -> [TagTree str]) -> [TagTree str] -> [TagTree str]Source

This operation is based on the Uniplate transform function. Given a list of trees, it applies the function to every tree in a bottom-up manner. This operation is useful for manipulating a tree - for example to make all tag names upper case:

 upperCase = transformTree f
   where f (TagBranch name atts inner) = [TagBranch (map toUpper name) atts inner]
         f x = x
universeTree :: [TagTree str] -> [TagTree str]Source

This operation is based on the Uniplate universe function. Given a list of trees, it returns those trees, and all the children trees at any level. For example:

 universeTree
    [TagBranch "a" [("href","url")] [TagBranch "b" [] [TagLeaf (TagText "text")]]]
 == [TagBranch "a" [("href","url")] [TagBranch "b" [] [TagLeaf (TagText "text")]]]
    ,TagBranch "b" [] [TagLeaf (TagText "text")]]

This operation is particularly useful for queries. To collect all "a" tags in a tree, simply do:

 [x | x@(TagTree "a" _ _) <- universeTree tree]
Produced by Haddock version 2.6.1