packages feed

tagsoup-parsec 0.0.6 → 0.0.7

raw patch · 2 files changed

+28/−25 lines, 2 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Text.HTML.TagSoup.Parsec: allCloseTags :: String -> TagParserSt st [Tag]
+ Text.HTML.TagSoup.Parsec: allCloseTags :: (StringLike str, Show str) => str -> TagParserSt str st [Tag str]
- Text.HTML.TagSoup.Parsec: allOpenTags :: String -> TagParserSt st [Tag]
+ Text.HTML.TagSoup.Parsec: allOpenTags :: (StringLike str, Show str) => str -> TagParserSt str st [Tag str]
- Text.HTML.TagSoup.Parsec: allWholeTags :: String -> TagParserSt st [WholeTag]
+ Text.HTML.TagSoup.Parsec: allWholeTags :: (StringLike str, Show str) => str -> TagParserSt str st [WholeTag str]
- Text.HTML.TagSoup.Parsec: closeTag :: String -> TagParserSt st Tag
+ Text.HTML.TagSoup.Parsec: closeTag :: (StringLike str, Show str) => str -> TagParserSt str st (Tag str)
- Text.HTML.TagSoup.Parsec: eitherCloseTag :: String -> TagParserSt st (Either Tag Tag)
+ Text.HTML.TagSoup.Parsec: eitherCloseTag :: (StringLike str, Show str) => str -> TagParserSt str st (Either (Tag str) (Tag str))
- Text.HTML.TagSoup.Parsec: eitherOpenTag :: String -> TagParserSt st (Either Tag Tag)
+ Text.HTML.TagSoup.Parsec: eitherOpenTag :: (StringLike str, Show str) => str -> TagParserSt str st (Either (Tag str) (Tag str))
- Text.HTML.TagSoup.Parsec: eitherP :: (Show tok) => GenParser tok st a -> GenParser tok st (Either tok a)
+ Text.HTML.TagSoup.Parsec: eitherP :: Show tok => GenParser tok st a -> GenParser tok st (Either tok a)
- Text.HTML.TagSoup.Parsec: eitherWholeTag :: String -> TagParserSt st (Either Tag WholeTag)
+ Text.HTML.TagSoup.Parsec: eitherWholeTag :: (StringLike str, Show str) => str -> TagParserSt str st (Either (Tag str) (WholeTag str))
- Text.HTML.TagSoup.Parsec: maybeCloseTag :: String -> TagParserSt st (Maybe Tag)
+ Text.HTML.TagSoup.Parsec: maybeCloseTag :: (StringLike str, Show str) => str -> TagParserSt str st (Maybe (Tag str))
- Text.HTML.TagSoup.Parsec: maybeOpenTag :: String -> TagParserSt st (Maybe Tag)
+ Text.HTML.TagSoup.Parsec: maybeOpenTag :: (StringLike str, Show str) => str -> TagParserSt str st (Maybe (Tag str))
- Text.HTML.TagSoup.Parsec: maybeP :: (Show tok) => GenParser tok st a -> GenParser tok st (Maybe a)
+ Text.HTML.TagSoup.Parsec: maybeP :: Show tok => GenParser tok st a -> GenParser tok st (Maybe a)
- Text.HTML.TagSoup.Parsec: maybeWholeTag :: String -> TagParserSt st (Maybe WholeTag)
+ Text.HTML.TagSoup.Parsec: maybeWholeTag :: (StringLike str, Show str) => str -> TagParserSt str st (Maybe (WholeTag str))
- Text.HTML.TagSoup.Parsec: notCloseTag :: String -> TagParserSt st Tag
+ Text.HTML.TagSoup.Parsec: notCloseTag :: (StringLike str, Show str) => str -> TagParserSt str st (Tag str)
- Text.HTML.TagSoup.Parsec: notOpenTag :: String -> TagParserSt st Tag
+ Text.HTML.TagSoup.Parsec: notOpenTag :: (StringLike str, Show str) => str -> TagParserSt str st (Tag str)
- Text.HTML.TagSoup.Parsec: openTag :: String -> TagParserSt st Tag
+ Text.HTML.TagSoup.Parsec: openTag :: (StringLike str, Show str) => str -> TagParserSt str st (Tag str)
- Text.HTML.TagSoup.Parsec: tParse :: TagParser a -> [Tag] -> a
+ Text.HTML.TagSoup.Parsec: tParse :: (StringLike str, Show str) => TagParser str a -> [Tag str] -> a
- Text.HTML.TagSoup.Parsec: tStParse :: TagParserSt st a -> st -> [Tag] -> a
+ Text.HTML.TagSoup.Parsec: tStParse :: (StringLike str, Show str) => TagParserSt str st a -> st -> [Tag str] -> a
- Text.HTML.TagSoup.Parsec: type TagParser = GenParser Tag ()
+ Text.HTML.TagSoup.Parsec: type TagParser str = GenParser (Tag str) ()
- Text.HTML.TagSoup.Parsec: type TagParserSt = GenParser Tag
+ Text.HTML.TagSoup.Parsec: type TagParserSt str = GenParser (Tag str)
- Text.HTML.TagSoup.Parsec: type WholeTag = (Tag, [Tag], Tag)
+ Text.HTML.TagSoup.Parsec: type WholeTag str = (Tag str, [Tag str], Tag str)
- Text.HTML.TagSoup.Parsec: wholeTag :: String -> TagParserSt st WholeTag
+ Text.HTML.TagSoup.Parsec: wholeTag :: (StringLike str, Show str) => str -> TagParserSt str st (WholeTag str)

