name: taggy-lens version: 0.1 x-revision: 2 synopsis: Lenses for the taggy html/xml parser description: Lenses, folds, traversals and prisms for . . This greatly simplifies your life when dealing with the ugly world of Real Life HTML. Here's an example . It lists the date, author and package name of all the /recent package uploads/ entries from the hackage page of the same name. Note that it uses to /fetch/ the Hackage page. . > module Main (main) where > > import Control.Lens (to, only,(^?),ix, toListOf) > import Data.ByteString.Lazy (ByteString) > import Data.Text (Text) > import Data.Text.Encoding.Error (lenientDecode) > import Data.Text.Lazy.Encoding (decodeUtf8With) > import Network.HTTP.Client (Response) > import Network.Wreq (responseBody, get) > import Text.Taggy (Node) > import Text.Taggy.Lens (html, elements, children, contents,allNamed) > > data Upload = > Upload Text -- ^ date > Text -- ^ author > Text -- ^ package name > deriving (Show) > > table :: [Node] -> Maybe Upload > table row = do > date <- row ^? ix 0 . contents > author <- row ^? ix 1 . contents > package <- row ^? ix 2 . elements . contents > return $ Upload date author package > > recentPackages :: Response ByteString -> [Maybe Upload] > recentPackages = toListOf > $ responseBody . to (decodeUtf8With lenientDecode) > . html . allNamed (only "tr") . children . to table > > main :: IO () > main = get "https://hackage.haskell.org/packages/recent" >>= print `fmap` recentPackages homepage: http://github.com/alpmestan/taggy-lens license: BSD3 license-file: LICENSE author: Alp Mestanogullari, Vikram Verma maintainer: alpmestan@gmail.com copyright: 2014 Alp Mestanogullari, Vikram Verma category: Text, Web build-type: Simple cabal-version: >= 1.10 library exposed-modules: Text.Taggy.Lens build-depends: base >= 4.5 && < 5, lens >= 4, taggy >= 0.1, text, unordered-containers hs-source-dirs: src default-language: Haskell2010 ghc-options: -O2 -Wall -fno-warn-orphans test-suite spec type: exitcode-stdio-1.0 hs-source-dirs: src, test main-is: Spec.hs build-depends: base >= 4.5 && < 5, taggy, text, lens >= 4, unordered-containers, hspec default-language: Haskell2010 ghc-options: -O2 -Wall -fno-warn-orphans test-suite doctests type: exitcode-stdio-1.0 hs-source-dirs: test main-is: DocTest.hs ghc-options: -threaded build-depends: base >= 4.5 && < 5, doctest default-language: Haskell2010