File ghc-taggy-lens.spec of Package ghc-taggy-lens
#
# spec file for package ghc-taggy-lens
#
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%global pkg_name taggy-lens
%bcond_with tests
Name:           ghc-%{pkg_name}
Version:        0.1.2
Release:        0
Summary:        Lenses for the taggy html/xml parser
License:        BSD-3-Clause
Group:          Development/Libraries/Haskell
URL:            https://hackage.haskell.org/package/%{pkg_name}
Source0:        https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz
BuildRequires:  ghc-Cabal-devel
BuildRequires:  ghc-lens-devel
BuildRequires:  ghc-rpm-macros
BuildRequires:  ghc-taggy-devel
BuildRequires:  ghc-text-devel
BuildRequires:  ghc-unordered-containers-devel
%if %{with tests}
BuildRequires:  ghc-doctest-devel
BuildRequires:  ghc-hspec-devel
%endif
%description
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.
%package devel
Summary:        Haskell %{pkg_name} library development files
Group:          Development/Libraries/Haskell
Requires:       %{name} = %{version}-%{release}
Requires:       ghc-compiler = %{ghc_version}
Requires(post): ghc-compiler = %{ghc_version}
Requires(postun): ghc-compiler = %{ghc_version}
%description devel
This package provides the Haskell %{pkg_name} library development files.
%prep
%setup -q -n %{pkg_name}-%{version}
%build
%ghc_lib_build
%install
%ghc_lib_install
%check
%cabal_test
%post devel
%ghc_pkg_recache
%postun devel
%ghc_pkg_recache
%files -f %{name}.files
%doc LICENSE
%files devel -f %{name}-devel.files
%changelog