Files

Text/HTML/TagSoup/Parsec.hs view
@@ -29,29 +29,31 @@ import Text.ParserCombinators.Parsec.Pos import Text.HTML.TagSoup +import Text.StringLike+ import Data.Maybe import Data.Char  -- | A type represent the TagOpen, any inner tags , and the TagClose.-type WholeTag =-   ( Tag , [ Tag ] , Tag )+type WholeTag str =+   ( Tag str, [ Tag str] , Tag str)  -- | The Tag parser, using Tag as the token.-type TagParser =-   GenParser Tag ( )+type TagParser str =+   GenParser (Tag str) ( )  -- | A stateful tag parser -- This is a new type alias to allow backwards compatibility with old code.-type TagParserSt =-   GenParser Tag+type TagParserSt str =+   GenParser (Tag str)  -- | Used to invoke parsing of Tags.-tParse :: TagParser a -> [ Tag ] -> a+tParse :: (StringLike str, Show str) => TagParser str a -> [ Tag str ] -> a tParse p ts =    either ( error . show ) id $ parse p "tagsoup" ts  -- | Simply run a stateful tag parser-tStParse :: TagParserSt st a -> st -> [ Tag ] -> a+tStParse :: (StringLike str, Show str) => TagParserSt str st a -> st -> [ Tag str ] -> a tStParse p state tos =    either ( error . show ) id $ runParser p state "tagsoup" tos       @@ -65,17 +67,18 @@              matcher  -- make a string lowercase+lowercase :: StringLike s => s -> s lowercase =-   map toLower+   fromString . map toLower . toString   -- | openTag matches a TagOpen with the given name.  It is not case sensitive.-openTag :: String -> TagParserSt st Tag+openTag :: (StringLike str, Show str) => str -> TagParserSt str st (Tag str) openTag soughtName =    openTagMatch soughtName ( Just ) $ \ _ -> Nothing  -- | notOpenTag will match any tag which is not a TagOpen with the given name.  It is not case sensitive.-notOpenTag :: String -> TagParserSt st Tag+notOpenTag :: (StringLike str, Show str) => str -> TagParserSt str st (Tag str) notOpenTag avoidName =    openTagMatch avoidName ( \ _ -> Nothing ) Just @@ -109,7 +112,7 @@ -- then all intervening tags, -- until it reaches a TagClose with the given name. -- It is not case sensitive.-wholeTag :: String -> TagParserSt st WholeTag+wholeTag :: (StringLike str, Show str) => str -> TagParserSt str st (WholeTag str) wholeTag soughtName = do    open <- openTag soughtName    ts <- many $ notCloseTag soughtName@@ -117,51 +120,51 @@    return ( open , ts , close )  -- | closeTag matches a TagClose with the given name.  It is not case sensitive.-closeTag :: String -> TagParserSt st Tag+closeTag :: (StringLike str, Show str) => str -> TagParserSt str st (Tag str) closeTag soughtName =    closeTagMatch soughtName ( Just ) $ \ _ -> Nothing  -- | notCloseTag will match any tag which is not a TagClose with the given name.  It is not case sensitive.-notCloseTag :: String -> TagParserSt st Tag+notCloseTag :: (StringLike str, Show str) => str -> TagParserSt str st (Tag str) notCloseTag avoidName =    closeTagMatch avoidName ( \ _ -> Nothing ) Just  -- | maybeOpenTag will return `Just` the tag if it gets a TagOpen with he given name, -- It will return `Nothing` otherwise. -- It is not case sensitive.-maybeOpenTag :: String -> TagParserSt st ( Maybe Tag )+maybeOpenTag :: (StringLike str, Show str) => str -> TagParserSt str st ( Maybe (Tag str) ) maybeOpenTag =    maybeP . openTag  -- | maybeCloseTag will return `Just` the tag if it gets a TagClose with he given name, -- It will return `Nothing` otherwise. -- It is not case sensitive.-maybeCloseTag :: String -> TagParserSt st ( Maybe Tag )+maybeCloseTag :: (StringLike str, Show str) => str -> TagParserSt str st ( Maybe (Tag str) ) maybeCloseTag =    maybeP . closeTag  -- | maybeWholeTag will return `Just` the tag if it gets a WholeTag with he given name, -- It will return `Nothing` otherwise. -- It is not case sensitive.-maybeWholeTag :: String -> TagParserSt st ( Maybe WholeTag )+maybeWholeTag :: (StringLike str, Show str) => str -> TagParserSt str st ( Maybe (WholeTag str) ) maybeWholeTag =    maybeP . wholeTag  -- | allOpenTags will return all TagOpen with the given name. -- It is not case sensitive.-allOpenTags :: String -> TagParserSt st [ Tag ]+allOpenTags :: (StringLike str, Show str) => str -> TagParserSt str st [ Tag str ] allOpenTags =    allP . maybeOpenTag  -- | allCloseTags will return all TagClose with the given name. -- It is not case sensitive.-allCloseTags :: String -> TagParserSt st [ Tag ]+allCloseTags :: (StringLike str, Show str) => str -> TagParserSt str st [ Tag str ] allCloseTags =    allP . maybeCloseTag  -- | allWholeTags will return all WholeTag with the given name. -- It is not case sensitive.-allWholeTags :: String -> TagParserSt st [ WholeTag ]+allWholeTags :: (StringLike str, Show str) => str -> TagParserSt str st [ WholeTag str ] allWholeTags =    allP . maybeWholeTag @@ -174,17 +177,17 @@                   return $ Left t              ) -- | either a Right TagOpen or a Left arbitary tag.-eitherOpenTag :: String -> TagParserSt st ( Either Tag Tag )+eitherOpenTag :: (StringLike str, Show str) => str -> TagParserSt str st ( Either (Tag str) (Tag str) ) eitherOpenTag =     eitherP . openTag  -- | either a Right TagClose or a Left arbitary tag.-eitherCloseTag :: String -> TagParserSt st ( Either Tag Tag )+eitherCloseTag :: (StringLike str, Show str) => str -> TagParserSt str st ( Either (Tag str) (Tag str) ) eitherCloseTag =    eitherP . closeTag  -- | either a Right WholeTag or a Left arbitary tag.-eitherWholeTag :: String -> TagParserSt st ( Either Tag WholeTag )+eitherWholeTag :: (StringLike str, Show str) => str -> TagParserSt str st ( Either (Tag str) (WholeTag str) ) eitherWholeTag =     eitherP . wholeTag 
tagsoup-parsec.cabal view
@@ -1,10 +1,10 @@ Name:           tagsoup-parsec -Version:        0.0.6+Version:        0.0.7 License:        BSD3  License-file:   LICENSE Author:         Johnny Morrice Maintainer:     spoon@killersmurf.com-Homepage:       http://www.killersmurf.com/projects/tagsoup-parsec+Homepage:       http://www.killersmurf.com Category:       XML  Synopsis:       Tokenizes Tag, so [ Tag ] can be used as parser input. Description:    Tokenizes Tag, so [ Tag ] can be used as parser input.  Provides