Package Info

ghc-taggy-lens


Lenses for the taggy html/xml parser


Development/Libraries/Haskell

Lenses, folds, traversals and prisms for <http://hackage.haskell.org/package/taggy taggy>.

This greatly simplifies your life when dealing with the ugly world of Real Life HTML. Here's an <https://github.com/alpmestan/taggy-lens/blob/master/example/HackageNew.hs 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 <http://hackage.haskell.org/package/wreq wreq> 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

Report any problem on our <http://github.com/alpmestan/taggy-lens/issues issues> page on github.


License: BSD-3-Clause
URL: https://hackage.haskell.org/package/taggy-lens

Categories

Releases

Package Version Update ID Released Package Hub Version Platforms Subpackages
0.1.2-bp150.2.3 info GA Release 2018-08-01 15
  • AArch64
  • ghc-taggy-lens
  • ghc-taggy-lens-devel
0.1.2-bp150.2.5 info GA Release 2018-07-30 15
  • ppc64le
  • x86-64
  • ghc-taggy-lens
  • ghc-taggy-lens-devel