openSUSE Commits
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
August 2017
- 1 participants
- 2097 discussions
Hello community,
here is the log from the commit of package ghc-ether for openSUSE:Factory checked in at 2017-08-31 20:50:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-ether (Old)
and /work/SRC/openSUSE:Factory/.ghc-ether.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-ether"
Thu Aug 31 20:50:42 2017 rev:5 rq:513238 version:0.5.1.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-ether/ghc-ether.changes 2017-05-16 14:46:40.582305441 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-ether.new/ghc-ether.changes 2017-08-31 20:50:44.199680725 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:07:21 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.5.1.0.
+
+-------------------------------------------------------------------
Old:
----
ether-0.4.2.0.tar.gz
New:
----
ether-0.5.1.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-ether.spec ++++++
--- /var/tmp/diff_new_pack.ditU7s/_old 2017-08-31 20:50:45.359517918 +0200
+++ /var/tmp/diff_new_pack.ditU7s/_new 2017-08-31 20:50:45.363517357 +0200
@@ -19,7 +19,7 @@
%global pkg_name ether
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.4.2.0
+Version: 0.5.1.0
Release: 0
Summary: Monad transformers and classes
License: BSD-3-Clause
@@ -31,14 +31,18 @@
BuildRequires: ghc-mmorph-devel
BuildRequires: ghc-monad-control-devel
BuildRequires: ghc-mtl-devel
+BuildRequires: ghc-reflection-devel
BuildRequires: ghc-rpm-macros
+BuildRequires: ghc-tagged-devel
BuildRequires: ghc-template-haskell-devel
BuildRequires: ghc-transformers-base-devel
BuildRequires: ghc-transformers-devel
BuildRequires: ghc-transformers-lift-devel
+BuildRequires: ghc-writer-cps-mtl-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if %{with tests}
BuildRequires: ghc-QuickCheck-devel
+BuildRequires: ghc-lens-devel
BuildRequires: ghc-tasty-devel
BuildRequires: ghc-tasty-quickcheck-devel
%endif
++++++ ether-0.4.2.0.tar.gz -> ether-0.5.1.0.tar.gz ++++++
++++ 4859 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package ghc-errors for openSUSE:Factory checked in at 2017-08-31 20:50:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-errors (Old)
and /work/SRC/openSUSE:Factory/.ghc-errors.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-errors"
Thu Aug 31 20:50:40 2017 rev:6 rq:513236 version:2.2.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-errors/ghc-errors.changes 2017-01-12 15:48:29.533740771 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-errors.new/ghc-errors.changes 2017-08-31 20:50:40.484202270 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:04:40 UTC 2017 - psimons(a)suse.com
+
+- Update to version 2.2.1.
+
+-------------------------------------------------------------------
Old:
----
errors-2.1.3.tar.gz
New:
----
errors-2.2.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-errors.spec ++++++
--- /var/tmp/diff_new_pack.S1bKIU/_old 2017-08-31 20:50:41.456065848 +0200
+++ /var/tmp/diff_new_pack.S1bKIU/_new 2017-08-31 20:50:41.480062480 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ghc-errors
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# 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
@@ -18,7 +18,7 @@
%global pkg_name errors
Name: ghc-%{pkg_name}
-Version: 2.1.3
+Version: 2.2.1
Release: 0
Summary: Simplified error-handling
License: BSD-3-Clause
@@ -26,8 +26,10 @@
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
BuildRequires: ghc-Cabal-devel
+BuildRequires: ghc-exceptions-devel
BuildRequires: ghc-rpm-macros
BuildRequires: ghc-safe-devel
+BuildRequires: ghc-text-devel
BuildRequires: ghc-transformers-compat-devel
BuildRequires: ghc-transformers-devel
BuildRequires: ghc-unexceptionalio-devel
++++++ errors-2.1.3.tar.gz -> errors-2.2.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/errors-2.1.3/CHANGELOG.md new/errors-2.2.1/CHANGELOG.md
--- old/errors-2.1.3/CHANGELOG.md 2016-11-28 18:41:02.000000000 +0100
+++ new/errors-2.2.1/CHANGELOG.md 2017-06-17 23:10:21.000000000 +0200
@@ -1,3 +1,20 @@
+# 2.2.1
+
+* Add precedence and fixity for `(?:)`
+
+# 2.2.0
+
+* BREAKING CHANGE: Use `Text` instead of `String`
+* Add `handleExceptT`
+
+# 2.1.3
+
+* Support older versions of `ghc`
+
+# 2.1.2
+
+* Increase upper bound on `transformers` dependency
+
# 2.1.1
* Increase upper bound on `transformers-compat`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/errors-2.1.3/Control/Error/Script.hs new/errors-2.2.1/Control/Error/Script.hs
--- old/errors-2.1.3/Control/Error/Script.hs 2016-11-28 18:41:02.000000000 +0100
+++ new/errors-2.2.1/Control/Error/Script.hs 2017-06-17 23:10:21.000000000 +0200
@@ -1,5 +1,7 @@
+{-# LANGUAGE OverloadedStrings #-}
+
{-|
- Use this module if you like to write simple scripts with 'String'-based
+ Use this module if you like to write simple scripts with 'Text'-based
errors, but you prefer to use 'ExceptT' to handle errors rather than
@Control.Exception@.
@@ -24,6 +26,8 @@
import Control.Monad.Trans.Except (ExceptT(ExceptT), runExceptT)
import Control.Error.Util (errLn)
import Data.EitherR (fmapL)
+import Data.Monoid ((<>))
+import Data.Text (Text)
import System.Environment (getProgName)
import System.Exit (exitFailure)
@@ -31,8 +35,10 @@
import Control.Monad.Trans.Class (lift)
import System.IO (stderr)
--- | An 'IO' action that can fail with a 'String' error message
-type Script = ExceptT String IO
+import qualified Data.Text
+
+-- | An 'IO' action that can fail with a 'Text' error message
+type Script = ExceptT Text IO
{-| Runs the 'Script' monad
@@ -43,17 +49,18 @@
e <- runExceptT s
case e of
Left e -> do
- errLn =<< liftM (++ ": " ++ e) getProgName
+ let adapt str = Data.Text.pack str <> ": " <> e
+ errLn =<< liftM adapt getProgName
exitFailure
Right a -> return a
{-| 'scriptIO' resembles 'lift', except it catches all exceptions and converts
- them to 'String's.
+ them to 'Text'
Note that 'scriptIO' is compatible with the 'Script' monad.
-}
-scriptIO :: (MonadIO m) => IO a -> ExceptT String m a
+scriptIO :: (MonadIO m) => IO a -> ExceptT Text m a
scriptIO = ExceptT
. liftIO
- . liftM (fmapL show)
+ . liftM (fmapL (Data.Text.pack . show))
. (try :: IO a -> IO (Either SomeException a))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/errors-2.1.3/Control/Error/Util.hs new/errors-2.2.1/Control/Error/Util.hs
--- old/errors-2.1.3/Control/Error/Util.hs 2016-11-28 18:41:02.000000000 +0100
+++ new/errors-2.2.1/Control/Error/Util.hs 2017-06-17 23:10:21.000000000 +0200
@@ -47,23 +47,27 @@
-- * Exceptions
tryIO,
+ handleExceptT,
syncIO
) where
import Control.Applicative (Applicative, pure, (<$>))
-import Control.Exception (Handler(..), IOException, SomeException)
+import Control.Exception (Handler(..), IOException, SomeException, Exception)
import Control.Monad (liftM)
+import Control.Monad.Catch (MonadCatch, try)
import Control.Monad.IO.Class (MonadIO(liftIO))
-import Control.Monad.Trans.Except (ExceptT(ExceptT), runExceptT)
+import Control.Monad.Trans.Except (ExceptT(ExceptT), runExceptT, withExceptT)
import Control.Monad.Trans.Maybe (MaybeT(MaybeT), runMaybeT)
import Data.Dynamic (Dynamic)
import Data.Monoid (Monoid(mempty, mappend))
import Data.Maybe (fromMaybe)
+import Data.Text (Text)
import System.Exit (ExitCode)
import System.IO (hPutStr, hPutStrLn, stderr)
import UnexceptionalIO (UIO, Unexceptional)
import qualified Control.Exception as Exception
+import qualified Data.Text.IO
import qualified UnexceptionalIO as UIO
-- | Fold an 'ExceptT' by providing one continuation for each constructor
@@ -123,6 +127,8 @@
maybeA ?: b = fromMaybe b maybeA
{-# INLINABLE (?:) #-}
+infixr 0 ?:
+
{-| Convert a 'Maybe' value into the 'ExceptT' monad
Named version of ('??') with arguments flipped
@@ -228,17 +234,22 @@
fmapRT = liftM
-- | Write a string to standard error
-err :: String -> IO ()
-err = hPutStr stderr
+err :: Text -> IO ()
+err = Data.Text.IO.hPutStr stderr
-- | Write a string with a newline to standard error
-errLn :: String -> IO ()
-errLn = hPutStrLn stderr
+errLn :: Text -> IO ()
+errLn = Data.Text.IO.hPutStrLn stderr
-- | Catch 'IOException's and convert them to the 'ExceptT' monad
tryIO :: MonadIO m => IO a -> ExceptT IOException m a
tryIO = ExceptT . liftIO . Exception.try
+-- | Run a monad action which may throw an exception in the `ExceptT` monad
+handleExceptT :: (Exception e, Functor m, MonadCatch m) => (e -> x) -> m a -> ExceptT x m a
+handleExceptT handler = bimapExceptT handler id . ExceptT . try
+
+
{-| Catch all exceptions, except for asynchronous exceptions found in @base@
and convert them to the 'ExceptT' monad
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/errors-2.1.3/Control/Error.hs new/errors-2.2.1/Control/Error.hs
--- old/errors-2.1.3/Control/Error.hs 2016-11-28 18:41:02.000000000 +0100
+++ new/errors-2.2.1/Control/Error.hs 2017-06-17 23:10:21.000000000 +0200
@@ -10,7 +10,7 @@
'EitherT', and 'MonadPlus' variations on total functions
* "Control.Error.Script": Support for simple scripts that catch all errors
- and transform them to 'String's
+ and transform them to 'Text'
* "Control.Error.Util": Utility functions and conversions between common
error-handling types
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/errors-2.1.3/Data/EitherR.hs new/errors-2.2.1/Data/EitherR.hs
--- old/errors-2.1.3/Data/EitherR.hs 2016-11-28 23:34:12.000000000 +0100
+++ new/errors-2.2.1/Data/EitherR.hs 2017-06-17 23:10:21.000000000 +0200
@@ -173,7 +173,7 @@
succeedT :: (Monad m) => r -> ExceptRT r m e
succeedT r = ExceptRT (return r)
--- | 'catchT' with the arguments flipped
+-- | 'catchE' with the arguments flipped
handleE :: (Monad m) => (a -> ExceptT b m r) -> ExceptT a m r -> ExceptT b m r
handleE = flip catchE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/errors-2.1.3/errors.cabal new/errors-2.2.1/errors.cabal
--- old/errors-2.1.3/errors.cabal 2016-11-30 17:27:00.000000000 +0100
+++ new/errors-2.2.1/errors.cabal 2017-06-17 23:10:21.000000000 +0200
@@ -1,5 +1,5 @@
Name: errors
-Version: 2.1.3
+Version: 2.2.1
Cabal-Version: >=1.8.0.2
Build-Type: Simple
Tested-With: GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.2, GHC == 8.0.1
@@ -25,6 +25,8 @@
Library
Build-Depends:
base >= 4 && < 5 ,
+ exceptions >= 0.6 && < 0.9,
+ text < 1.3,
transformers >= 0.2 && < 0.6,
transformers-compat >= 0.4 && < 0.6,
unexceptionalio >= 0.3 && < 0.4
1
0
Hello community,
here is the log from the commit of package ghc-engine-io for openSUSE:Factory checked in at 2017-08-31 20:50:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-engine-io (Old)
and /work/SRC/openSUSE:Factory/.ghc-engine-io.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-engine-io"
Thu Aug 31 20:50:38 2017 rev:2 rq:513235 version:1.2.17
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-engine-io/ghc-engine-io.changes 2017-06-12 15:32:22.708811391 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-engine-io.new/ghc-engine-io.changes 2017-08-31 20:50:39.412352725 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:07:47 UTC 2017 - psimons(a)suse.com
+
+- Update to version 1.2.17.
+
+-------------------------------------------------------------------
Old:
----
engine-io-1.2.16.tar.gz
New:
----
engine-io-1.2.17.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-engine-io.spec ++++++
--- /var/tmp/diff_new_pack.lWF7gy/_old 2017-08-31 20:50:40.200242129 +0200
+++ /var/tmp/diff_new_pack.lWF7gy/_new 2017-08-31 20:50:40.216239883 +0200
@@ -18,7 +18,7 @@
%global pkg_name engine-io
Name: ghc-%{pkg_name}
-Version: 1.2.16
+Version: 1.2.17
Release: 0
Summary: A Haskell implementation of Engine.IO
License: BSD-3-Clause
++++++ engine-io-1.2.16.tar.gz -> engine-io-1.2.17.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/engine-io-1.2.16/Changelog.md new/engine-io-1.2.17/Changelog.md
--- old/engine-io-1.2.16/Changelog.md 2017-05-01 19:53:31.000000000 +0200
+++ new/engine-io-1.2.17/Changelog.md 2017-07-24 14:11:11.000000000 +0200
@@ -1,3 +1,10 @@
+## 1.2.17
+
+### Other Changes
+
+* Increased the upper-bound of `aeson` to < 1.3.
+* Increased the upper-bound of `websockets` to < 0.13.
+
## 1.2.16
### Other Changes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/engine-io-1.2.16/engine-io.cabal new/engine-io-1.2.17/engine-io.cabal
--- old/engine-io-1.2.16/engine-io.cabal 2017-05-01 19:53:31.000000000 +0200
+++ new/engine-io-1.2.17/engine-io.cabal 2017-07-24 14:11:11.000000000 +0200
@@ -1,5 +1,5 @@
name: engine-io
-version: 1.2.16
+version: 1.2.17
synopsis: A Haskell implementation of Engine.IO
homepage: http://github.com/ocharles/engine.io
license: BSD3
@@ -30,7 +30,7 @@
aeson >=0.7 && <1.3,
async >=2.0 && <2.2,
attoparsec >=0.11 && <0.14,
- base >=4.6 && <4.10,
+ base >=4.6 && <4.11,
base64-bytestring >=1.0 && <1.1,
bytestring >=0.10.2.0 && <0.11,
either >= 3.4 && <4.5,
@@ -43,7 +43,7 @@
transformers >=0.2 && <0.6,
unordered-containers >=0.2 && <0.3,
vector >=0.10 && <0.13,
- websockets >=0.8 && <0.11
+ websockets >=0.8 && <0.13
hs-source-dirs: src
default-language: Haskell2010
1
0
Hello community,
here is the log from the commit of package ghc-dlist for openSUSE:Factory checked in at 2017-08-31 20:50:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-dlist (Old)
and /work/SRC/openSUSE:Factory/.ghc-dlist.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-dlist"
Thu Aug 31 20:50:35 2017 rev:7 rq:513233 version:0.8.0.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-dlist/ghc-dlist.changes 2016-10-19 13:04:03.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-dlist.new/ghc-dlist.changes 2017-08-31 20:50:36.864710340 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:05:35 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.8.0.3.
+
+-------------------------------------------------------------------
Old:
----
dlist-0.8.0.2.tar.gz
New:
----
dlist-0.8.0.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-dlist.spec ++++++
--- /var/tmp/diff_new_pack.saVOmC/_old 2017-08-31 20:50:37.952557638 +0200
+++ /var/tmp/diff_new_pack.saVOmC/_new 2017-08-31 20:50:37.968555392 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ghc-dlist
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# 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
@@ -19,7 +19,7 @@
%global pkg_name dlist
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.8.0.2
+Version: 0.8.0.3
Release: 0
Summary: Difference lists
License: BSD-3-Clause
@@ -32,6 +32,7 @@
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if %{with tests}
BuildRequires: ghc-QuickCheck-devel
+BuildRequires: ghc-quickcheck-instances-devel
%endif
%description
++++++ dlist-0.8.0.2.tar.gz -> dlist-0.8.0.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dlist-0.8.0.2/ChangeLog.md new/dlist-0.8.0.3/ChangeLog.md
--- old/dlist-0.8.0.2/ChangeLog.md 2016-09-05 08:26:25.000000000 +0200
+++ new/dlist-0.8.0.3/ChangeLog.md 2017-07-04 16:02:10.000000000 +0200
@@ -2,6 +2,16 @@
Change Log
==========
+Version 0.8.0.3 (2017-07-04) *Independence Day in the United States*
+--------------------------------------------------------------------
+
+#### Package changes
+
+* Change QuickCheck upper bound from 2.10 to 2.11 and import the `Arbitrary`
+ `NonEmpty` instance from quickcheck-instances for 2.10
+* Fix `stimes` property in test suite
+ ([Oleg Grenrus](https://github.com/phadej))
+
Version 0.8.0.2 (2016-09-04) *World Sexual Health Day*
------------------------------------------------------
@@ -45,7 +55,7 @@
* Fix GHC 7.10 warnings due to imports
([Mikhail Glushenkov](https://github.com/23Skidoo))
-Version 0.7.1.1 (2015-03-19) *St Joseph's Day*
+Version 0.7.1.1 (2015-03-19) *St. Joseph's Day*
----------------------------------------------
#### Package changes
@@ -110,6 +120,6 @@
#### Deprecations
-* Deprecate DList constructor and record selector to make it abstract
+* Deprecate `DList` constructor and record selector to make it abstract
(see [#4](https://github.com/spl/dlist/issues/4))
* Deprecate `maybeReturn` which is not directly relevant to dlists
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dlist-0.8.0.2/README.md new/dlist-0.8.0.3/README.md
--- old/dlist-0.8.0.2/README.md 2016-09-05 08:26:25.000000000 +0200
+++ new/dlist-0.8.0.3/README.md 2017-07-04 16:02:10.000000000 +0200
@@ -1,7 +1,8 @@
# Difference Lists in Haskell
-[![Travis CI](https://img.shields.io/travis/spl/dlist.svg?maxAge=2592000)](https://tr…
-[![Hackage](https://img.shields.io/hackage/v/dlist.svg?maxAge=2592000)](https://hackage.haskell.org/package/dlist)
+[![Hackage](https://img.shields.io/hackage/v/dlist.svg?maxAge=3600)](https://hackage.haskell.org/package/dlist "dlist on Hackage")
+[![Hackage dependencies](https://img.shields.io/hackage-deps/v/dlist.svg?maxAge=3600)]… "dlist updated Hackage dependencies")
+[![Travis CI](https://img.shields.io/travis/spl/dlist.svg?maxAge=3600)](https://travi… "dlist build history on Travis CI")
## Summary
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dlist-0.8.0.2/dlist.cabal new/dlist-0.8.0.3/dlist.cabal
--- old/dlist-0.8.0.2/dlist.cabal 2016-09-05 08:26:25.000000000 +0200
+++ new/dlist-0.8.0.3/dlist.cabal 2017-07-04 16:02:10.000000000 +0200
@@ -1,5 +1,5 @@
name: dlist
-version: 0.8.0.2
+version: 0.8.0.3
synopsis: Difference lists
description:
Difference lists are a list-like type supporting O(1) append. This is
@@ -45,10 +45,12 @@
build-depends: dlist,
base,
Cabal,
- QuickCheck < 2.10
- if impl(ghc >= 8)
- -- QuickCheck-2.9 introduced support for Semigroup and NonEmpty in base.
- -- It is required for testing base >= 4.9 (GHC >= 8).
- build-depends: QuickCheck >= 2.9
+ QuickCheck < 2.11
+ -- Semigroup and NonEmpty were introduced in base-4.9 (ghc-8).
+ -- QuickCheck-2.9 included support. QuickCheck-2.10 dropped support.
+ -- quickcheck-instances-0.3.15 has the Arbitrary NonEmpty instance.
+ if impl(ghc > 8)
+ build-depends: QuickCheck >= 2.9,
+ quickcheck-instances >= 0.3.15 && < 0.4
else
build-depends: QuickCheck >= 2.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dlist-0.8.0.2/tests/Main.hs new/dlist-0.8.0.3/tests/Main.hs
--- old/dlist-0.8.0.2/tests/Main.hs 2016-09-05 08:26:25.000000000 +0200
+++ new/dlist-0.8.0.3/tests/Main.hs 2017-07-04 16:02:10.000000000 +0200
@@ -24,8 +24,16 @@
import OverloadedStrings (testOverloadedStrings)
#if MIN_VERSION_base(4,9,0)
+-- base-4.9 introduced Semigroup and NonEmpty.
import Data.Semigroup (Semigroup(..))
import Data.List.NonEmpty (NonEmpty(..))
+
+-- QuickCheck-2.10 dropped the Arbitrary NonEmpty instance, so we import it from
+-- quickcheck-instances.
+#if MIN_VERSION_QuickCheck(2,10,0)
+import Test.QuickCheck.Instances ()
+#endif
+
#endif
--------------------------------------------------------------------------------
@@ -118,7 +126,8 @@
prop_Semigroup_sconcat xs = sconcat xs == toList (sconcat (fmap fromList xs))
prop_Semigroup_stimes :: Int -> [Int] -> Bool
-prop_Semigroup_stimes n xs = stimes n xs == toList (stimes n (fromList xs))
+prop_Semigroup_stimes n xs =
+ n < 0 || stimes n xs == toList (stimes n (fromList xs))
#endif
--------------------------------------------------------------------------------
1
0
Hello community,
here is the log from the commit of package ghc-distribution-nixpkgs for openSUSE:Factory checked in at 2017-08-31 20:50:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-distribution-nixpkgs (Old)
and /work/SRC/openSUSE:Factory/.ghc-distribution-nixpkgs.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-distribution-nixpkgs"
Thu Aug 31 20:50:33 2017 rev:2 rq:513232 version:1.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-distribution-nixpkgs/ghc-distribution-nixpkgs.changes 2017-04-12 18:06:03.424147785 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-distribution-nixpkgs.new/ghc-distribution-nixpkgs.changes 2017-08-31 20:50:35.308928725 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:08:16 UTC 2017 - psimons(a)suse.com
+
+- Update to version 1.1.
+
+-------------------------------------------------------------------
Old:
----
distribution-nixpkgs-1.0.0.1.tar.gz
New:
----
distribution-nixpkgs-1.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-distribution-nixpkgs.spec ++++++
--- /var/tmp/diff_new_pack.83peRw/_old 2017-08-31 20:50:36.436770410 +0200
+++ /var/tmp/diff_new_pack.83peRw/_new 2017-08-31 20:50:36.444769287 +0200
@@ -19,7 +19,7 @@
%global pkg_name distribution-nixpkgs
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 1.0.0.1
+Version: 1.1
Release: 0
Summary: Types and functions to manipulate the Nixpkgs distribution
License: BSD-3-Clause
@@ -39,7 +39,6 @@
BuildRequires: ghc-split-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if %{with tests}
-BuildRequires: ghc-QuickCheck-devel
BuildRequires: ghc-doctest-devel
BuildRequires: ghc-hspec-devel
%endif
++++++ distribution-nixpkgs-1.0.0.1.tar.gz -> distribution-nixpkgs-1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/distribution-nixpkgs-1.0.0.1/distribution-nixpkgs.cabal new/distribution-nixpkgs-1.1/distribution-nixpkgs.cabal
--- old/distribution-nixpkgs-1.0.0.1/distribution-nixpkgs.cabal 2016-06-28 16:40:08.000000000 +0200
+++ new/distribution-nixpkgs-1.1/distribution-nixpkgs.cabal 2017-05-17 23:24:07.000000000 +0200
@@ -1,10 +1,10 @@
--- This file has been generated from package.yaml by hpack version 0.14.1.
+-- This file has been generated from package.yaml by hpack version 0.17.0.
--
-- see: https://github.com/sol/hpack
name: distribution-nixpkgs
-version: 1.0.0.1
-synopsis: Types and functions to manipulate the Nixpkgs distribution.
+version: 1.1
+synopsis: Types and functions to manipulate the Nixpkgs distribution
description: Types and functions to represent, query, and manipulate the Nixpkgs distribution.
category: Distribution, Nix
homepage: https://github.com/peti/distribution-nixpkgs#readme
@@ -23,6 +23,7 @@
library
hs-source-dirs:
src
+ other-extensions: DeriveGeneric PackageImports RecordWildCards TemplateHaskell
ghc-options: -Wall
build-depends:
aeson
@@ -40,31 +41,33 @@
Distribution.Nixpkgs.License
Distribution.Nixpkgs.Meta
Distribution.Nixpkgs.PackageMap
+ Distribution.Nixpkgs.Hashes
Language.Nix.PrettyPrinting
other-modules:
Internal.OrphanInstances
default-language: Haskell2010
-test-suite spec
+test-suite doctests
type: exitcode-stdio-1.0
- main-is: Main.hs
+ main-is: doctests.hs
hs-source-dirs:
test
ghc-options: -Wall
build-depends:
- aeson
- , base > 4.2 && < 5
- , bytestring
- , Cabal > 1.24
- , containers
- , deepseq >= 1.4
- , language-nix > 2
- , lens
- , pretty >= 1.1.2
- , process
- , split
- , distribution-nixpkgs
+ base
, doctest
+ default-language: Haskell2010
+
+test-suite hspec
+ type: exitcode-stdio-1.0
+ main-is: hspec.hs
+ hs-source-dirs:
+ test
+ ghc-options: -Wall
+ build-depends:
+ base
+ , deepseq
+ , distribution-nixpkgs
, hspec
- , QuickCheck
+ , lens
default-language: Haskell2010
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/distribution-nixpkgs-1.0.0.1/src/Distribution/Nixpkgs/Hashes.hs new/distribution-nixpkgs-1.1/src/Distribution/Nixpkgs/Hashes.hs
--- old/distribution-nixpkgs-1.0.0.1/src/Distribution/Nixpkgs/Hashes.hs 1970-01-01 01:00:00.000000000 +0100
+++ new/distribution-nixpkgs-1.1/src/Distribution/Nixpkgs/Hashes.hs 2017-05-17 23:24:07.000000000 +0200
@@ -0,0 +1,56 @@
+-- | Render SHA message digests in the peculiar base32'ish format used by Nix.
+
+module Distribution.Nixpkgs.Hashes ( printSHA256, packHex ) where
+
+import Control.Exception ( assert )
+import Data.Bits
+import Data.ByteString ( ByteString )
+import qualified Data.ByteString as BS
+import qualified Data.ByteString.Char8 as BSC
+import Data.Char
+import Data.Word
+
+base32chars :: ByteString -- omitted: E O U T
+base32chars = BSC.pack "0123456789abcdfghijklmnpqrsvwxyz";
+
+-- | Render a SHA265 message digest into the unusual base32 scheme used by Nix.
+--
+-- >>> printSHA256 (packHex "7459ca5c6e117538122f04caf3dbfc58303028c26c58943430c16ff28a3b1d49")
+-- "0j8x7f5g4vy160s98n3cq8l30c2qzkdz7jh45w93hx8idrfclnbl"
+
+printSHA256 :: ByteString -> String
+printSHA256 buf = assert (BS.length buf == 32) $
+ map (BSC.index base32chars . fromIntegral . getQuintet buf) [51,50..0]
+
+getQuintet :: ByteString -> Int -> Word8
+getQuintet buf n = (c1 .|. c2) .&. 0x1f
+ where
+ b = n * 5
+ (i,j) = b `divMod` 8
+ c1 = BS.index buf i `shiftR` j
+ c2 = if i >= 31 then 0 else BS.index buf (i+1) `shiftL` (8-j)
+
+-- | Parse a hexadecimal hash representation into its binary form suitable for
+-- encoding with 'printSHA256'.
+--
+-- >>> packHex "48656c6c6f2c20776f726c642e"
+-- "Hello, world."
+--
+-- Leading zeros can be omitted:
+--
+-- >>> packHex "0"
+-- "\NUL"
+
+packHex :: String -> ByteString
+packHex = BS.pack . hex2bin
+
+hex2bin :: String -> [Word8]
+hex2bin input = f $ (if even (length input) then id else ('0':)) input
+ where
+ f :: String -> [Word8]
+ f [] = []
+ f [x] = [digit x]
+ f (x1:x2:xs) = ((digit x1 `shiftL` 4) .|. digit x2) : f xs
+
+ digit :: Char -> Word8
+ digit = fromIntegral . digitToInt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/distribution-nixpkgs-1.0.0.1/test/Main.hs new/distribution-nixpkgs-1.1/test/Main.hs
--- old/distribution-nixpkgs-1.0.0.1/test/Main.hs 2016-06-28 16:40:08.000000000 +0200
+++ new/distribution-nixpkgs-1.1/test/Main.hs 1970-01-01 01:00:00.000000000 +0100
@@ -1,32 +0,0 @@
-module Main ( main ) where
-
-import Control.DeepSeq
-import Control.Exception
-import Control.Lens
-import Data.Maybe
-import Distribution.Nixpkgs.License
-import Distribution.Nixpkgs.Meta
-import System.Environment
-import Test.DocTest
-import Test.Hspec
-
-main :: IO ()
-main = do
- distDir <- fromMaybe "dist" `fmap` lookupEnv "HASKELL_DIST_DIR"
- let cabalMacrosHeader = distDir ++ "/build/autogen/cabal_macros.h"
- doctest [ "-isrc", "-optP-include", "-optP"++cabalMacrosHeader, "src" ]
-
- hspec $
- describe "DeepSeq instances work properly for" $ do
- it "License" $ mapM_ hitsBottom [Known undefined, Unknown (Just undefined)]
- it "Meta" $ mapM_ hitsBottom
- [ nullMeta & homepage .~ undefined
- , nullMeta & description .~ undefined
- , nullMeta & license .~ undefined
- , nullMeta & platforms .~ undefined
- , nullMeta & maintainers .~ undefined
- , nullMeta & broken .~ undefined
- ]
-
-hitsBottom :: NFData a => a -> Expectation
-hitsBottom x = evaluate (rnf x) `shouldThrow` anyErrorCall
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/distribution-nixpkgs-1.0.0.1/test/doctests.hs new/distribution-nixpkgs-1.1/test/doctests.hs
--- old/distribution-nixpkgs-1.0.0.1/test/doctests.hs 1970-01-01 01:00:00.000000000 +0100
+++ new/distribution-nixpkgs-1.1/test/doctests.hs 2017-05-17 23:24:07.000000000 +0200
@@ -0,0 +1,11 @@
+module Main ( main ) where
+
+import Test.DocTest
+import System.Environment
+import Data.Maybe
+
+main :: IO ()
+main = do
+ distDir <- fromMaybe "dist" `fmap` lookupEnv "HASKELL_DIST_DIR"
+ let cabalMacrosHeader = distDir ++ "/build/autogen/cabal_macros.h"
+ doctest [ "-isrc", "-optP-include", "-optP"++cabalMacrosHeader, "src" ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/distribution-nixpkgs-1.0.0.1/test/hspec.hs new/distribution-nixpkgs-1.1/test/hspec.hs
--- old/distribution-nixpkgs-1.0.0.1/test/hspec.hs 1970-01-01 01:00:00.000000000 +0100
+++ new/distribution-nixpkgs-1.1/test/hspec.hs 2017-05-17 23:24:07.000000000 +0200
@@ -0,0 +1,24 @@
+module Main ( main ) where
+
+import Control.DeepSeq
+import Control.Exception
+import Control.Lens
+import Distribution.Nixpkgs.License
+import Distribution.Nixpkgs.Meta
+import Test.Hspec
+
+main :: IO ()
+main = hspec $
+ describe "DeepSeq instances work properly for" $ do
+ it "License" $ mapM_ hitsBottom [Known undefined, Unknown (Just undefined)]
+ it "Meta" $ mapM_ hitsBottom
+ [ nullMeta & homepage .~ undefined
+ , nullMeta & description .~ undefined
+ , nullMeta & license .~ undefined
+ , nullMeta & platforms .~ undefined
+ , nullMeta & maintainers .~ undefined
+ , nullMeta & broken .~ undefined
+ ]
+
+hitsBottom :: NFData a => a -> Expectation
+hitsBottom x = evaluate (rnf x) `shouldThrow` anyErrorCall
1
0
Hello community,
here is the log from the commit of package ghc-cue-sheet for openSUSE:Factory checked in at 2017-08-31 20:50:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-cue-sheet (Old)
and /work/SRC/openSUSE:Factory/.ghc-cue-sheet.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-cue-sheet"
Thu Aug 31 20:50:30 2017 rev:2 rq:513228 version:0.1.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-cue-sheet/ghc-cue-sheet.changes 2017-04-12 18:05:52.949628815 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-cue-sheet.new/ghc-cue-sheet.changes 2017-08-31 20:50:33.141233006 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:08:11 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.1.1.
+
+-------------------------------------------------------------------
Old:
----
cue-sheet-0.1.0.tar.gz
New:
----
cue-sheet-0.1.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-cue-sheet.spec ++++++
--- /var/tmp/diff_new_pack.KFn5Cj/_old 2017-08-31 20:50:34.705013497 +0200
+++ /var/tmp/diff_new_pack.KFn5Cj/_new 2017-08-31 20:50:34.713012374 +0200
@@ -19,7 +19,7 @@
%global pkg_name cue-sheet
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.1.0
+Version: 0.1.1
Release: 0
Summary: Support for construction, rendering, and parsing of CUE sheets
License: BSD-3-Clause
++++++ cue-sheet-0.1.0.tar.gz -> cue-sheet-0.1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cue-sheet-0.1.0/CHANGELOG.md new/cue-sheet-0.1.1/CHANGELOG.md
--- old/cue-sheet-0.1.0/CHANGELOG.md 2016-12-17 20:37:14.000000000 +0100
+++ new/cue-sheet-0.1.1/CHANGELOG.md 2017-05-21 18:06:57.000000000 +0200
@@ -1,3 +1,9 @@
+## CUE sheet 0.1.1
+
+* Improved documentation.
+
+* Improved the parser using the newest features of Megaparsec 5.3.0.
+
## CUE sheet 0.1.0
* Initial release.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cue-sheet-0.1.0/LICENSE.md new/cue-sheet-0.1.1/LICENSE.md
--- old/cue-sheet-0.1.0/LICENSE.md 2016-09-13 21:24:58.000000000 +0200
+++ new/cue-sheet-0.1.1/LICENSE.md 2017-01-27 21:18:43.000000000 +0100
@@ -1,4 +1,4 @@
-Copyright © 2016 Mark Karpov
+Copyright © 2016–2017 Mark Karpov
All rights reserved.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cue-sheet-0.1.0/README.md new/cue-sheet-0.1.1/README.md
--- old/cue-sheet-0.1.0/README.md 2016-12-11 20:10:46.000000000 +0100
+++ new/cue-sheet-0.1.1/README.md 2017-05-21 16:59:42.000000000 +0200
@@ -18,21 +18,27 @@
> authoring applications and media players.
[Read more on Wikipedia](https://en.wikipedia.org/wiki/Cue_sheet_(computing)).
-The description of the format can be
-found
+The description of the format can be found
[here](https://wayback.archive.org/web/20070614044112/http://www.goldenhawk.…,
-scroll to Appendix A (it's closest we get to a “specification”).
+scroll to the appendix A (it's closest we get to a “specification”).
## Quick start
[Read the Haddocks](https://hackage.haskell.org/package/cue-sheet). In
short, you parse a `CueSheet` with `parseCueSheet` function and render a
-`CueSheet` with `renderCueSheet` function, pretty straightforward, eh? Of
-course you still can construct a `CueSheet` manually. The data types are
+`CueSheet` with `renderCueSheet` function—pretty straightforward, eh? Of
+course, you still can construct a `CueSheet` manually. The data types are
defined in such a way that incorrect CUE sheets are impossible to represent.
+## Contribution
+
+Issues, bugs, and questions may be reported in [the GitHub issue tracker for
+this project](https://github.com/mrkkrp/cue-sheet/issues).
+
+Pull requests are also welcome and will be reviewed quickly.
+
## License
-Copyright © 2016 Mark Karpov
+Copyright © 2016–2017 Mark Karpov
Distributed under BSD 3 clause license.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cue-sheet-0.1.0/Text/CueSheet/Parser.hs new/cue-sheet-0.1.1/Text/CueSheet/Parser.hs
--- old/cue-sheet-0.1.0/Text/CueSheet/Parser.hs 2016-12-17 20:27:07.000000000 +0100
+++ new/cue-sheet-0.1.1/Text/CueSheet/Parser.hs 2017-05-21 17:27:19.000000000 +0200
@@ -1,13 +1,13 @@
-- |
-- Module : Text.CueSheet.Parser
--- Copyright : © 2016 Mark Karpov
+-- Copyright : © 2016–2017 Mark Karpov
-- License : BSD 3 clause
--
--- Maintainer : Mark Karpov <markkarpov(a)openmailbox.org>
+-- Maintainer : Mark Karpov <markkarpov92(a)gmail.com>
-- Stability : experimental
-- Portability : portable
--
--- The modules contains just CUE sheet parser. You probably want to import
+-- The modules contains a CUE sheet parser. You probably want to import
-- "Text.CueSheet" instead.
{-# LANGUAGE DeriveDataTypeable #-}
@@ -26,7 +26,7 @@
import Control.Monad.State.Strict
import Data.Data (Data)
import Data.List.NonEmpty (NonEmpty (..))
-import Data.Maybe (isJust)
+import Data.Maybe (isJust, fromMaybe)
import Data.Text (Text)
import Data.Typeable (Typeable)
import GHC.Generics
@@ -61,19 +61,28 @@
maybe "" ((++ "\n") . showErrorComponent) mfailure ++
maybe "" (\n -> "in declaration of the track " ++ show n) mtrack
--- | Enumeration of all failures that may happen during run of
+-- | The enumeration of all failures that may happen during running of
-- 'parseCueSheet'.
data CueParserFailure
= CueParserFail String
+ -- ^ 'fail' was used (should not happen)
| CueParserIndentation Ordering Pos Pos
+ -- ^ Incorrect indentation (should not happen)
| CueParserInvalidCatalog Text
+ -- ^ We ran into an invalid media catalog number
| CueParserInvalidCueText Text
+ -- ^ We ran into an invalid text literal
| CueParserTrackOutOfOrder
+ -- ^ We spotted a track out of order
| CueParserInvalidTrackIsrc Text
+ -- ^ We ran into an invalid ISRC
| CueParserInvalidSeconds Natural
+ -- ^ We ran into an invalid number of seconds
| CueParserInvalidFrames Natural
+ -- ^ We ran into an invalid number of frames
| CueParserTrackIndexOutOfOrder
+ -- ^ We spotted a track index out of order
deriving (Show, Eq, Ord, Data, Typeable, Generic)
instance ShowErrorComponent CueParserFailure where
@@ -102,7 +111,7 @@
type Parser a = StateT Context (Parsec Eec BL.ByteString) a
-- | Context of parsing. This is passed around in 'StateT'. We need all of
--- this to signal parse errors on duplicate declaration of things that
+-- this to signal parse errors on duplicate declarations of things that
-- should only be declared once according to description of the format, to
-- validate track numbers, etc.
@@ -129,7 +138,7 @@
parseCueSheet
:: String -- ^ File name to include in error messages
- -> BL.ByteString -- ^ CUE sheet to parsec as a lazy 'BL.ByteString'
+ -> BL.ByteString -- ^ CUE sheet to parse as a lazy 'BL.ByteString'
-> Either (ParseError Char Eec) CueSheet -- ^ 'ParseError' or result
parseCueSheet = parse (contextCueSheet <$> execStateT pCueSheet initContext)
where
@@ -148,7 +157,7 @@
, contextIndices = []
, contextIndexCount = 0 }
--- | Parse a 'CueSheet'. The result is not returned, but written in
+-- | Parse a 'CueSheet'. The result is not returned, but written in the
-- 'Context'.
pCueSheet :: Parser ()
@@ -314,7 +323,7 @@
failAtIf already "FLAGS"
void (some pFlag) <* eol <* scn
--- | A helper data type.
+-- | A helper data type for track flags.
data CueTrackFlag = DCP | FourCH | PRE | SCMS
@@ -439,11 +448,15 @@
withCheck :: (a -> Either CueParserFailure b) -> Parser a -> Parser b
withCheck check p = do
- r <- lookAhead p
+ cpos <- getPosition
+ npos <- fromMaybe cpos <$> getNextTokenPosition
+ r <- p
case check r of
- Left custom -> failure E.empty E.empty $
- E.singleton (Eec Nothing (Just custom))
- Right x -> x <$ p
+ Left custom -> do
+ setPosition npos
+ failure E.empty E.empty $
+ E.singleton (Eec Nothing (Just custom))
+ Right x -> return x
-- | If the first argument is 'True' and we can parse the given command,
-- fail pointing at the beginning of the command and report it as something
@@ -457,22 +470,18 @@
then empty
else p
--- | Indicate that the inner parser belongs to declaration of track with
--- given index. The index of the track will be added to 'ParseError's to
--- help user find where the error happened.
+-- | Indicate that the inner parser belongs to declaration of a track with
+-- the given index. The index of the track will be added to 'ParseError's to
+-- help the user find where the error happened.
inTrack :: Natural -> Parser a -> Parser a
-inTrack n m = do
- r <- observing m
- case r of
- Left ParseError {..} ->
- failure errorUnexpected errorExpected $
+inTrack n = region f
+ where
+ f e@ParseError {..} =
if E.null errorCustom
- then E.singleton (Eec (Just n) Nothing)
- else E.map f errorCustom
- where
- f (Eec mn x) = Eec (mn <|> Just n) x
- Right x -> return x
+ then e { errorCustom = E.singleton (Eec (Just n) Nothing) }
+ else e { errorCustom = E.map g errorCustom }
+ g (Eec mn x) = Eec (mn <|> Just n) x
-- | A labelled literal (a helper for common case).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cue-sheet-0.1.0/Text/CueSheet/Render.hs new/cue-sheet-0.1.1/Text/CueSheet/Render.hs
--- old/cue-sheet-0.1.0/Text/CueSheet/Render.hs 2016-12-17 12:43:20.000000000 +0100
+++ new/cue-sheet-0.1.1/Text/CueSheet/Render.hs 2017-05-21 17:28:24.000000000 +0200
@@ -1,13 +1,13 @@
-- |
-- Module : Text.CueSheet.Render
--- Copyright : © 2016 Mark Karpov
+-- Copyright : © 2016–2017 Mark Karpov
-- License : BSD 3 clause
--
--- Maintainer : Mark Karpov <markkarpov(a)openmailbox.org>
+-- Maintainer : Mark Karpov <markkarpov92(a)gmail.com>
-- Stability : experimental
-- Portability : portable
--
--- The module contains just CUE sheet render. You probably want to import
+-- The module contains a CUE sheet render. You probably want to import
-- "Text.CueSheet" instead.
{-# LANGUAGE FlexibleContexts #-}
@@ -34,7 +34,7 @@
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
--- | Render a CUE sheet to a lazy 'BL.ByteString'. All 'Text' values in the
+-- | Render a CUE sheet as a lazy 'BL.ByteString'. All 'Text' values in the
-- 'CueSheet' will be UTF-8 encoded.
renderCueSheet
@@ -136,7 +136,7 @@
formatNat :: Natural -> Text
formatNat = T.pack . printf "%02d"
--- | Render file type as per the CUE specs.
+-- | Render a 'CueFileType' as per the CUE specs.
renderFileType :: CueFileType -> Text
renderFileType Binary = "BINARY"
@@ -145,7 +145,7 @@
renderFileType Wave = "WAVE"
renderFileType MP3 = "MP3"
--- | Render track type as per the CUE specs.
+-- | Render a 'CueTrackType' as per the CUE specs.
renderTrackType :: CueTrackType -> Text
renderTrackType CueTrackAudio = "AUDIO"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cue-sheet-0.1.0/Text/CueSheet/Types.hs new/cue-sheet-0.1.1/Text/CueSheet/Types.hs
--- old/cue-sheet-0.1.0/Text/CueSheet/Types.hs 2016-12-17 20:36:49.000000000 +0100
+++ new/cue-sheet-0.1.1/Text/CueSheet/Types.hs 2017-05-21 17:31:23.000000000 +0200
@@ -1,18 +1,17 @@
-- |
-- Module : Text.CueSheet.Types
--- Copyright : © 2016 Mark Karpov
+-- Copyright : © 2016–2017 Mark Karpov
-- License : BSD 3 clause
--
--- Maintainer : Mark Karpov <markkarpov(a)openmailbox.org>
+-- Maintainer : Mark Karpov <markkarpov92(a)gmail.com>
-- Stability : experimental
-- Portability : portable
--
-- Types describing structure of a CUE sheet. You probably want to import
-- "Text.CueSheet" instead.
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE DeriveGeneric #-}
module Text.CueSheet.Types
( CueSheet (..)
@@ -38,11 +37,9 @@
import Control.Monad.Catch
import Data.Char (isDigit, isAscii, isLetter)
-import Data.Data (Data)
import Data.List.NonEmpty (NonEmpty (..))
import Data.Monoid ((<>))
import Data.Text (Text)
-import Data.Typeable (Typeable)
import GHC.Generics
import Numeric.Natural
import Test.QuickCheck
@@ -71,7 +68,7 @@
-- ^ Number of the first track. Typically 1, but may be greater than 1.
, cueFiles :: !(NonEmpty CueFile)
-- ^ Collection of files to be written.
- } deriving (Show, Eq, Ord, Data, Typeable, Generic)
+ } deriving (Show, Eq, Ord, Generic)
instance Arbitrary CueSheet where
arbitrary = CueSheet
@@ -97,7 +94,7 @@
-- ^ Type of file.
, cueFileTracks :: !(NonEmpty CueTrack)
-- ^ Collection of tracks in the file.
- } deriving (Show, Eq, Ord, Data, Typeable, Generic)
+ } deriving (Show, Eq, Ord, Generic)
instance Arbitrary CueFile where
arbitrary = CueFile
@@ -124,7 +121,7 @@
-- ^ Audio WAVE file (44.1 kHz, 16 bit stereo).
| MP3
-- ^ Audio MP3 file (44.1 kHz 16 bit stereo).
- deriving (Show, Read, Eq, Ord, Bounded, Enum, Data, Typeable, Generic)
+ deriving (Show, Read, Eq, Ord, Bounded, Enum, Generic)
instance Arbitrary CueFileType where
arbitrary = elements [minBound..maxBound]
@@ -161,7 +158,7 @@
-- only index that's stored in the disc's table of contents.
, cueTrackPostgap :: !(Maybe CueTime)
-- ^ Track's postgap.
- } deriving (Show, Eq, Ord, Data, Typeable, Generic)
+ } deriving (Show, Eq, Ord, Generic)
instance Arbitrary CueTrack where
arbitrary = CueTrack
@@ -194,16 +191,16 @@
| CueTrackMode2_2352 -- ^ CD-ROM XA Mode2 data.
| CueTrackCdi2336 -- ^ CD-I Mode2 data.
| CueTrackCdi2352 -- ^ CD-I Mode2 data.
- deriving (Show, Read, Eq, Ord, Bounded, Enum, Data, Typeable, Generic)
+ deriving (Show, Read, Eq, Ord, Bounded, Enum, Generic)
instance Arbitrary CueTrackType where
arbitrary = elements [minBound..maxBound]
-- | This datatype is used to indicate duration and position in time. It
--- contains number of frames. There is 75 frames in one second.
+-- contains number of frames. There are 75 frames in one second.
newtype CueTime = CueTime Natural
- deriving (Show, Read, Eq, Ord, Data, Typeable, Generic)
+ deriving (Show, Read, Eq, Ord, Generic)
instance Arbitrary CueTime where
arbitrary = CueTime <$> arbitrary
@@ -244,7 +241,7 @@
-- characters must be numeric.
newtype Mcn = Mcn Text
- deriving (Eq, Ord, Data, Typeable, Generic)
+ deriving (Eq, Ord, Generic)
instance Show Mcn where
show = show . unMcn
@@ -272,7 +269,7 @@
-- to escape them properly.
newtype CueText = CueText Text
- deriving (Eq, Ord, Data, Typeable, Generic)
+ deriving (Eq, Ord, Generic)
instance Show CueText where
show = show . unCueText
@@ -299,7 +296,7 @@
-- last seven are numeric only.
newtype Isrc = Isrc Text
- deriving (Eq, Ord, Data, Typeable, Generic)
+ deriving (Eq, Ord, Generic)
instance Show Isrc where
show = show . unIsrc
@@ -310,7 +307,7 @@
post <- vectorOf 7 (arbitrary `suchThat` isDigit)
(return . Isrc . T.pack) (pre <> post)
--- | Make a 'Isrc', if the provided 'Text' value is not a valid ISRC, throw
+-- | Make an 'Isrc', if the provided 'Text' value is not a valid ISRC, throw
-- the 'InvalidIsrc' exception.
mkIsrc :: MonadThrow m => Text -> m Isrc
@@ -326,7 +323,7 @@
unIsrc :: Isrc -> Text
unIsrc (Isrc x) = x
--- | Exception type for bad things that may happen while you use the
+-- | Exception type for the bad things that may happen while you use the
-- library.
data CueSheetException
@@ -340,20 +337,20 @@
-- ^ Provided text wasn't a valid CUE text.
| InvalidIsrc Text
-- ^ Provided text wasn't a valid ISRC.
- deriving (Eq, Ord, Show, Read, Data, Typeable, Generic)
+ deriving (Eq, Ord, Show, Read, Generic)
instance Exception CueSheetException
----------------------------------------------------------------------------
-- Helpers
--- | Check if given 'Text' is a valid MCN.
+-- | Check if the given 'Text' is a valid MCN.
isValidMcn :: Text -> Bool
isValidMcn x = T.length x == 13 && T.all isDigit x
--- | Check if given 'Text' has valid length to be used in a CUE sheet as
--- performer, title, etc.
+-- | Check if the given 'Text' has valid length and contents to be used in a
+-- CUE sheet as performer, title, etc.
isValidCueText :: Text -> Bool
isValidCueText x = l >= 1 && l <= 80 && T.all f x
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cue-sheet-0.1.0/Text/CueSheet.hs new/cue-sheet-0.1.1/Text/CueSheet.hs
--- old/cue-sheet-0.1.0/Text/CueSheet.hs 2016-12-17 20:36:37.000000000 +0100
+++ new/cue-sheet-0.1.1/Text/CueSheet.hs 2017-05-21 17:05:54.000000000 +0200
@@ -1,9 +1,9 @@
-- |
-- Module : Text.CueSheet
--- Copyright : © 2016 Mark Karpov
+-- Copyright : © 2016–2017 Mark Karpov
-- License : BSD 3 clause
--
--- Maintainer : Mark Karpov <markkarpov(a)openmailbox.org>
+-- Maintainer : Mark Karpov <markkarpov92(a)gmail.com>
-- Stability : experimental
-- Portability : portable
--
@@ -11,9 +11,6 @@
-- types are defined in such a way that incorrect CUE sheets are impossible
-- to represent. See 'parseCueSheet' for parsing of plain text CUE sheet
-- files and 'renderCueSheet' for rendering.
---
--- If you need to embed\/extract a CUE sheet in a FLAC file, see the @flac@
--- package <https://hackage.haskell.org/package/flac>.
module Text.CueSheet
( -- * Types
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cue-sheet-0.1.0/cue-sheet.cabal new/cue-sheet-0.1.1/cue-sheet.cabal
--- old/cue-sheet-0.1.0/cue-sheet.cabal 2016-12-17 20:38:36.000000000 +0100
+++ new/cue-sheet-0.1.1/cue-sheet.cabal 2017-05-21 18:07:42.000000000 +0200
@@ -1,42 +1,11 @@
---
--- Cabal configuration for ‘cue-sheet’ package.
---
--- Copyright © 2016 Mark Karpov <markkarpov(a)openmailbox.org>
---
--- Redistribution and use in source and binary forms, with or without
--- modification, are permitted provided that the following conditions are
--- met:
---
--- * Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- * Redistributions in binary form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- * Neither the name Mark Karpov nor the names of contributors may be used
--- to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS “AS IS” AND ANY
--- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
--- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
--- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
--- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
--- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
--- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
--- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
--- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
--- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
-
name: cue-sheet
-version: 0.1.0
+version: 0.1.1
cabal-version: >= 1.10
+tested-with: GHC==7.10.3, GHC==8.0.2, GHC==8.2.1
license: BSD3
license-file: LICENSE.md
-author: Mark Karpov <markkarpov(a)openmailbox.org>
-maintainer: Mark Karpov <markkarpov(a)openmailbox.org>
+author: Mark Karpov <markkarpov92(a)gmail.com>
+maintainer: Mark Karpov <markkarpov92(a)gmail.com>
homepage: https://github.com/mrkkrp/cue-sheet
bug-reports: https://github.com/mrkkrp/cue-sheet/issues
category: Audio
@@ -63,7 +32,7 @@
, containers >= 0.5.6.2 && < 0.6
, data-default-class
, exceptions >= 0.6 && < 0.9
- , megaparsec >= 5.1.1 && < 6.0
+ , megaparsec >= 5.3 && < 6.0
, mtl >= 2.0 && < 3.0
, text >= 0.2 && < 1.3
if !impl(ghc >= 8.0)
@@ -89,7 +58,7 @@
build-depends: QuickCheck >= 2.4 && < 3.0
, base >= 4.8 && < 5.0
, bytestring >= 0.10.8 && < 0.11
- , cue-sheet >= 0.1
+ , cue-sheet
, exceptions >= 0.6 && < 0.9
, hspec >= 2.0 && < 3.0
, hspec-megaparsec >= 0.3 && < 0.4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cue-sheet-0.1.0/tests/Text/CueSheet/ParserSpec.hs new/cue-sheet-0.1.1/tests/Text/CueSheet/ParserSpec.hs
--- old/cue-sheet-0.1.0/tests/Text/CueSheet/ParserSpec.hs 2016-12-17 20:24:27.000000000 +0100
+++ new/cue-sheet-0.1.1/tests/Text/CueSheet/ParserSpec.hs 2017-05-21 17:05:02.000000000 +0200
@@ -1,35 +1,3 @@
---
--- Parser tests for the ‘cue-sheet’ package.
---
--- Copyright © 2016 Mark Karpov <markkarpov(a)openmailbox.org>
---
--- Redistribution and use in source and binary forms, with or without
--- modification, are permitted provided that the following conditions are
--- met:
---
--- * Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- * Redistributions in binary form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- * Neither the name Mark Karpov nor the names of contributors may be used
--- to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS “AS IS” AND ANY
--- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
--- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
--- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
--- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
--- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
--- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
--- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
--- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
--- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
-
{-# LANGUAGE OverloadedStrings #-}
module Text.CueSheet.ParserSpec
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cue-sheet-0.1.0/tests/Text/CueSheet/RenderSpec.hs new/cue-sheet-0.1.1/tests/Text/CueSheet/RenderSpec.hs
--- old/cue-sheet-0.1.0/tests/Text/CueSheet/RenderSpec.hs 2016-12-17 12:51:31.000000000 +0100
+++ new/cue-sheet-0.1.1/tests/Text/CueSheet/RenderSpec.hs 2017-05-21 17:05:16.000000000 +0200
@@ -1,35 +1,3 @@
---
--- Render tests for the ‘cue-sheet’ package.
---
--- Copyright © 2016 Mark Karpov <markkarpov(a)openmailbox.org>
---
--- Redistribution and use in source and binary forms, with or without
--- modification, are permitted provided that the following conditions are
--- met:
---
--- * Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- * Redistributions in binary form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- * Neither the name Mark Karpov nor the names of contributors may be used
--- to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS “AS IS” AND ANY
--- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
--- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
--- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
--- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
--- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
--- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
--- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
--- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
--- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
-
{-# LANGUAGE OverloadedStrings #-}
module Text.CueSheet.RenderSpec
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cue-sheet-0.1.0/tests/Text/CueSheet/TypesSpec.hs new/cue-sheet-0.1.1/tests/Text/CueSheet/TypesSpec.hs
--- old/cue-sheet-0.1.0/tests/Text/CueSheet/TypesSpec.hs 2016-12-11 12:16:13.000000000 +0100
+++ new/cue-sheet-0.1.1/tests/Text/CueSheet/TypesSpec.hs 2017-05-21 17:05:19.000000000 +0200
@@ -1,35 +1,3 @@
---
--- Test for ‘Text.CueSheet.Types’.
---
--- Copyright © 2016 Mark Karpov <markkarpov(a)openmailbox.org>
---
--- Redistribution and use in source and binary forms, with or without
--- modification, are permitted provided that the following conditions are
--- met:
---
--- * Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- * Redistributions in binary form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- * Neither the name Mark Karpov nor the names of contributors may be used
--- to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS “AS IS” AND ANY
--- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
--- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
--- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
--- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
--- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
--- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
--- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
--- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
--- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
-
{-# LANGUAGE OverloadedStrings #-}
module Text.CueSheet.TypesSpec
1
0
Hello community,
here is the log from the commit of package ghc-cubicbezier for openSUSE:Factory checked in at 2017-08-31 20:50:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-cubicbezier (Old)
and /work/SRC/openSUSE:Factory/.ghc-cubicbezier.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-cubicbezier"
Thu Aug 31 20:50:28 2017 rev:2 rq:513227 version:0.6.0.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-cubicbezier/ghc-cubicbezier.changes 2017-04-12 18:05:51.585821649 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-cubicbezier.new/ghc-cubicbezier.changes 2017-08-31 20:50:29.281774759 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:04:43 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.6.0.3.
+
+-------------------------------------------------------------------
Old:
----
cubicbezier-0.5.0.0.tar.gz
New:
----
cubicbezier-0.6.0.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-cubicbezier.spec ++++++
--- /var/tmp/diff_new_pack.TFIXbh/_old 2017-08-31 20:50:30.205645075 +0200
+++ /var/tmp/diff_new_pack.TFIXbh/_new 2017-08-31 20:50:30.217643391 +0200
@@ -19,7 +19,7 @@
%global pkg_name cubicbezier
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.5.0.0
+Version: 0.6.0.3
Release: 0
Summary: Efficient manipulating of 2D cubic bezier curves
License: BSD-3-Clause
@@ -28,6 +28,7 @@
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-containers-devel
+BuildRequires: ghc-fast-math-devel
BuildRequires: ghc-integration-devel
BuildRequires: ghc-matrices-devel
BuildRequires: ghc-microlens-devel
@@ -36,6 +37,7 @@
BuildRequires: ghc-mtl-devel
BuildRequires: ghc-rpm-macros
BuildRequires: ghc-vector-devel
+BuildRequires: ghc-vector-space-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if %{with tests}
BuildRequires: ghc-parsec-devel
++++++ cubicbezier-0.5.0.0.tar.gz -> cubicbezier-0.6.0.3.tar.gz ++++++
++++ 2762 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package ghc-cryptonite-openssl for openSUSE:Factory checked in at 2017-08-31 20:50:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-cryptonite-openssl (Old)
and /work/SRC/openSUSE:Factory/.ghc-cryptonite-openssl.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-cryptonite-openssl"
Thu Aug 31 20:50:23 2017 rev:2 rq:513226 version:0.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-cryptonite-openssl/ghc-cryptonite-openssl.changes 2017-04-11 09:47:14.143514609 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-cryptonite-openssl.new/ghc-cryptonite-openssl.changes 2017-08-31 20:50:27.793983601 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:08:11 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.6.
+
+-------------------------------------------------------------------
Old:
----
cryptonite-openssl-0.5.tar.gz
New:
----
cryptonite-openssl-0.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-cryptonite-openssl.spec ++++++
--- /var/tmp/diff_new_pack.S4HIVF/_old 2017-08-31 20:50:28.833837637 +0200
+++ /var/tmp/diff_new_pack.S4HIVF/_new 2017-08-31 20:50:28.837837076 +0200
@@ -19,7 +19,7 @@
%global pkg_name cryptonite-openssl
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.5
+Version: 0.6
Release: 0
Summary: Crypto stuff using OpenSSL cryptographic library
License: BSD-3-Clause
++++++ cryptonite-openssl-0.5.tar.gz -> cryptonite-openssl-0.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptonite-openssl-0.5/Crypto/OpenSSL/AES/Foreign.hsc new/cryptonite-openssl-0.6/Crypto/OpenSSL/AES/Foreign.hsc
--- old/cryptonite-openssl-0.5/Crypto/OpenSSL/AES/Foreign.hsc 2016-11-21 13:06:04.000000000 +0100
+++ new/cryptonite-openssl-0.6/Crypto/OpenSSL/AES/Foreign.hsc 2017-05-13 12:37:47.000000000 +0200
@@ -5,20 +5,31 @@
#include <openssl/opensslv.h>
#include <openssl/evp.h>
-#if OPENSSL_VERSION_NUMBER > 0x10001000
+#if OPENSSL_VERSION_NUMBER >= 0x10100000
+#define OPENSSL_HAS_OPAQUE_EVP_CIPHER_CTX
+#endif
+
+#if OPENSSL_VERSION_NUMBER >= 0x10001000
#define OPENSSL_HAS_PBKDF2
#define OPENSSL_HAS_GCM
#endif
+import Foreign.Marshal.Alloc
import Foreign.Ptr
+import Foreign.ForeignPtr
import Foreign.C.Types
import Data.Word
+#ifndef OPENSSL_HAS_OPAQUE_EVP_CIPHER_CTX
+import qualified Data.Memory.PtrMethods as B (memSet)
+#endif
gcmTagLength :: Int
gcmTagLength = 16
+#ifndef OPENSSL_HAS_OPAQUE_EVP_CIPHER_CTX
sizeofEVP :: Int
sizeofEVP = (#const sizeof(EVP_CIPHER_CTX))
+#endif
data ENGINE
@@ -32,14 +43,33 @@
type OutputOffset = Ptr CInt
type InputLength = CInt
+compatNewEvpCipherCtx :: IO (ForeignPtr EVP_CIPHER_CTX)
+compatNewEvpCipherCtx = do
+#ifdef OPENSSL_HAS_OPAQUE_EVP_CIPHER_CTX
+ ptr <- ssl_c_cipher_ctx_new
+ newForeignPtr ssl_c_cipher_ctx_free ptr
+#else
+ ptr <- mallocBytes sizeofEVP
+ B.memSet (castPtr ptr) 0 (fromIntegral sizeofEVP)
+ ssl_c_cipher_ctx_init ptr
+ newForeignPtr ssl_c_cipher_ctx_cleanup ptr
+#endif
+
+#ifdef OPENSSL_HAS_OPAQUE_EVP_CIPHER_CTX
+foreign import ccall unsafe "EVP_CIPHER_CTX_new"
+ ssl_c_cipher_ctx_new :: IO (Ptr EVP_CIPHER_CTX)
+#endif
+
foreign import ccall unsafe "EVP_CIPHER_CTX_init"
ssl_c_cipher_ctx_init :: Ptr EVP_CIPHER_CTX -> IO ()
foreign import ccall unsafe "&EVP_CIPHER_CTX_free"
ssl_c_cipher_ctx_free :: FunPtr (Ptr EVP_CIPHER_CTX -> IO ())
+#ifndef OPENSSL_HAS_OPAQUE_EVP_CIPHER_CTX
foreign import ccall unsafe "&EVP_CIPHER_CTX_cleanup"
ssl_c_cipher_ctx_cleanup :: FunPtr (Ptr EVP_CIPHER_CTX -> IO ())
+#endif
foreign import ccall unsafe "EVP_CIPHER_CTX_ctrl"
ssl_c_cipher_ctx_ctrl :: Ptr EVP_CIPHER_CTX -> CInt -> CInt -> Ptr a -> IO CInt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptonite-openssl-0.5/Crypto/OpenSSL/AES.hs new/cryptonite-openssl-0.6/Crypto/OpenSSL/AES.hs
--- old/cryptonite-openssl-0.5/Crypto/OpenSSL/AES.hs 2016-11-21 13:06:04.000000000 +0100
+++ new/cryptonite-openssl-0.6/Crypto/OpenSSL/AES.hs 2017-05-13 12:37:47.000000000 +0200
@@ -27,7 +27,6 @@
import Foreign.Storable
import Data.ByteString (ByteString)
import qualified Data.ByteArray as B
-import qualified Data.Memory.PtrMethods as B (memSet)
type GCMCtx = ForeignPtr EVP_CIPHER_CTX
@@ -116,10 +115,9 @@
contextNew :: (Ptr EVP_CIPHER_CTX -> IO ()) -> IO GCMCtx
contextNew f = do
- ptr <- mallocBytes sizeofEVP
- B.memSet (castPtr ptr) 0 (fromIntegral sizeofEVP)
- f ptr
- newForeignPtr ssl_c_cipher_ctx_cleanup ptr
+ fptr <- compatNewEvpCipherCtx
+ withForeignPtr fptr f
+ return fptr
nullEngine :: Ptr ENGINE
nullEngine = nullPtr
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptonite-openssl-0.5/cryptonite-openssl.cabal new/cryptonite-openssl-0.6/cryptonite-openssl.cabal
--- old/cryptonite-openssl-0.5/cryptonite-openssl.cabal 2017-01-02 22:31:40.000000000 +0100
+++ new/cryptonite-openssl-0.6/cryptonite-openssl.cabal 2017-05-13 12:45:11.000000000 +0200
@@ -1,5 +1,5 @@
Name: cryptonite-openssl
-Version: 0.5
+Version: 0.6
Synopsis: Crypto stuff using OpenSSL cryptographic library
Description: cryptography
License: BSD3
1
0
Hello community,
here is the log from the commit of package ghc-concurrent-output for openSUSE:Factory checked in at 2017-08-31 20:50:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-concurrent-output (Old)
and /work/SRC/openSUSE:Factory/.ghc-concurrent-output.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-concurrent-output"
Thu Aug 31 20:50:21 2017 rev:6 rq:513223 version:1.9.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-concurrent-output/ghc-concurrent-output.changes 2017-03-20 17:06:31.447613784 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-concurrent-output.new/ghc-concurrent-output.changes 2017-08-31 20:50:22.478729705 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:08:12 UTC 2017 - psimons(a)suse.com
+
+- Update to version 1.9.2.
+
+-------------------------------------------------------------------
Old:
----
concurrent-output-1.7.9.tar.gz
New:
----
concurrent-output-1.9.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-concurrent-output.spec ++++++
--- /var/tmp/diff_new_pack.uEhzAY/_old 2017-08-31 20:50:23.682560723 +0200
+++ /var/tmp/diff_new_pack.uEhzAY/_new 2017-08-31 20:50:23.694559038 +0200
@@ -18,7 +18,7 @@
%global pkg_name concurrent-output
Name: ghc-%{pkg_name}
-Version: 1.7.9
+Version: 1.9.2
Release: 0
Summary: Ungarble output from several threads or commands
License: BSD-2-Clause
++++++ concurrent-output-1.7.9.tar.gz -> concurrent-output-1.9.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/concurrent-output-1.7.9/CHANGELOG new/concurrent-output-1.9.2/CHANGELOG
--- old/concurrent-output-1.7.9/CHANGELOG 2017-02-12 23:15:31.000000000 +0100
+++ new/concurrent-output-1.9.2/CHANGELOG 2017-05-19 17:37:54.000000000 +0200
@@ -1,3 +1,35 @@
+concurrent-output (1.9.2) unstable; urgency=medium
+
+ * Allow process-1.6.0.0.
+
+ -- Joey Hess <id(a)joeyh.name> Fri, 19 May 2017 11:36:35 -0400
+
+concurrent-output (1.9.1) unstable; urgency=medium
+
+ * Documentation fix: createProcessConcurrent has been available on
+ Windows since 1.7.5 but the docs said not.
+ * When all regions are closed, flush stdout so that the display gets
+ updated, which didn't happen before.
+
+ -- Joey Hess <id(a)joeyh.name> Tue, 16 May 2017 16:49:43 -0400
+
+concurrent-output (1.9.0) unstable; urgency=medium
+
+ * Replaced displayUpdateNotifier with a simpler and safer
+ waitDisplayChange interface.
+
+ -- Joey Hess <id(a)joeyh.name> Fri, 12 May 2017 17:17:09 -0400
+
+concurrent-output (1.8.0) unstable; urgency=medium
+
+ * Added displayUpdateNotifier, which can be used to wait for
+ changes to console regions to be displayed.
+ (stmdemo has an example of using that to temporarily shut down the
+ region based display to run a bash prompt, and restore the region
+ display later.)
+
+ -- Joey Hess <id(a)joeyh.name> Fri, 12 May 2017 16:27:41 -0400
+
concurrent-output (1.7.9) unstable; urgency=medium
* Allow lazy text to be used as an Outputable value, and as
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/concurrent-output-1.7.9/LICENSE new/concurrent-output-1.9.2/LICENSE
--- old/concurrent-output-1.7.9/LICENSE 2017-02-12 23:15:31.000000000 +0100
+++ new/concurrent-output-1.9.2/LICENSE 2017-05-19 17:37:54.000000000 +0200
@@ -1,4 +1,4 @@
-Copyright © 2015 Joey Hess <id(a)joeyh.name>
+Copyright © 2015-2017 Joey Hess <id(a)joeyh.name>
Copyright © 2009 Joachim Breitner
Redistribution and use in source and binary forms, with or without
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/concurrent-output-1.7.9/System/Console/Concurrent/Internal.hs new/concurrent-output-1.9.2/System/Console/Concurrent/Internal.hs
--- old/concurrent-output-1.7.9/System/Console/Concurrent/Internal.hs 2017-02-12 23:15:31.000000000 +0100
+++ new/concurrent-output-1.9.2/System/Console/Concurrent/Internal.hs 2017-05-19 17:37:54.000000000 +0200
@@ -147,15 +147,20 @@
-- | Displays a value to stdout.
--
--- No newline is appended to the value, so if you want a newline, be sure
--- to include it yourself.
---
-- Uses locking to ensure that the whole output occurs atomically
-- even when other threads are concurrently generating output.
--
+-- No newline is appended to the value, so if you want a newline, be sure
+-- to include it yourself.
+--
-- When something else is writing to the console at the same time, this does
-- not block. It buffers the value, so it will be displayed once the other
-- writer is done.
+--
+-- When outputConcurrent is used within a call to
+-- `System.Console.Regions.displayConsoleRegions`, the output is displayed
+-- above the currently open console regions. Only lines ending in a newline
+-- are displayed in this case (it uses `waitCompleteLines`).
outputConcurrent :: Outputable v => v -> IO ()
outputConcurrent = outputConcurrent' StdOut
@@ -261,8 +266,6 @@
-- the process is instead run with its stdout and stderr
-- redirected to a buffer. The buffered output will be displayed as soon
-- as the output lock becomes free.
---
--- Currently only available on Unix systems, not Windows.
createProcessConcurrent :: P.CreateProcess -> IO (Maybe Handle, Maybe Handle, Maybe Handle, ConcurrentProcessHandle)
createProcessConcurrent p
| willOutput (P.std_out p) || willOutput (P.std_err p) =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/concurrent-output-1.7.9/System/Console/Regions.hs new/concurrent-output-1.9.2/System/Console/Regions.hs
--- old/concurrent-output-1.7.9/System/Console/Regions.hs 2017-02-12 23:15:31.000000000 +0100
+++ new/concurrent-output-1.9.2/System/Console/Regions.hs 2017-05-19 17:37:54.000000000 +0200
@@ -9,7 +9,9 @@
-- License: BSD-2-clause
--
-- Console regions are displayed near the bottom of the console, and can be
--- updated concurrently by threads. Any other output displayed using
+-- updated concurrently by threads.
+--
+-- Any other output lines displayed using
-- `outputConcurrent` and `createProcessConcurrent`
-- will scroll up above the open console regions.
--
@@ -108,6 +110,7 @@
consoleWidth,
consoleHeight,
regionList,
+ waitDisplayChange,
) where
import Data.Monoid
@@ -207,8 +210,7 @@
consoleHeight :: STM Int
consoleHeight = Console.height <$> readTVar consoleSize
--- | The RegionList TMVar is left empty when `displayConsoleRegions`
--- is not running.
+-- | Check if `displayConsoleRegions` is running.
regionDisplayEnabled :: IO Bool
regionDisplayEnabled = atomically $ not <$> isEmptyTMVar regionList
@@ -431,47 +433,93 @@
trackConsoleWidth :: IO ()
trackConsoleWidth = do
- let getwidth = maybe noop (atomically . writeTVar consoleSize)
+ let getsz = maybe noop (atomically . writeTVar consoleSize)
=<< Console.size
- getwidth
- installResizeHandler (Just getwidth)
+ getsz
+ installResizeHandler (Just getsz)
data DisplayChange
- = BufferChange (StdHandle, OutputBuffer)
+ = BufferChange BufferSnapshot
| RegionChange RegionSnapshot
+ | RegionListChange RegionSnapshot
| TerminalResize Width
- | EndSignal ()
+ | Shutdown
+ | DisplayChangeBarrier Barrier
+type BufferSnapshot = (StdHandle, OutputBuffer)
type RegionSnapshot = ([ConsoleRegion], [R], [[Text]])
+type Barrier = Integer
+
+-- | This is a broadcast TChan, which gets a DisplayChange written to it
+-- after the display has been updated. It can be used to wait for something
+-- to be displayed.
+{-# NOINLINE displayUpdateNotifier #-}
+displayUpdateNotifier :: TChan DisplayChange
+displayUpdateNotifier = unsafePerformIO $ newBroadcastTChanIO
+
+{-# NOINLINE displayChangeBarrier #-}
+displayChangeBarrier :: TVar Barrier
+displayChangeBarrier = unsafePerformIO $ newTVarIO 0
+
+-- | Runs a STM action, and waits for the display to be fully updated
+-- before returning.
+waitDisplayChange :: STM a -> IO a
+waitDisplayChange a = do
+ r <- atomically a
+ c <- atomically $ dupTChan displayUpdateNotifier
+ b <- atomically $ do
+ !b <- succ <$> readTVar displayChangeBarrier
+ writeTVar displayChangeBarrier b
+ return b
+ atomically $ waitchange c b
+ return r
+ where
+ waitchange c b = do
+ change <- readTChan c
+ case change of
+ DisplayChangeBarrier b' | b' == b -> return ()
+ _ -> waitchange c b
displayThread :: Bool -> TSem -> IO ()
displayThread isterm endsignal = do
origwidth <- atomically consoleWidth
- go ([], [], []) origwidth
+ origbarrier <- atomically (readTVar displayChangeBarrier)
+ go ([], [], []) origwidth origbarrier
where
- go origsnapshot@(orighandles, origregions, origlines) origwidth = do
+ go origsnapshot@(orighandles, origregions, origlines) origwidth origbarrier = do
let waitwidthchange = do
w <- consoleWidth
if w == origwidth then retry else return w
+ let waitbarrierchange = do
+ b <- readTVar displayChangeBarrier
+ if b /= origbarrier
+ then return b
+ else retry
let waitanychange =
(RegionChange <$> regionWaiter origsnapshot origwidth)
`orElse`
- (RegionChange <$> regionListWaiter origsnapshot)
+ (RegionListChange <$> regionListWaiter origsnapshot)
`orElse`
(BufferChange <$> outputBufferWaiterSTM waitCompleteLines)
`orElse`
(TerminalResize <$> waitwidthchange)
`orElse`
- (EndSignal <$> waitTSem endsignal)
+ (waitTSem endsignal >> pure Shutdown)
+ `orElse`
+ -- Must come last, so the changes above are
+ -- processed before barriers.
+ (DisplayChangeBarrier <$> waitbarrierchange)
(change, height) <- atomically $ (,)
<$> waitanychange
<*> consoleHeight
let onscreen = take (height - 1) . concat
- case change of
- RegionChange snapshot@(_, _, newlines) -> do
- when isterm $ do
- changedLines (onscreen origlines) (onscreen newlines)
- go snapshot origwidth
+ let update snapshot@(_, _, newlines) = do
+ when isterm $
+ changedLines (onscreen origlines) (onscreen newlines)
+ return $ go snapshot origwidth origbarrier
+ next <- case change of
+ RegionChange snapshot -> update snapshot
+ RegionListChange snapshot -> update snapshot
BufferChange (h, buf) -> do
-- Note that even when every available line
-- is dedicated to visible regions, the
@@ -481,13 +529,19 @@
let origlines' = onscreen origlines
inAreaAbove isterm (length origlines') origlines' $
emitOutputBuffer h buf
- go origsnapshot origwidth
+ return $ go origsnapshot origwidth origbarrier
TerminalResize newwidth -> do
newlines <- atomically (mapM (resizeRegion newwidth) orighandles)
when isterm $ do
resizeRecovery (onscreen newlines)
- go (orighandles, origregions, newlines) newwidth
- EndSignal () -> return ()
+ return $ go (orighandles, origregions, newlines) newwidth origbarrier
+ Shutdown ->
+ return $ return ()
+ DisplayChangeBarrier b ->
+ return $ go origsnapshot origwidth b
+ hFlush stdout
+ atomically $ writeTChan displayUpdateNotifier change
+ next
readRegions :: [ConsoleRegion] -> STM [R]
readRegions = mapM (\(ConsoleRegion h) -> readTVar h)
@@ -576,7 +630,6 @@
#endif
cursorDown (sum (map (snd . fst) l'))
setCursorColumn 0
- hFlush stdout
where
l' = changeOffsets l 1 []
@@ -608,7 +661,6 @@
when isterm $ do
setCursorColumn 0 -- just in case the output lacked a newline
displayLines (reverse ls)
- hFlush stdout
displayLines :: [Text] -> IO ()
displayLines = mapM_ $ \l -> do
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/concurrent-output-1.7.9/concurrent-output.cabal new/concurrent-output-1.9.2/concurrent-output.cabal
--- old/concurrent-output-1.7.9/concurrent-output.cabal 2017-02-12 23:15:31.000000000 +0100
+++ new/concurrent-output-1.9.2/concurrent-output.cabal 2017-05-19 17:37:54.000000000 +0200
@@ -1,11 +1,11 @@
Name: concurrent-output
-Version: 1.7.9
+Version: 1.9.2
Cabal-Version: >= 1.8
License: BSD2
Maintainer: Joey Hess <id(a)joeyh.name>
Author: Joey Hess, Joachim Breitner
Stability: Stable
-Copyright: 2015 Joey Hess, 2009 Joachim Breitner
+Copyright: 2015-2017 Joey Hess, 2009 Joachim Breitner
License-File: LICENSE
Build-Type: Simple
Category: User Interfaces
@@ -34,7 +34,7 @@
, text (>= 0.11.0 && < 1.3.0)
, async (>= 2.0 && < 2.2)
, stm (>= 2.0 && < 2.5)
- , process (>= 1.1.0 && < 1.5.0)
+ , process (>= 1.1.0 && < 1.7.0)
, directory (>= 1.2.0 && < 1.4.0)
, transformers (>= 0.3.0 && < 0.6.0)
, exceptions (>= 0.6.0 && < 0.9.0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/concurrent-output-1.7.9/stmdemo.hs new/concurrent-output-1.9.2/stmdemo.hs
--- old/concurrent-output-1.7.9/stmdemo.hs 2017-02-12 23:15:31.000000000 +0100
+++ new/concurrent-output-1.9.2/stmdemo.hs 2017-05-19 17:37:54.000000000 +0200
@@ -7,15 +7,25 @@
import Data.Time.Clock
import Control.Monad
import Data.Monoid
+import System.Process
main :: IO ()
main = void $ displayConsoleRegions $ do
+ void titleRegion
ir <- infoRegion
cr <- clockRegion
rr <- rulerRegion
growingDots
+ runBash
+ growingDots
mapM_ closeConsoleRegion [ir, cr]
+titleRegion :: IO ConsoleRegion
+titleRegion = do
+ r <- openConsoleRegion Linear
+ setConsoleRegion r "STM demo!"
+ return r
+
infoRegion :: IO ConsoleRegion
infoRegion = do
r <- openConsoleRegion Linear
@@ -48,24 +58,34 @@
rightAlign r
return r
+rulerRegion :: IO ConsoleRegion
+rulerRegion = do
+ r <- openConsoleRegion Linear
+ setConsoleRegion r $ do
+ width <- consoleWidth
+ return $ T.pack $ take width nums
+ return r
+ where
+ nums = cycle $ concatMap show [0..9]
+
rightAlign :: ConsoleRegion -> STM ()
rightAlign r = tuneDisplay r $ \t -> do
w <- consoleWidth
return (T.replicate (w - T.length t) (T.singleton ' ') <> t)
+growingDots :: IO ()
growingDots = withConsoleRegion Linear $ \r -> do
atomically $ rightAlign r
width <- atomically consoleWidth
- replicateM width $ do
+ void $ replicateM width $ do
appendConsoleRegion r "."
threadDelay (100000)
-rulerRegion :: IO ConsoleRegion
-rulerRegion = do
- r <- openConsoleRegion Linear
- setConsoleRegion r $ do
- width <- consoleWidth
- return $ T.pack $ take width nums
- return r
- where
- nums = cycle $ concatMap show [0..9]
+runBash :: IO ()
+runBash = do
+ -- Temporarily clear whatever console regions are open.
+ rs <- waitDisplayChange $ swapTMVar regionList []
+ putStrLn "We interrupt this demo to run a shell prompt. exit to continue!"
+ callCommand "bash"
+ -- Restore the console regions.
+ void $ atomically $ swapTMVar regionList rs
1
0
Hello community,
here is the log from the commit of package ghc-brick for openSUSE:Factory checked in at 2017-08-31 20:50:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-brick (Old)
and /work/SRC/openSUSE:Factory/.ghc-brick.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-brick"
Thu Aug 31 20:50:19 2017 rev:3 rq:513216 version:0.18
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-brick/ghc-brick.changes 2017-05-03 15:55:56.370819222 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-brick.new/ghc-brick.changes 2017-08-31 20:50:19.987079458 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:08:10 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.18.
+
+-------------------------------------------------------------------
Old:
----
brick-0.17.2.tar.gz
New:
----
brick-0.18.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-brick.spec ++++++
--- /var/tmp/diff_new_pack.4ZV2Cy/_old 2017-08-31 20:50:21.266899809 +0200
+++ /var/tmp/diff_new_pack.4ZV2Cy/_new 2017-08-31 20:50:21.266899809 +0200
@@ -18,7 +18,7 @@
%global pkg_name brick
Name: ghc-%{pkg_name}
-Version: 0.17.2
+Version: 0.18
Release: 0
Summary: A declarative terminal user interface library
License: BSD-3-Clause
@@ -28,6 +28,7 @@
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-containers-devel
BuildRequires: ghc-contravariant-devel
+BuildRequires: ghc-data-clist-devel
BuildRequires: ghc-deepseq-devel
BuildRequires: ghc-dlist-devel
BuildRequires: ghc-microlens-devel
++++++ brick-0.17.2.tar.gz -> brick-0.18.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/brick-0.17.2/CHANGELOG.md new/brick-0.18/CHANGELOG.md
--- old/brick-0.17.2/CHANGELOG.md 2017-03-12 05:34:36.000000000 +0100
+++ new/brick-0.18/CHANGELOG.md 2017-06-11 21:27:52.000000000 +0200
@@ -2,6 +2,20 @@
Brick changelog
---------------
+0.18
+----
+
+Package changes:
+ * Added a dependency on data-clist.
+
+API changes:
+ * Brick.Focus: removed the Functor instance for FocusRing.
+ * Brick.Focus: re-implemented FocusRing in terms of the circular list
+ data structure from data-clist. In addition, this change introduced
+ "focusRingModify", which permits the user to use the data-clist API
+ to directly manipulate the FocusRing's internals. This way brick
+ doesn't have to re-invent the wheel on the focus ring behavior.
+
0.17.2
------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/brick-0.17.2/README.md new/brick-0.18/README.md
--- old/brick-0.17.2/README.md 2017-03-12 05:34:36.000000000 +0100
+++ new/brick-0.18/README.md 2017-06-11 21:27:52.000000000 +0200
@@ -25,8 +25,7 @@
Example
-------
-Here's an example interface that resizes automatically when the terminal
-size changes (see `programs/ReadmeDemo.hs`):
+Here's an example interface (see `programs/ReadmeDemo.hs`):
```
withBorderStyle unicode $
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/brick-0.17.2/brick.cabal new/brick-0.18/brick.cabal
--- old/brick-0.17.2/brick.cabal 2017-03-12 05:34:36.000000000 +0100
+++ new/brick-0.18/brick.cabal 2017-06-11 21:27:52.000000000 +0200
@@ -1,5 +1,5 @@
name: brick
-version: 0.17.2
+version: 0.18
synopsis: A declarative terminal user interface library
description:
Write terminal applications painlessly with 'brick'! You write an
@@ -81,6 +81,7 @@
build-depends: base <= 5,
vty >= 5.15,
transformers,
+ data-clist >= 0.1,
dlist,
containers,
microlens >= 0.3.0.0,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/brick-0.17.2/src/Brick/Focus.hs new/brick-0.18/src/Brick/Focus.hs
--- old/brick-0.17.2/src/Brick/Focus.hs 2017-03-12 05:34:36.000000000 +0100
+++ new/brick-0.18/src/Brick/Focus.hs 2017-06-11 21:27:52.000000000 +0200
@@ -1,5 +1,3 @@
-{-# LANGUAGE DeriveFunctor #-}
-
-- | This module provides a type and functions for handling focus rings
-- of widgets. Note that this interface is merely provided for managing
-- the focus state for a sequence of resource names; it does not do
@@ -14,41 +12,36 @@
, focusGetCurrent
, focusRingCursor
, withFocusRing
+ , focusRingModify
)
where
import Lens.Micro ((^.))
import Data.Maybe (listToMaybe)
+import qualified Data.CircularList as C
import Brick.Types
import Brick.Widgets.Core (Named(..))
-- | A focus ring containing a sequence of resource names to focus and a
-- currently-focused name.
-data FocusRing n = FocusRingEmpty
- | FocusRingNonempty ![n] !Int
- deriving Functor
+newtype FocusRing n = FocusRing (C.CList n)
-- | Construct a focus ring from the list of resource names.
focusRing :: [n] -> FocusRing n
-focusRing [] = FocusRingEmpty
-focusRing names = FocusRingNonempty names 0
+focusRing = FocusRing . C.fromList
-- | Advance focus to the next widget in the ring.
focusNext :: FocusRing n -> FocusRing n
-focusNext FocusRingEmpty = FocusRingEmpty
-focusNext fr@(FocusRingNonempty [_] _) = fr
-focusNext (FocusRingNonempty ns i) = FocusRingNonempty ns i'
- where
- i' = (i + 1) `mod` (length ns)
+focusNext r@(FocusRing l)
+ | C.isEmpty l = r
+ | otherwise = FocusRing $ C.rotR l
-- | Advance focus to the previous widget in the ring.
focusPrev :: FocusRing n -> FocusRing n
-focusPrev FocusRingEmpty = FocusRingEmpty
-focusPrev fr@(FocusRingNonempty [_] _) = fr
-focusPrev (FocusRingNonempty ns i) = FocusRingNonempty ns i'
- where
- i' = (i + (length ns) - 1) `mod` (length ns)
+focusPrev r@(FocusRing l)
+ | C.isEmpty l = r
+ | otherwise = FocusRing $ C.rotL l
-- | This function is a convenience function to look up a widget state
-- value's resource name in a focus ring and set its focus setting
@@ -74,8 +67,13 @@
-- | Get the currently-focused resource name from the ring. If the ring
-- is emtpy, return 'Nothing'.
focusGetCurrent :: FocusRing n -> Maybe n
-focusGetCurrent FocusRingEmpty = Nothing
-focusGetCurrent (FocusRingNonempty ns i) = Just $ ns !! i
+focusGetCurrent (FocusRing l) = C.focus l
+
+-- | Modify the internal circular list structure of a focus ring
+-- directly. This function permits modification of the circular list
+-- using the rich Data.CircularList API.
+focusRingModify :: (C.CList n -> C.CList n) -> FocusRing n -> FocusRing n
+focusRingModify f (FocusRing l) = FocusRing $ f l
-- | Cursor selection convenience function for use as an
-- 'Brick.Main.appChooseCursor' value.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/brick-0.17.2/src/Brick/Types/Internal.hs new/brick-0.18/src/Brick/Types/Internal.hs
--- old/brick-0.17.2/src/Brick/Types/Internal.hs 2017-03-12 05:34:36.000000000 +0100
+++ new/brick-0.18/src/Brick/Types/Internal.hs 2017-06-11 21:27:52.000000000 +0200
@@ -206,7 +206,7 @@
-- ^ A mouse-down event on the specified region was
-- received.
| MouseUp n (Maybe Button) Location
- -- ^ A mouse-down event on the specified region was
+ -- ^ A mouse-up event on the specified region was
-- received.
deriving (Show, Eq)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/brick-0.17.2/src/Brick/Widgets/Dialog.hs new/brick-0.18/src/Brick/Widgets/Dialog.hs
--- old/brick-0.17.2/src/Brick/Widgets/Dialog.hs 2017-03-12 05:34:36.000000000 +0100
+++ new/brick-0.18/src/Brick/Widgets/Dialog.hs 2017-06-11 21:27:52.000000000 +0200
@@ -44,16 +44,14 @@
import Brick.AttrMap
-- | Dialogs present a window with a title (optional), a body, and
--- buttons (optional). They provide a 'HandleEvent' instance that knows
--- about Tab and Shift-Tab as well as ArrowLeft and ArrowRight
--- for changing which button is active. Dialog
--- buttons are labeled with strings and map to values of type 'a', which
--- you choose.
+-- buttons (optional). Dialog buttons are labeled with strings and map
+-- to values of type 'a', which you choose.
--
--- Dialogs handle the following events by default:
+-- Dialogs handle the following events by default with
+-- handleDialogEvent:
--
--- * Tab: selecte the next button
--- * Shift-tab: select the previous button
+-- * Tab or Right Arrow: select the next button
+-- * Shift-tab or Left Arrow: select the previous button
data Dialog a =
Dialog { dialogTitle :: Maybe String
-- ^ The dialog title
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/brick-0.17.2/src/Brick/Widgets/Edit.hs new/brick-0.18/src/Brick/Widgets/Edit.hs
--- old/brick-0.17.2/src/Brick/Widgets/Edit.hs 2017-03-12 05:34:36.000000000 +0100
+++ new/brick-0.18/src/Brick/Widgets/Edit.hs 2017-06-11 21:27:52.000000000 +0200
@@ -8,9 +8,9 @@
-- of the editor, just use 'getEditContents'. To modify it, use the
-- 'Z.TextZipper' interface with 'applyEdit'.
--
--- The editor's 'HandleEvent' instance handles a set of basic input
--- events that should suffice for most purposes; see the source for a
--- complete list.
+-- The editor's 'handleEditorEvent' function handles a set of basic
+-- input events that should suffice for most purposes; see the source
+-- for a complete list.
--
-- Bear in mind that the editor provided by this module is intended to
-- provide basic input support for brick applications but it is not
1
0
Hello community,
here is the log from the commit of package ghc-bloodhound for openSUSE:Factory checked in at 2017-08-31 20:50:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-bloodhound (Old)
and /work/SRC/openSUSE:Factory/.ghc-bloodhound.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-bloodhound"
Thu Aug 31 20:50:17 2017 rev:3 rq:513215 version:0.14.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-bloodhound/ghc-bloodhound.changes 2017-03-03 17:48:10.710240728 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-bloodhound.new/ghc-bloodhound.changes 2017-08-31 20:50:18.707259106 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:06:06 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.14.0.0.
+
+-------------------------------------------------------------------
Old:
----
bloodhound-0.12.1.0.tar.gz
New:
----
bloodhound-0.14.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-bloodhound.spec ++++++
--- /var/tmp/diff_new_pack.BSKqgG/_old 2017-08-31 20:50:19.623130546 +0200
+++ /var/tmp/diff_new_pack.BSKqgG/_new 2017-08-31 20:50:19.627129984 +0200
@@ -19,7 +19,7 @@
%global pkg_name bloodhound
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.12.1.0
+Version: 0.14.0.0
Release: 0
Summary: ElasticSearch client library for Haskell
License: BSD-3-Clause
@@ -50,15 +50,12 @@
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if %{with tests}
BuildRequires: ghc-QuickCheck-devel
-BuildRequires: ghc-directory-devel
-BuildRequires: ghc-doctest-devel
BuildRequires: ghc-errors-devel
-BuildRequires: ghc-filepath-devel
BuildRequires: ghc-generics-sop-devel
BuildRequires: ghc-hspec-devel
BuildRequires: ghc-quickcheck-properties-devel
BuildRequires: ghc-temporary-devel
-BuildRequires: ghc-unix-devel
+BuildRequires: ghc-unix-compat-devel
%endif
%description
++++++ bloodhound-0.12.1.0.tar.gz -> bloodhound-0.14.0.0.tar.gz ++++++
++++ 23567 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package ghc-blaze-markup for openSUSE:Factory checked in at 2017-08-31 20:50:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-blaze-markup (Old)
and /work/SRC/openSUSE:Factory/.ghc-blaze-markup.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-blaze-markup"
Thu Aug 31 20:50:14 2017 rev:9 rq:513214 version:0.8.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-blaze-markup/ghc-blaze-markup.changes 2017-01-12 15:47:19.379650698 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-blaze-markup.new/ghc-blaze-markup.changes 2017-08-31 20:50:16.391584157 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:04:08 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.8.0.0.
+
+-------------------------------------------------------------------
Old:
----
blaze-markup-0.7.1.1.tar.gz
New:
----
blaze-markup-0.8.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-blaze-markup.spec ++++++
--- /var/tmp/diff_new_pack.pOJtrO/_old 2017-08-31 20:50:17.375446053 +0200
+++ /var/tmp/diff_new_pack.pOJtrO/_new 2017-08-31 20:50:17.379445491 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ghc-blaze-markup
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# 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
@@ -19,7 +19,7 @@
%global pkg_name blaze-markup
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.7.1.1
+Version: 0.8.0.0
Release: 0
Summary: A blazingly fast markup combinator library for Haskell
License: BSD-3-Clause
++++++ blaze-markup-0.7.1.1.tar.gz -> blaze-markup-0.8.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blaze-markup-0.7.1.1/CHANGELOG new/blaze-markup-0.8.0.0/CHANGELOG
--- old/blaze-markup-0.7.1.1/CHANGELOG 2016-11-28 11:29:21.000000000 +0100
+++ new/blaze-markup-0.8.0.0/CHANGELOG 2017-01-30 17:48:00.000000000 +0100
@@ -1,3 +1,12 @@
+# Changelog
+
+- 0.8.0.0 (2017-01-30)
+ * Make `MarkupM` finally adhere to the Monad laws
+ * Stricten the `IsString` instance to only work with `MarkupM ()` and not
+ `MarkupM a`
+ * Change the type of `contents` to `MarkupM a -> MarkupM a`
+ * Add a `Semigroup` instance for `MarkupM`
+
- 0.7.1.1
* Bump `HUnit` dependency to allow 1.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blaze-markup-0.7.1.1/blaze-markup.cabal new/blaze-markup-0.8.0.0/blaze-markup.cabal
--- old/blaze-markup-0.7.1.1/blaze-markup.cabal 2016-11-28 11:29:21.000000000 +0100
+++ new/blaze-markup-0.8.0.0/blaze-markup.cabal 2017-01-30 17:48:00.000000000 +0100
@@ -1,5 +1,5 @@
Name: blaze-markup
-Version: 0.7.1.1
+Version: 0.8.0.0
Homepage: http://jaspervdj.be/blaze
Bug-Reports: http://github.com/jaspervdj/blaze-markup/issues
License: BSD3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blaze-markup-0.7.1.1/src/Text/Blaze/Internal.hs new/blaze-markup-0.8.0.0/src/Text/Blaze/Internal.hs
--- old/blaze-markup-0.7.1.1/src/Text/Blaze/Internal.hs 2016-11-28 11:29:21.000000000 +0100
+++ new/blaze-markup-0.8.0.0/src/Text/Blaze/Internal.hs 2017-01-30 17:48:00.000000000 +0100
@@ -1,6 +1,11 @@
-{-# LANGUAGE OverloadedStrings, GeneralizedNewtypeDeriving, Rank2Types,
- FlexibleInstances, ExistentialQuantification,
- DeriveDataTypeable #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE ExistentialQuantification #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE Rank2Types #-}
-- | The BlazeMarkup core, consisting of functions that offer the power to
-- generate custom markup elements. It also offers user-centric functions,
-- which are exposed through 'Text.Blaze'.
@@ -74,22 +79,25 @@
, null
) where
-import Prelude hiding (null)
-import Control.Applicative (Applicative (..))
-import Data.Monoid (Monoid, mappend, mempty, mconcat)
-import Unsafe.Coerce (unsafeCoerce)
-import qualified Data.List as List
-
-import Data.ByteString.Char8 (ByteString)
-import Data.Text (Text)
-import Data.Typeable (Typeable)
-import GHC.Exts (IsString (..))
-import qualified Data.ByteString as B
-import qualified Data.ByteString.Lazy as BL
-import qualified Data.Text as T
-import qualified Data.Text.Encoding as T
-import qualified Data.Text.Lazy as LT
+import Control.Applicative (Applicative (..))
+import qualified Data.List as List
+import Data.Monoid (Monoid, mappend, mconcat, mempty)
+import Prelude hiding (null)
+
+import qualified Data.ByteString as B
+import Data.ByteString.Char8 (ByteString)
+import qualified Data.ByteString.Lazy as BL
+import Data.Text (Text)
+import qualified Data.Text as T
+import qualified Data.Text.Encoding as T
+import qualified Data.Text.Lazy as LT
import qualified Data.Text.Lazy.Builder as LTB
+import Data.Typeable (Typeable)
+import GHC.Exts (IsString (..))
+
+#if MIN_VERSION_base(4,9,0)
+import Data.Semigroup (Semigroup)
+#endif
-- | A static string that supports efficient output to all possible backends.
--
@@ -140,27 +148,27 @@
--
data MarkupM a
-- | Tag, open tag, end tag, content
- = forall b. Parent StaticString StaticString StaticString (MarkupM b)
+ = Parent StaticString StaticString StaticString (MarkupM a)
-- | Custom parent
- | forall b. CustomParent ChoiceString (MarkupM b)
+ | CustomParent ChoiceString (MarkupM a)
-- | Tag, open tag, end tag
- | Leaf StaticString StaticString StaticString
+ | Leaf StaticString StaticString StaticString a
-- | Custom leaf
- | CustomLeaf ChoiceString Bool
+ | CustomLeaf ChoiceString Bool a
-- | HTML content
- | Content ChoiceString
+ | Content ChoiceString a
-- | HTML comment. Note: you should wrap the 'ChoiceString' in a
-- 'PreEscaped'.
- | Comment ChoiceString
+ | Comment ChoiceString a
-- | Concatenation of two HTML pieces
- | forall b c. Append (MarkupM b) (MarkupM c)
+ | forall b. Append (MarkupM b) (MarkupM a)
-- | Add an attribute to the inner HTML. Raw key, key, value, HTML to
-- receive the attribute.
| AddAttribute StaticString StaticString ChoiceString (MarkupM a)
-- | Add a custom attribute to the inner HTML.
| AddCustomAttribute ChoiceString ChoiceString (MarkupM a)
-- | Empty HTML.
- | Empty
+ | Empty a
deriving (Typeable)
-- | Simplification of the 'MarkupM' datatype.
@@ -168,40 +176,62 @@
type Markup = MarkupM ()
instance Monoid a => Monoid (MarkupM a) where
- mempty = Empty
+ mempty = Empty mempty
{-# INLINE mempty #-}
mappend x y = Append x y
{-# INLINE mappend #-}
- mconcat = foldr Append Empty
+ mconcat = foldr Append (Empty mempty)
{-# INLINE mconcat #-}
+#if MIN_VERSION_base(4,9,0)
+instance Monoid a => Semigroup (MarkupM a) where
+#endif
+
instance Functor MarkupM where
- -- Safe because it does not contain a value anyway
- fmap _ = unsafeCoerce
+ fmap f x =
+ -- Instead of traversing through all the nodes, we just store an extra
+ -- 'Empty' node with the new result.
+ Append x (Empty (f (markupValue x)))
instance Applicative MarkupM where
- pure _ = Empty
+ pure x = Empty x
{-# INLINE pure #-}
- (<*>) = Append
+ (<*>) x y =
+ -- We need to add an extra 'Empty' node to store the result.
+ Append (Append x y) (Empty (markupValue x (markupValue y)))
{-# INLINE (<*>) #-}
(*>) = Append
{-# INLINE (*>) #-}
- (<*) = Append
- {-# INLINE (<*) #-}
+ -- (<*) = Append
+ -- {-# INLINE (<*) #-}
instance Monad MarkupM where
- return _ = Empty
+ return x = Empty x
{-# INLINE return #-}
(>>) = Append
{-# INLINE (>>) #-}
- h1 >>= f = h1 >> f
- (error "Text.Blaze.Internal.MarkupM: invalid use of monadic bind")
+ h1 >>= f = Append h1 (f (markupValue h1))
{-# INLINE (>>=) #-}
-instance IsString (MarkupM a) where
- fromString = Content . fromString
+instance (a ~ ()) => IsString (MarkupM a) where
+ fromString x = Content (fromString x) mempty
{-# INLINE fromString #-}
+-- | Get the value from a 'MarkupM'.
+--
+markupValue :: MarkupM a -> a
+markupValue m0 = case m0 of
+ Parent _ _ _ m1 -> markupValue m1
+ CustomParent _ m1 -> markupValue m1
+ Leaf _ _ _ x -> x
+ CustomLeaf _ _ x -> x
+ Content _ x -> x
+ Comment _ x -> x
+ Append _ m1 -> markupValue m1
+ AddAttribute _ _ _ m1 -> markupValue m1
+ AddCustomAttribute _ _ m1 -> markupValue m1
+ Empty x -> x
+
-- | Type for an HTML tag. This can be seen as an internal string type used by
-- BlazeMarkup.
--
@@ -225,13 +255,13 @@
customParent :: Tag -- ^ Element tag
-> Markup -- ^ Content
-> Markup -- ^ Resulting markup
-customParent tag = CustomParent (Static $ unTag tag)
+customParent tag cont = CustomParent (Static $ unTag tag) cont
-- | Create a custom leaf element
customLeaf :: Tag -- ^ Element tag
-> Bool -- ^ Close the leaf?
-> Markup -- ^ Resulting markup
-customLeaf tag = CustomLeaf (Static $ unTag tag)
+customLeaf tag close = CustomLeaf (Static $ unTag tag) close ()
-- | Create an HTML attribute that can be applied to an HTML element later using
-- the '!' operator.
@@ -286,14 +316,14 @@
--
text :: Text -- ^ Text to render.
-> Markup -- ^ Resulting HTML fragment.
-text = Content . Text
+text = content . Text
{-# INLINE text #-}
-- | Render text without escaping.
--
preEscapedText :: Text -- ^ Text to insert
-> Markup -- ^ Resulting HTML fragment
-preEscapedText = Content . PreEscaped . Text
+preEscapedText = content . PreEscaped . Text
{-# INLINE preEscapedText #-}
-- | A variant of 'text' for lazy 'LT.Text'.
@@ -324,18 +354,22 @@
preEscapedTextBuilder = preEscapedLazyText . LTB.toLazyText
{-# INLINE preEscapedTextBuilder #-}
+content :: ChoiceString -> Markup
+content cs = Content cs ()
+{-# INLINE content #-}
+
-- | Create an HTML snippet from a 'String'.
--
string :: String -- ^ String to insert.
-> Markup -- ^ Resulting HTML fragment.
-string = Content . String
+string = content . String
{-# INLINE string #-}
-- | Create an HTML snippet from a 'String' without escaping
--
preEscapedString :: String -- ^ String to insert.
-> Markup -- ^ Resulting HTML fragment.
-preEscapedString = Content . PreEscaped . String
+preEscapedString = content . PreEscaped . String
{-# INLINE preEscapedString #-}
-- | Insert a 'ByteString'. This is an unsafe operation:
@@ -347,7 +381,7 @@
--
unsafeByteString :: ByteString -- ^ Value to insert.
-> Markup -- ^ Resulting HTML fragment.
-unsafeByteString = Content . ByteString
+unsafeByteString = content . ByteString
{-# INLINE unsafeByteString #-}
-- | Insert a lazy 'BL.ByteString'. See 'unsafeByteString' for reasons why this
@@ -358,36 +392,40 @@
unsafeLazyByteString = mconcat . map unsafeByteString . BL.toChunks
{-# INLINE unsafeLazyByteString #-}
+comment :: ChoiceString -> Markup
+comment cs = Comment cs ()
+{-# INLINE comment #-}
+
-- | Create a comment from a 'Text' value.
-- The text should not contain @"--"@.
-- This is not checked by the library.
textComment :: Text -> Markup
-textComment = Comment . PreEscaped . Text
+textComment = comment . PreEscaped . Text
-- | Create a comment from a 'LT.Text' value.
-- The text should not contain @"--"@.
-- This is not checked by the library.
lazyTextComment :: LT.Text -> Markup
-lazyTextComment = Comment . mconcat . map (PreEscaped . Text) . LT.toChunks
+lazyTextComment = comment . mconcat . map (PreEscaped . Text) . LT.toChunks
-- | Create a comment from a 'String' value.
-- The text should not contain @"--"@.
-- This is not checked by the library.
stringComment :: String -> Markup
-stringComment = Comment . PreEscaped . String
+stringComment = comment . PreEscaped . String
-- | Create a comment from a 'ByteString' value.
-- The text should not contain @"--"@.
-- This is not checked by the library.
unsafeByteStringComment :: ByteString -> Markup
-unsafeByteStringComment = Comment . PreEscaped . ByteString
+unsafeByteStringComment = comment . PreEscaped . ByteString
-- | Create a comment from a 'BL.ByteString' value.
-- The text should not contain @"--"@.
-- This is not checked by the library.
unsafeLazyByteStringComment :: BL.ByteString -> Markup
unsafeLazyByteStringComment =
- Comment . mconcat . map (PreEscaped . ByteString) . BL.toChunks
+ comment . mconcat . map (PreEscaped . ByteString) . BL.toChunks
-- | Create a 'Tag' from some 'Text'.
--
@@ -527,13 +565,13 @@
-- combinators.
--
external :: MarkupM a -> MarkupM a
-external (Content x) = Content $ External x
-external (Append x y) = Append (external x) (external y)
-external (Parent x y z i) = Parent x y z $ external i
-external (CustomParent x i) = CustomParent x $ external i
-external (AddAttribute x y z i) = AddAttribute x y z $ external i
+external (Content x a) = Content (External x) a
+external (Append x y) = Append (external x) (external y)
+external (Parent x y z i) = Parent x y z $ external i
+external (CustomParent x i) = CustomParent x $ external i
+external (AddAttribute x y z i) = AddAttribute x y z $ external i
external (AddCustomAttribute x y i) = AddCustomAttribute x y $ external i
-external x = x
+external x = x
{-# INLINE external #-}
-- | Take only the text content of an HTML tree.
@@ -546,14 +584,14 @@
--
-- > Hello World!
--
-contents :: MarkupM a -> MarkupM b
+contents :: MarkupM a -> MarkupM a
contents (Parent _ _ _ c) = contents c
contents (CustomParent _ c) = contents c
-contents (Content c) = Content c
+contents (Content c x) = Content c x
contents (Append c1 c2) = Append (contents c1) (contents c2)
contents (AddAttribute _ _ _ c) = contents c
contents (AddCustomAttribute _ _ c) = contents c
-contents _ = Empty
+contents m = Empty (markupValue m)
-- | Check if a 'Markup' value is completely empty (renders to the empty
-- string).
@@ -561,14 +599,14 @@
null markup = case markup of
Parent _ _ _ _ -> False
CustomParent _ _ -> False
- Leaf _ _ _ -> False
- CustomLeaf _ _ -> False
- Content c -> emptyChoiceString c
- Comment c -> emptyChoiceString c
+ Leaf _ _ _ _ -> False
+ CustomLeaf _ _ _ -> False
+ Content c _ -> emptyChoiceString c
+ Comment c _ -> emptyChoiceString c
Append c1 c2 -> null c1 && null c2
AddAttribute _ _ _ c -> null c
AddCustomAttribute _ _ c -> null c
- Empty -> True
+ Empty _ -> True
where
emptyChoiceString cs = case cs of
Static ss -> emptyStaticString ss
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blaze-markup-0.7.1.1/src/Text/Blaze/Renderer/Pretty.hs new/blaze-markup-0.8.0.0/src/Text/Blaze/Renderer/Pretty.hs
--- old/blaze-markup-0.7.1.1/src/Text/Blaze/Renderer/Pretty.hs 2016-11-28 11:29:21.000000000 +0100
+++ new/blaze-markup-0.8.0.0/src/Text/Blaze/Renderer/Pretty.hs 2017-01-30 17:48:00.000000000 +0100
@@ -23,9 +23,9 @@
ind i . ('<' :) . fromChoiceString tag . attrs . (">\n" ++) .
go (inc i) id content . ind i . ("</" ++) . fromChoiceString tag .
(">\n" ++)
- go i attrs (Leaf _ begin end) =
+ go i attrs (Leaf _ begin end _) =
ind i . getString begin . attrs . getString end . ('\n' :)
- go i attrs (CustomLeaf tag close) =
+ go i attrs (CustomLeaf tag close _) =
ind i . ('<' :) . fromChoiceString tag . attrs .
((if close then " />\n" else ">\n") ++)
go i attrs (AddAttribute _ key value h) = flip (go i) h $
@@ -33,11 +33,11 @@
go i attrs (AddCustomAttribute key value h) = flip (go i) h $
(' ' : ) . fromChoiceString key . ("=\"" ++) . fromChoiceString value .
('"' :) . attrs
- go i _ (Content content) = ind i . fromChoiceString content . ('\n' :)
- go i _ (Comment comment) = ind i .
+ go i _ (Content content _) = ind i . fromChoiceString content . ('\n' :)
+ go i _ (Comment comment _) = ind i .
("<!-- " ++) . fromChoiceString comment . (" -->\n" ++)
go i attrs (Append h1 h2) = go i attrs h1 . go i attrs h2
- go _ _ Empty = id
+ go _ _ (Empty _) = id
{-# NOINLINE go #-}
-- Increase the indentation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blaze-markup-0.7.1.1/src/Text/Blaze/Renderer/String.hs new/blaze-markup-0.8.0.0/src/Text/Blaze/Renderer/String.hs
--- old/blaze-markup-0.7.1.1/src/Text/Blaze/Renderer/String.hs 2016-11-28 11:29:21.000000000 +0100
+++ new/blaze-markup-0.8.0.0/src/Text/Blaze/Renderer/String.hs 2017-01-30 17:48:00.000000000 +0100
@@ -67,8 +67,8 @@
go attrs (CustomParent tag content) =
('<' :) . fromChoiceString tag . attrs . ('>' :) . go id content .
("</" ++) . fromChoiceString tag . ('>' :)
- go attrs (Leaf _ begin end) = getString begin . attrs . getString end
- go attrs (CustomLeaf tag close) =
+ go attrs (Leaf _ begin end _) = getString begin . attrs . getString end
+ go attrs (CustomLeaf tag close _) =
('<' :) . fromChoiceString tag . attrs .
(if close then (" />" ++) else ('>' :))
go attrs (AddAttribute _ key value h) = flip go h $
@@ -76,11 +76,11 @@
go attrs (AddCustomAttribute key value h) = flip go h $
(' ' :) . fromChoiceString key . ("=\"" ++) . fromChoiceString value .
('"' :) . attrs
- go _ (Content content) = fromChoiceString content
- go _ (Comment comment) =
+ go _ (Content content _) = fromChoiceString content
+ go _ (Comment comment _) =
("<!-- " ++) . fromChoiceString comment . (" -->" ++)
go attrs (Append h1 h2) = go attrs h1 . go attrs h2
- go _ Empty = id
+ go _ (Empty _) = id
{-# NOINLINE go #-}
{-# INLINE renderString #-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blaze-markup-0.7.1.1/src/Text/Blaze/Renderer/Text.hs new/blaze-markup-0.8.0.0/src/Text/Blaze/Renderer/Text.hs
--- old/blaze-markup-0.7.1.1/src/Text/Blaze/Renderer/Text.hs 2016-11-28 11:29:21.000000000 +0100
+++ new/blaze-markup-0.8.0.0/src/Text/Blaze/Renderer/Text.hs 2017-01-30 17:48:00.000000000 +0100
@@ -99,11 +99,11 @@
`mappend` B.fromText "</"
`mappend` fromChoiceString d tag
`mappend` B.singleton '>'
- go attrs (Leaf _ begin end) =
+ go attrs (Leaf _ begin end _) =
B.fromText (getText begin)
`mappend` attrs
`mappend` B.fromText (getText end)
- go attrs (CustomLeaf tag close) =
+ go attrs (CustomLeaf tag close _) =
B.singleton '<'
`mappend` fromChoiceString d tag
`mappend` attrs
@@ -120,13 +120,13 @@
`mappend` fromChoiceString d value
`mappend` B.singleton '"'
`mappend` attrs) h
- go _ (Content content) = fromChoiceString d content
- go _ (Comment comment) =
+ go _ (Content content _) = fromChoiceString d content
+ go _ (Comment comment _) =
B.fromText "<!-- "
`mappend` fromChoiceString d comment
`mappend` " -->"
go attrs (Append h1 h2) = go attrs h1 `mappend` go attrs h2
- go _ Empty = mempty
+ go _ (Empty _) = mempty
{-# NOINLINE go #-}
{-# INLINE renderMarkupBuilderWith #-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blaze-markup-0.7.1.1/src/Text/Blaze/Renderer/Utf8.hs new/blaze-markup-0.8.0.0/src/Text/Blaze/Renderer/Utf8.hs
--- old/blaze-markup-0.7.1.1/src/Text/Blaze/Renderer/Utf8.hs 2016-11-28 11:29:21.000000000 +0100
+++ new/blaze-markup-0.8.0.0/src/Text/Blaze/Renderer/Utf8.hs 2017-01-30 17:48:00.000000000 +0100
@@ -65,11 +65,11 @@
`mappend` B.fromByteString "</"
`mappend` fromChoiceString tag
`mappend` B.fromChar '>'
- go attrs (Leaf _ begin end) =
+ go attrs (Leaf _ begin end _) =
B.copyByteString (getUtf8ByteString begin)
`mappend` attrs
`mappend` B.copyByteString (getUtf8ByteString end)
- go attrs (CustomLeaf tag close) =
+ go attrs (CustomLeaf tag close _) =
B.fromChar '<'
`mappend` fromChoiceString tag
`mappend` attrs
@@ -86,13 +86,13 @@
`mappend` fromChoiceString value
`mappend` B.fromChar '"'
`mappend` attrs) h
- go _ (Content content) = fromChoiceString content
- go _ (Comment comment) =
+ go _ (Content content _) = fromChoiceString content
+ go _ (Comment comment _) =
B.fromByteString "<!-- "
`mappend` fromChoiceString comment
`mappend` B.fromByteString " -->"
go attrs (Append h1 h2) = go attrs h1 `mappend` go attrs h2
- go _ Empty = mempty
+ go _ (Empty _) = mempty
{-# NOINLINE go #-}
{-# INLINE renderMarkupBuilder #-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blaze-markup-0.7.1.1/tests/Text/Blaze/Tests/Util.hs new/blaze-markup-0.8.0.0/tests/Text/Blaze/Tests/Util.hs
--- old/blaze-markup-0.7.1.1/tests/Text/Blaze/Tests/Util.hs 2016-11-28 11:29:21.000000000 +0100
+++ new/blaze-markup-0.8.0.0/tests/Text/Blaze/Tests/Util.hs 2017-01-30 17:48:00.000000000 +0100
@@ -50,13 +50,13 @@
table = Parent "table" "<table" "</table>"
img :: Markup -- ^ Resulting HTML.
-img = Leaf "img" "<img" ">"
+img = Leaf "img" "<img" ">" ()
br :: Markup -- ^ Resulting HTML.
-br = Leaf "br" "<br" ">"
+br = Leaf "br" "<br" ">" ()
area :: Markup -- ^ Resulting HTML.
-area = Leaf "area" "<area" ">"
+area = Leaf "area" "<area" ">" ()
class_ :: AttributeValue -- ^ Attribute value.
-> Attribute -- ^ Resulting attribute.
1
0
Hello community,
here is the log from the commit of package ghc-blaze-html for openSUSE:Factory checked in at 2017-08-31 20:50:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-blaze-html (Old)
and /work/SRC/openSUSE:Factory/.ghc-blaze-html.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-blaze-html"
Thu Aug 31 20:50:13 2017 rev:10 rq:513213 version:0.9.0.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-blaze-html/ghc-blaze-html.changes 2017-01-12 15:47:13.696453499 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-blaze-html.new/ghc-blaze-html.changes 2017-08-31 20:50:14.871797490 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:04:15 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.9.0.1.
+
+-------------------------------------------------------------------
Old:
----
blaze-html-0.8.1.3.tar.gz
New:
----
blaze-html-0.9.0.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-blaze-html.spec ++++++
--- /var/tmp/diff_new_pack.0IqAHp/_old 2017-08-31 20:50:15.923649842 +0200
+++ /var/tmp/diff_new_pack.0IqAHp/_new 2017-08-31 20:50:15.927649280 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ghc-blaze-html
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# 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
@@ -19,7 +19,7 @@
%global pkg_name blaze-html
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.8.1.3
+Version: 0.9.0.1
Release: 0
Summary: A blazingly fast HTML combinator library for Haskell
License: BSD-3-Clause
++++++ blaze-html-0.8.1.3.tar.gz -> blaze-html-0.9.0.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blaze-html-0.8.1.3/CHANGELOG new/blaze-html-0.9.0.1/CHANGELOG
--- old/blaze-html-0.8.1.3/CHANGELOG 2016-11-28 11:32:14.000000000 +0100
+++ new/blaze-html-0.9.0.1/CHANGELOG 2017-01-30 17:56:16.000000000 +0100
@@ -1,3 +1,18 @@
+# Changelog
+
+- 0.9.0.1
+ * Fix CHANGELOG
+
+- 0.9.0.0
+ * Bump blaze-html dependency to 0.8. This has a few consequences:
+ - Make `MarkupM` finally adhere to the Monad laws
+ - Stricten the `IsString` instance to only work with `MarkupM ()` and
+ not `MarkupM a`
+ - Change the type of `contents` to `MarkupM a -> MarkupM a`
+ - Add a `Semigroup` instance for `MarkupM`
+
+- 0.7.1.1
+
- 0.8.1.3
* Bump HUnit dependency to 1.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blaze-html-0.8.1.3/blaze-html.cabal new/blaze-html-0.9.0.1/blaze-html.cabal
--- old/blaze-html-0.8.1.3/blaze-html.cabal 2016-11-28 11:32:14.000000000 +0100
+++ new/blaze-html-0.9.0.1/blaze-html.cabal 2017-01-30 17:56:16.000000000 +0100
@@ -1,5 +1,5 @@
Name: blaze-html
-Version: 0.8.1.3
+Version: 0.9.0.1
Homepage: http://jaspervdj.be/blaze
Bug-Reports: http://github.com/jaspervdj/blaze-html/issues
License: BSD3
@@ -53,7 +53,7 @@
Build-depends:
base >= 4 && < 5,
blaze-builder >= 0.3 && < 0.5,
- blaze-markup >= 0.7 && < 0.8,
+ blaze-markup >= 0.8 && < 0.9,
bytestring >= 0.9 && < 0.11,
text >= 0.10 && < 1.3
@@ -78,7 +78,7 @@
-- Copied from regular dependencies...
base >= 4 && < 5,
blaze-builder >= 0.3 && < 0.5,
- blaze-markup >= 0.7 && < 0.8,
+ blaze-markup >= 0.8 && < 0.9,
bytestring >= 0.9 && < 0.11,
text >= 0.10 && < 1.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blaze-html-0.8.1.3/src/Text/Blaze/Html4/FrameSet.hs new/blaze-html-0.9.0.1/src/Text/Blaze/Html4/FrameSet.hs
--- old/blaze-html-0.8.1.3/src/Text/Blaze/Html4/FrameSet.hs 2016-11-28 11:32:14.000000000 +0100
+++ new/blaze-html-0.9.0.1/src/Text/Blaze/Html4/FrameSet.hs 2017-01-30 17:56:16.000000000 +0100
@@ -252,7 +252,7 @@
-- > <area />
--
area :: Html -- ^ Resulting HTML.
-area = Leaf "area" "<area" ">"
+area = Leaf "area" "<area" ">" ()
{-# INLINE area #-}
-- WARNING: The next block of code was automatically generated by
@@ -287,7 +287,7 @@
-- > <basefont />
--
basefont :: Html -- ^ Resulting HTML.
-basefont = Leaf "basefont" "<basefont" ">"
+basefont = Leaf "basefont" "<basefont" ">" ()
{-# INLINE basefont #-}
-- WARNING: The next block of code was automatically generated by
@@ -376,7 +376,7 @@
-- > <br />
--
br :: Html -- ^ Resulting HTML.
-br = Leaf "br" "<br" ">"
+br = Leaf "br" "<br" ">" ()
{-# INLINE br #-}
-- WARNING: The next block of code was automatically generated by
@@ -483,7 +483,7 @@
-- > <col />
--
col :: Html -- ^ Resulting HTML.
-col = Leaf "col" "<col" ">"
+col = Leaf "col" "<col" ">" ()
{-# INLINE col #-}
-- WARNING: The next block of code was automatically generated by
@@ -716,7 +716,7 @@
-- > <frame />
--
frame :: Html -- ^ Resulting HTML.
-frame = Leaf "frame" "<frame" ">"
+frame = Leaf "frame" "<frame" ">" ()
{-# INLINE frame #-}
-- WARNING: The next block of code was automatically generated by
@@ -877,7 +877,7 @@
-- > <hr />
--
hr :: Html -- ^ Resulting HTML.
-hr = Leaf "hr" "<hr" ">"
+hr = Leaf "hr" "<hr" ">" ()
{-# INLINE hr #-}
-- WARNING: The next block of code was automatically generated by
@@ -948,7 +948,7 @@
-- > <img />
--
img :: Html -- ^ Resulting HTML.
-img = Leaf "img" "<img" ">"
+img = Leaf "img" "<img" ">" ()
{-# INLINE img #-}
-- WARNING: The next block of code was automatically generated by
@@ -965,7 +965,7 @@
-- > <input />
--
input :: Html -- ^ Resulting HTML.
-input = Leaf "input" "<input" ">"
+input = Leaf "input" "<input" ">" ()
{-# INLINE input #-}
-- WARNING: The next block of code was automatically generated by
@@ -1090,7 +1090,7 @@
-- > <link />
--
link :: Html -- ^ Resulting HTML.
-link = Leaf "link" "<link" ">"
+link = Leaf "link" "<link" ">" ()
{-# INLINE link #-}
-- WARNING: The next block of code was automatically generated by
@@ -1143,7 +1143,7 @@
-- > <meta />
--
meta :: Html -- ^ Resulting HTML.
-meta = Leaf "meta" "<meta" ">"
+meta = Leaf "meta" "<meta" ">" ()
{-# INLINE meta #-}
-- WARNING: The next block of code was automatically generated by
@@ -1286,7 +1286,7 @@
-- > <param />
--
param :: Html -- ^ Resulting HTML.
-param = Leaf "param" "<param" ">"
+param = Leaf "param" "<param" ">" ()
{-# INLINE param #-}
-- WARNING: The next block of code was automatically generated by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blaze-html-0.8.1.3/src/Text/Blaze/Html4/Strict.hs new/blaze-html-0.9.0.1/src/Text/Blaze/Html4/Strict.hs
--- old/blaze-html-0.8.1.3/src/Text/Blaze/Html4/Strict.hs 2016-11-28 11:32:14.000000000 +0100
+++ new/blaze-html-0.9.0.1/src/Text/Blaze/Html4/Strict.hs 2017-01-30 17:56:16.000000000 +0100
@@ -221,7 +221,7 @@
-- > <area />
--
area :: Html -- ^ Resulting HTML.
-area = Leaf "area" "<area" ">"
+area = Leaf "area" "<area" ">" ()
{-# INLINE area #-}
-- WARNING: The next block of code was automatically generated by
@@ -328,7 +328,7 @@
-- > <br />
--
br :: Html -- ^ Resulting HTML.
-br = Leaf "br" "<br" ">"
+br = Leaf "br" "<br" ">" ()
{-# INLINE br #-}
-- WARNING: The next block of code was automatically generated by
@@ -417,7 +417,7 @@
-- > <col />
--
col :: Html -- ^ Resulting HTML.
-col = Leaf "col" "<col" ">"
+col = Leaf "col" "<col" ">" ()
{-# INLINE col #-}
-- WARNING: The next block of code was automatically generated by
@@ -740,7 +740,7 @@
-- > <hr />
--
hr :: Html -- ^ Resulting HTML.
-hr = Leaf "hr" "<hr" ">"
+hr = Leaf "hr" "<hr" ">" ()
{-# INLINE hr #-}
-- WARNING: The next block of code was automatically generated by
@@ -793,7 +793,7 @@
-- > <img />
--
img :: Html -- ^ Resulting HTML.
-img = Leaf "img" "<img" ">"
+img = Leaf "img" "<img" ">" ()
{-# INLINE img #-}
-- WARNING: The next block of code was automatically generated by
@@ -810,7 +810,7 @@
-- > <input />
--
input :: Html -- ^ Resulting HTML.
-input = Leaf "input" "<input" ">"
+input = Leaf "input" "<input" ">" ()
{-# INLINE input #-}
-- WARNING: The next block of code was automatically generated by
@@ -917,7 +917,7 @@
-- > <link />
--
link :: Html -- ^ Resulting HTML.
-link = Leaf "link" "<link" ">"
+link = Leaf "link" "<link" ">" ()
{-# INLINE link #-}
-- WARNING: The next block of code was automatically generated by
@@ -952,7 +952,7 @@
-- > <meta />
--
meta :: Html -- ^ Resulting HTML.
-meta = Leaf "meta" "<meta" ">"
+meta = Leaf "meta" "<meta" ">" ()
{-# INLINE meta #-}
-- WARNING: The next block of code was automatically generated by
@@ -1077,7 +1077,7 @@
-- > <param />
--
param :: Html -- ^ Resulting HTML.
-param = Leaf "param" "<param" ">"
+param = Leaf "param" "<param" ">" ()
{-# INLINE param #-}
-- WARNING: The next block of code was automatically generated by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blaze-html-0.8.1.3/src/Text/Blaze/Html4/Transitional.hs new/blaze-html-0.9.0.1/src/Text/Blaze/Html4/Transitional.hs
--- old/blaze-html-0.8.1.3/src/Text/Blaze/Html4/Transitional.hs 2016-11-28 11:32:14.000000000 +0100
+++ new/blaze-html-0.9.0.1/src/Text/Blaze/Html4/Transitional.hs 2017-01-30 17:56:16.000000000 +0100
@@ -250,7 +250,7 @@
-- > <area />
--
area :: Html -- ^ Resulting HTML.
-area = Leaf "area" "<area" ">"
+area = Leaf "area" "<area" ">" ()
{-# INLINE area #-}
-- WARNING: The next block of code was automatically generated by
@@ -285,7 +285,7 @@
-- > <basefont />
--
basefont :: Html -- ^ Resulting HTML.
-basefont = Leaf "basefont" "<basefont" ">"
+basefont = Leaf "basefont" "<basefont" ">" ()
{-# INLINE basefont #-}
-- WARNING: The next block of code was automatically generated by
@@ -374,7 +374,7 @@
-- > <br />
--
br :: Html -- ^ Resulting HTML.
-br = Leaf "br" "<br" ">"
+br = Leaf "br" "<br" ">" ()
{-# INLINE br #-}
-- WARNING: The next block of code was automatically generated by
@@ -481,7 +481,7 @@
-- > <col />
--
col :: Html -- ^ Resulting HTML.
-col = Leaf "col" "<col" ">"
+col = Leaf "col" "<col" ">" ()
{-# INLINE col #-}
-- WARNING: The next block of code was automatically generated by
@@ -840,7 +840,7 @@
-- > <hr />
--
hr :: Html -- ^ Resulting HTML.
-hr = Leaf "hr" "<hr" ">"
+hr = Leaf "hr" "<hr" ">" ()
{-# INLINE hr #-}
-- WARNING: The next block of code was automatically generated by
@@ -911,7 +911,7 @@
-- > <img />
--
img :: Html -- ^ Resulting HTML.
-img = Leaf "img" "<img" ">"
+img = Leaf "img" "<img" ">" ()
{-# INLINE img #-}
-- WARNING: The next block of code was automatically generated by
@@ -928,7 +928,7 @@
-- > <input />
--
input :: Html -- ^ Resulting HTML.
-input = Leaf "input" "<input" ">"
+input = Leaf "input" "<input" ">" ()
{-# INLINE input #-}
-- WARNING: The next block of code was automatically generated by
@@ -1053,7 +1053,7 @@
-- > <link />
--
link :: Html -- ^ Resulting HTML.
-link = Leaf "link" "<link" ">"
+link = Leaf "link" "<link" ">" ()
{-# INLINE link #-}
-- WARNING: The next block of code was automatically generated by
@@ -1106,7 +1106,7 @@
-- > <meta />
--
meta :: Html -- ^ Resulting HTML.
-meta = Leaf "meta" "<meta" ">"
+meta = Leaf "meta" "<meta" ">" ()
{-# INLINE meta #-}
-- WARNING: The next block of code was automatically generated by
@@ -1249,7 +1249,7 @@
-- > <param />
--
param :: Html -- ^ Resulting HTML.
-param = Leaf "param" "<param" ">"
+param = Leaf "param" "<param" ">" ()
{-# INLINE param #-}
-- WARNING: The next block of code was automatically generated by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blaze-html-0.8.1.3/src/Text/Blaze/Html5.hs new/blaze-html-0.9.0.1/src/Text/Blaze/Html5.hs
--- old/blaze-html-0.8.1.3/src/Text/Blaze/Html5.hs 2016-11-28 11:32:14.000000000 +0100
+++ new/blaze-html-0.9.0.1/src/Text/Blaze/Html5.hs 2017-01-30 17:56:16.000000000 +0100
@@ -232,7 +232,7 @@
-- > <area />
--
area :: Html -- ^ Resulting HTML.
-area = Leaf "area" "<area" ">"
+area = Leaf "area" "<area" ">" ()
{-# INLINE area #-}
-- WARNING: The next block of code was automatically generated by
@@ -321,7 +321,7 @@
-- > <base />
--
base :: Html -- ^ Resulting HTML.
-base = Leaf "base" "<base" ">"
+base = Leaf "base" "<base" ">" ()
{-# INLINE base #-}
-- WARNING: The next block of code was automatically generated by
@@ -392,7 +392,7 @@
-- > <br />
--
br :: Html -- ^ Resulting HTML.
-br = Leaf "br" "<br" ">"
+br = Leaf "br" "<br" ">" ()
{-# INLINE br #-}
-- WARNING: The next block of code was automatically generated by
@@ -499,7 +499,7 @@
-- > <col />
--
col :: Html -- ^ Resulting HTML.
-col = Leaf "col" "<col" ">"
+col = Leaf "col" "<col" ">" ()
{-# INLINE col #-}
-- WARNING: The next block of code was automatically generated by
@@ -714,7 +714,7 @@
-- > <embed />
--
embed :: Html -- ^ Resulting HTML.
-embed = Leaf "embed" "<embed" ">"
+embed = Leaf "embed" "<embed" ">" ()
{-# INLINE embed #-}
-- WARNING: The next block of code was automatically generated by
@@ -983,7 +983,7 @@
-- > <hr />
--
hr :: Html -- ^ Resulting HTML.
-hr = Leaf "hr" "<hr" ">"
+hr = Leaf "hr" "<hr" ">" ()
{-# INLINE hr #-}
-- WARNING: The next block of code was automatically generated by
@@ -1054,7 +1054,7 @@
-- > <img />
--
img :: Html -- ^ Resulting HTML.
-img = Leaf "img" "<img" ">"
+img = Leaf "img" "<img" ">" ()
{-# INLINE img #-}
-- WARNING: The next block of code was automatically generated by
@@ -1071,7 +1071,7 @@
-- > <input />
--
input :: Html -- ^ Resulting HTML.
-input = Leaf "input" "<input" ">"
+input = Leaf "input" "<input" ">" ()
{-# INLINE input #-}
-- WARNING: The next block of code was automatically generated by
@@ -1124,7 +1124,7 @@
-- > <keygen />
--
keygen :: Html -- ^ Resulting HTML.
-keygen = Leaf "keygen" "<keygen" ">"
+keygen = Leaf "keygen" "<keygen" ">" ()
{-# INLINE keygen #-}
-- WARNING: The next block of code was automatically generated by
@@ -1195,7 +1195,7 @@
-- > <link />
--
link :: Html -- ^ Resulting HTML.
-link = Leaf "link" "<link" ">"
+link = Leaf "link" "<link" ">" ()
{-# INLINE link #-}
-- WARNING: The next block of code was automatically generated by
@@ -1284,7 +1284,7 @@
-- > <menuitem />
--
menuitem :: Html -- ^ Resulting HTML.
-menuitem = Leaf "menuitem" "<menuitem" ">"
+menuitem = Leaf "menuitem" "<menuitem" ">" ()
{-# INLINE menuitem #-}
-- WARNING: The next block of code was automatically generated by
@@ -1301,7 +1301,7 @@
-- > <meta />
--
meta :: Html -- ^ Resulting HTML.
-meta = Leaf "meta" "<meta" ">"
+meta = Leaf "meta" "<meta" ">" ()
{-# INLINE meta #-}
-- WARNING: The next block of code was automatically generated by
@@ -1480,7 +1480,7 @@
-- > <param />
--
param :: Html -- ^ Resulting HTML.
-param = Leaf "param" "<param" ">"
+param = Leaf "param" "<param" ">" ()
{-# INLINE param #-}
-- WARNING: The next block of code was automatically generated by
@@ -1695,7 +1695,7 @@
-- > <source />
--
source :: Html -- ^ Resulting HTML.
-source = Leaf "source" "<source" ">"
+source = Leaf "source" "<source" ">" ()
{-# INLINE source #-}
-- WARNING: The next block of code was automatically generated by
@@ -2000,7 +2000,7 @@
-- > <track />
--
track :: Html -- ^ Resulting HTML.
-track = Leaf "track" "<track" ">"
+track = Leaf "track" "<track" ">" ()
{-# INLINE track #-}
-- WARNING: The next block of code was automatically generated by
@@ -2071,5 +2071,5 @@
-- > <wbr />
--
wbr :: Html -- ^ Resulting HTML.
-wbr = Leaf "wbr" "<wbr" ">"
+wbr = Leaf "wbr" "<wbr" ">" ()
{-# INLINE wbr #-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blaze-html-0.8.1.3/src/Text/Blaze/XHtml1/FrameSet.hs new/blaze-html-0.9.0.1/src/Text/Blaze/XHtml1/FrameSet.hs
--- old/blaze-html-0.8.1.3/src/Text/Blaze/XHtml1/FrameSet.hs 2016-11-28 11:32:14.000000000 +0100
+++ new/blaze-html-0.9.0.1/src/Text/Blaze/XHtml1/FrameSet.hs 2017-01-30 17:56:16.000000000 +0100
@@ -252,7 +252,7 @@
-- > <area />
--
area :: Html -- ^ Resulting HTML.
-area = Leaf "area" "<area" " />"
+area = Leaf "area" "<area" " />" ()
{-# INLINE area #-}
-- WARNING: The next block of code was automatically generated by
@@ -287,7 +287,7 @@
-- > <basefont />
--
basefont :: Html -- ^ Resulting HTML.
-basefont = Leaf "basefont" "<basefont" " />"
+basefont = Leaf "basefont" "<basefont" " />" ()
{-# INLINE basefont #-}
-- WARNING: The next block of code was automatically generated by
@@ -376,7 +376,7 @@
-- > <br />
--
br :: Html -- ^ Resulting HTML.
-br = Leaf "br" "<br" " />"
+br = Leaf "br" "<br" " />" ()
{-# INLINE br #-}
-- WARNING: The next block of code was automatically generated by
@@ -483,7 +483,7 @@
-- > <col />
--
col :: Html -- ^ Resulting HTML.
-col = Leaf "col" "<col" " />"
+col = Leaf "col" "<col" " />" ()
{-# INLINE col #-}
-- WARNING: The next block of code was automatically generated by
@@ -716,7 +716,7 @@
-- > <frame />
--
frame :: Html -- ^ Resulting HTML.
-frame = Leaf "frame" "<frame" " />"
+frame = Leaf "frame" "<frame" " />" ()
{-# INLINE frame #-}
-- WARNING: The next block of code was automatically generated by
@@ -877,7 +877,7 @@
-- > <hr />
--
hr :: Html -- ^ Resulting HTML.
-hr = Leaf "hr" "<hr" " />"
+hr = Leaf "hr" "<hr" " />" ()
{-# INLINE hr #-}
-- WARNING: The next block of code was automatically generated by
@@ -948,7 +948,7 @@
-- > <img />
--
img :: Html -- ^ Resulting HTML.
-img = Leaf "img" "<img" " />"
+img = Leaf "img" "<img" " />" ()
{-# INLINE img #-}
-- WARNING: The next block of code was automatically generated by
@@ -965,7 +965,7 @@
-- > <input />
--
input :: Html -- ^ Resulting HTML.
-input = Leaf "input" "<input" " />"
+input = Leaf "input" "<input" " />" ()
{-# INLINE input #-}
-- WARNING: The next block of code was automatically generated by
@@ -1090,7 +1090,7 @@
-- > <link />
--
link :: Html -- ^ Resulting HTML.
-link = Leaf "link" "<link" " />"
+link = Leaf "link" "<link" " />" ()
{-# INLINE link #-}
-- WARNING: The next block of code was automatically generated by
@@ -1143,7 +1143,7 @@
-- > <meta />
--
meta :: Html -- ^ Resulting HTML.
-meta = Leaf "meta" "<meta" " />"
+meta = Leaf "meta" "<meta" " />" ()
{-# INLINE meta #-}
-- WARNING: The next block of code was automatically generated by
@@ -1286,7 +1286,7 @@
-- > <param />
--
param :: Html -- ^ Resulting HTML.
-param = Leaf "param" "<param" " />"
+param = Leaf "param" "<param" " />" ()
{-# INLINE param #-}
-- WARNING: The next block of code was automatically generated by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blaze-html-0.8.1.3/src/Text/Blaze/XHtml1/Strict.hs new/blaze-html-0.9.0.1/src/Text/Blaze/XHtml1/Strict.hs
--- old/blaze-html-0.8.1.3/src/Text/Blaze/XHtml1/Strict.hs 2016-11-28 11:32:14.000000000 +0100
+++ new/blaze-html-0.9.0.1/src/Text/Blaze/XHtml1/Strict.hs 2017-01-30 17:56:16.000000000 +0100
@@ -221,7 +221,7 @@
-- > <area />
--
area :: Html -- ^ Resulting HTML.
-area = Leaf "area" "<area" " />"
+area = Leaf "area" "<area" " />" ()
{-# INLINE area #-}
-- WARNING: The next block of code was automatically generated by
@@ -328,7 +328,7 @@
-- > <br />
--
br :: Html -- ^ Resulting HTML.
-br = Leaf "br" "<br" " />"
+br = Leaf "br" "<br" " />" ()
{-# INLINE br #-}
-- WARNING: The next block of code was automatically generated by
@@ -417,7 +417,7 @@
-- > <col />
--
col :: Html -- ^ Resulting HTML.
-col = Leaf "col" "<col" " />"
+col = Leaf "col" "<col" " />" ()
{-# INLINE col #-}
-- WARNING: The next block of code was automatically generated by
@@ -740,7 +740,7 @@
-- > <hr />
--
hr :: Html -- ^ Resulting HTML.
-hr = Leaf "hr" "<hr" " />"
+hr = Leaf "hr" "<hr" " />" ()
{-# INLINE hr #-}
-- WARNING: The next block of code was automatically generated by
@@ -793,7 +793,7 @@
-- > <img />
--
img :: Html -- ^ Resulting HTML.
-img = Leaf "img" "<img" " />"
+img = Leaf "img" "<img" " />" ()
{-# INLINE img #-}
-- WARNING: The next block of code was automatically generated by
@@ -810,7 +810,7 @@
-- > <input />
--
input :: Html -- ^ Resulting HTML.
-input = Leaf "input" "<input" " />"
+input = Leaf "input" "<input" " />" ()
{-# INLINE input #-}
-- WARNING: The next block of code was automatically generated by
@@ -917,7 +917,7 @@
-- > <link />
--
link :: Html -- ^ Resulting HTML.
-link = Leaf "link" "<link" " />"
+link = Leaf "link" "<link" " />" ()
{-# INLINE link #-}
-- WARNING: The next block of code was automatically generated by
@@ -952,7 +952,7 @@
-- > <meta />
--
meta :: Html -- ^ Resulting HTML.
-meta = Leaf "meta" "<meta" " />"
+meta = Leaf "meta" "<meta" " />" ()
{-# INLINE meta #-}
-- WARNING: The next block of code was automatically generated by
@@ -1077,7 +1077,7 @@
-- > <param />
--
param :: Html -- ^ Resulting HTML.
-param = Leaf "param" "<param" " />"
+param = Leaf "param" "<param" " />" ()
{-# INLINE param #-}
-- WARNING: The next block of code was automatically generated by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blaze-html-0.8.1.3/src/Text/Blaze/XHtml1/Transitional.hs new/blaze-html-0.9.0.1/src/Text/Blaze/XHtml1/Transitional.hs
--- old/blaze-html-0.8.1.3/src/Text/Blaze/XHtml1/Transitional.hs 2016-11-28 11:32:14.000000000 +0100
+++ new/blaze-html-0.9.0.1/src/Text/Blaze/XHtml1/Transitional.hs 2017-01-30 17:56:16.000000000 +0100
@@ -250,7 +250,7 @@
-- > <area />
--
area :: Html -- ^ Resulting HTML.
-area = Leaf "area" "<area" " />"
+area = Leaf "area" "<area" " />" ()
{-# INLINE area #-}
-- WARNING: The next block of code was automatically generated by
@@ -285,7 +285,7 @@
-- > <basefont />
--
basefont :: Html -- ^ Resulting HTML.
-basefont = Leaf "basefont" "<basefont" " />"
+basefont = Leaf "basefont" "<basefont" " />" ()
{-# INLINE basefont #-}
-- WARNING: The next block of code was automatically generated by
@@ -374,7 +374,7 @@
-- > <br />
--
br :: Html -- ^ Resulting HTML.
-br = Leaf "br" "<br" " />"
+br = Leaf "br" "<br" " />" ()
{-# INLINE br #-}
-- WARNING: The next block of code was automatically generated by
@@ -481,7 +481,7 @@
-- > <col />
--
col :: Html -- ^ Resulting HTML.
-col = Leaf "col" "<col" " />"
+col = Leaf "col" "<col" " />" ()
{-# INLINE col #-}
-- WARNING: The next block of code was automatically generated by
@@ -840,7 +840,7 @@
-- > <hr />
--
hr :: Html -- ^ Resulting HTML.
-hr = Leaf "hr" "<hr" " />"
+hr = Leaf "hr" "<hr" " />" ()
{-# INLINE hr #-}
-- WARNING: The next block of code was automatically generated by
@@ -911,7 +911,7 @@
-- > <img />
--
img :: Html -- ^ Resulting HTML.
-img = Leaf "img" "<img" " />"
+img = Leaf "img" "<img" " />" ()
{-# INLINE img #-}
-- WARNING: The next block of code was automatically generated by
@@ -928,7 +928,7 @@
-- > <input />
--
input :: Html -- ^ Resulting HTML.
-input = Leaf "input" "<input" " />"
+input = Leaf "input" "<input" " />" ()
{-# INLINE input #-}
-- WARNING: The next block of code was automatically generated by
@@ -1053,7 +1053,7 @@
-- > <link />
--
link :: Html -- ^ Resulting HTML.
-link = Leaf "link" "<link" " />"
+link = Leaf "link" "<link" " />" ()
{-# INLINE link #-}
-- WARNING: The next block of code was automatically generated by
@@ -1106,7 +1106,7 @@
-- > <meta />
--
meta :: Html -- ^ Resulting HTML.
-meta = Leaf "meta" "<meta" " />"
+meta = Leaf "meta" "<meta" " />" ()
{-# INLINE meta #-}
-- WARNING: The next block of code was automatically generated by
@@ -1249,7 +1249,7 @@
-- > <param />
--
param :: Html -- ^ Resulting HTML.
-param = Leaf "param" "<param" " />"
+param = Leaf "param" "<param" " />" ()
{-# INLINE param #-}
-- WARNING: The next block of code was automatically generated by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blaze-html-0.8.1.3/src/Text/Blaze/XHtml5.hs new/blaze-html-0.9.0.1/src/Text/Blaze/XHtml5.hs
--- old/blaze-html-0.8.1.3/src/Text/Blaze/XHtml5.hs 2016-11-28 11:32:14.000000000 +0100
+++ new/blaze-html-0.9.0.1/src/Text/Blaze/XHtml5.hs 2017-01-30 17:56:16.000000000 +0100
@@ -232,7 +232,7 @@
-- > <area />
--
area :: Html -- ^ Resulting HTML.
-area = Leaf "area" "<area" " />"
+area = Leaf "area" "<area" " />" ()
{-# INLINE area #-}
-- WARNING: The next block of code was automatically generated by
@@ -321,7 +321,7 @@
-- > <base />
--
base :: Html -- ^ Resulting HTML.
-base = Leaf "base" "<base" " />"
+base = Leaf "base" "<base" " />" ()
{-# INLINE base #-}
-- WARNING: The next block of code was automatically generated by
@@ -392,7 +392,7 @@
-- > <br />
--
br :: Html -- ^ Resulting HTML.
-br = Leaf "br" "<br" " />"
+br = Leaf "br" "<br" " />" ()
{-# INLINE br #-}
-- WARNING: The next block of code was automatically generated by
@@ -499,7 +499,7 @@
-- > <col />
--
col :: Html -- ^ Resulting HTML.
-col = Leaf "col" "<col" " />"
+col = Leaf "col" "<col" " />" ()
{-# INLINE col #-}
-- WARNING: The next block of code was automatically generated by
@@ -714,7 +714,7 @@
-- > <embed />
--
embed :: Html -- ^ Resulting HTML.
-embed = Leaf "embed" "<embed" " />"
+embed = Leaf "embed" "<embed" " />" ()
{-# INLINE embed #-}
-- WARNING: The next block of code was automatically generated by
@@ -983,7 +983,7 @@
-- > <hr />
--
hr :: Html -- ^ Resulting HTML.
-hr = Leaf "hr" "<hr" " />"
+hr = Leaf "hr" "<hr" " />" ()
{-# INLINE hr #-}
-- WARNING: The next block of code was automatically generated by
@@ -1054,7 +1054,7 @@
-- > <img />
--
img :: Html -- ^ Resulting HTML.
-img = Leaf "img" "<img" " />"
+img = Leaf "img" "<img" " />" ()
{-# INLINE img #-}
-- WARNING: The next block of code was automatically generated by
@@ -1071,7 +1071,7 @@
-- > <input />
--
input :: Html -- ^ Resulting HTML.
-input = Leaf "input" "<input" " />"
+input = Leaf "input" "<input" " />" ()
{-# INLINE input #-}
-- WARNING: The next block of code was automatically generated by
@@ -1124,7 +1124,7 @@
-- > <keygen />
--
keygen :: Html -- ^ Resulting HTML.
-keygen = Leaf "keygen" "<keygen" " />"
+keygen = Leaf "keygen" "<keygen" " />" ()
{-# INLINE keygen #-}
-- WARNING: The next block of code was automatically generated by
@@ -1195,7 +1195,7 @@
-- > <link />
--
link :: Html -- ^ Resulting HTML.
-link = Leaf "link" "<link" " />"
+link = Leaf "link" "<link" " />" ()
{-# INLINE link #-}
-- WARNING: The next block of code was automatically generated by
@@ -1284,7 +1284,7 @@
-- > <menuitem />
--
menuitem :: Html -- ^ Resulting HTML.
-menuitem = Leaf "menuitem" "<menuitem" " />"
+menuitem = Leaf "menuitem" "<menuitem" " />" ()
{-# INLINE menuitem #-}
-- WARNING: The next block of code was automatically generated by
@@ -1301,7 +1301,7 @@
-- > <meta />
--
meta :: Html -- ^ Resulting HTML.
-meta = Leaf "meta" "<meta" " />"
+meta = Leaf "meta" "<meta" " />" ()
{-# INLINE meta #-}
-- WARNING: The next block of code was automatically generated by
@@ -1480,7 +1480,7 @@
-- > <param />
--
param :: Html -- ^ Resulting HTML.
-param = Leaf "param" "<param" " />"
+param = Leaf "param" "<param" " />" ()
{-# INLINE param #-}
-- WARNING: The next block of code was automatically generated by
@@ -1695,7 +1695,7 @@
-- > <source />
--
source :: Html -- ^ Resulting HTML.
-source = Leaf "source" "<source" " />"
+source = Leaf "source" "<source" " />" ()
{-# INLINE source #-}
-- WARNING: The next block of code was automatically generated by
@@ -2000,7 +2000,7 @@
-- > <track />
--
track :: Html -- ^ Resulting HTML.
-track = Leaf "track" "<track" " />"
+track = Leaf "track" "<track" " />" ()
{-# INLINE track #-}
-- WARNING: The next block of code was automatically generated by
@@ -2071,5 +2071,5 @@
-- > <wbr />
--
wbr :: Html -- ^ Resulting HTML.
-wbr = Leaf "wbr" "<wbr" " />"
+wbr = Leaf "wbr" "<wbr" " />" ()
{-# INLINE wbr #-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/blaze-html-0.8.1.3/src/Util/GenerateHtmlCombinators.hs new/blaze-html-0.9.0.1/src/Util/GenerateHtmlCombinators.hs
--- old/blaze-html-0.8.1.3/src/Util/GenerateHtmlCombinators.hs 2016-11-28 11:32:14.000000000 +0100
+++ new/blaze-html-0.9.0.1/src/Util/GenerateHtmlCombinators.hs 2017-01-30 17:56:16.000000000 +0100
@@ -236,7 +236,7 @@
, "--"
, function ++ " :: Html -- ^ Resulting HTML."
, function ++ " = Leaf \"" ++ tag ++ "\" \"<" ++ tag ++ "\" " ++ "\""
- ++ (if closing then " /" else "") ++ ">\""
+ ++ (if closing then " /" else "") ++ ">\" ()"
, "{-# INLINE " ++ function ++ " #-}"
]
where
1
0
Hello community,
here is the log from the commit of package ghc-base-prelude for openSUSE:Factory checked in at 2017-08-31 20:50:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-base-prelude (Old)
and /work/SRC/openSUSE:Factory/.ghc-base-prelude.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-base-prelude"
Thu Aug 31 20:50:11 2017 rev:6 rq:513210 version:1.2.0.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-base-prelude/ghc-base-prelude.changes 2016-07-21 08:00:37.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-base-prelude.new/ghc-base-prelude.changes 2017-08-31 20:50:11.956206751 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:07:24 UTC 2017 - psimons(a)suse.com
+
+- Update to version 1.2.0.1.
+
+-------------------------------------------------------------------
Old:
----
base-prelude-1.0.1.1.tar.gz
New:
----
base-prelude-1.2.0.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-base-prelude.spec ++++++
--- /var/tmp/diff_new_pack.ybYf9T/_old 2017-08-31 20:50:12.720099523 +0200
+++ /var/tmp/diff_new_pack.ybYf9T/_new 2017-08-31 20:50:12.720099523 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ghc-base-prelude
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# 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
@@ -18,11 +18,11 @@
%global pkg_name base-prelude
Name: ghc-%{pkg_name}
-Version: 1.0.1.1
+Version: 1.2.0.1
Release: 0
Summary: The most complete prelude formed solely from the "base" package
License: MIT
-Group: System/Libraries
+Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
BuildRequires: ghc-Cabal-devel
@@ -58,15 +58,12 @@
%prep
%setup -q -n %{pkg_name}-%{version}
-
%build
%ghc_lib_build
-
%install
%ghc_lib_install
-
%post devel
%ghc_pkg_recache
++++++ base-prelude-1.0.1.1.tar.gz -> base-prelude-1.2.0.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/base-prelude-1.0.1.1/CHANGELOG.md new/base-prelude-1.2.0.1/CHANGELOG.md
--- old/base-prelude-1.0.1.1/CHANGELOG.md 2016-05-22 13:15:57.000000000 +0200
+++ new/base-prelude-1.2.0.1/CHANGELOG.md 2017-03-16 13:53:41.000000000 +0100
@@ -1,3 +1,11 @@
+# 1.2
+
+* Replace the `Foreign` export with `Foreign.Storable`, `Foreign.Ptr`, `Foreign.ForeignPtr`, `Foreign.StablePtr`. It's more conservative and way less likely to cause name collisions.
+
+# 1.1
+
+* Export `Foreign`
+
# 1.0.1
* Relaxed the "base" dependency
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/base-prelude-1.0.1.1/base-prelude.cabal new/base-prelude-1.2.0.1/base-prelude.cabal
--- old/base-prelude-1.0.1.1/base-prelude.cabal 2016-05-22 13:15:57.000000000 +0200
+++ new/base-prelude-1.2.0.1/base-prelude.cabal 2017-03-16 13:53:41.000000000 +0100
@@ -1,7 +1,7 @@
name:
base-prelude
version:
- 1.0.1.1
+ 1.2.0.1
synopsis:
The most complete prelude formed solely from the "base" package
description:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/base-prelude-1.0.1.1/library/BasePrelude.hs new/base-prelude-1.2.0.1/library/BasePrelude.hs
--- old/base-prelude-1.0.1.1/library/BasePrelude.hs 2016-05-22 13:15:57.000000000 +0200
+++ new/base-prelude-1.2.0.1/library/BasePrelude.hs 2017-03-16 13:53:41.000000000 +0100
@@ -66,7 +66,10 @@
import Data.Version as Exports
import Data.Word as Exports
import Debug.Trace as Exports hiding (traceShowId, traceM, traceShowM)
-import Foreign.Storable as Exports (Storable)
+import Foreign.Storable as Exports
+import Foreign.Ptr as Exports
+import Foreign.ForeignPtr as Exports
+import Foreign.StablePtr as Exports
import GHC.Conc as Exports hiding (withMVar, threadWaitWriteSTM, threadWaitWrite, threadWaitReadSTM, threadWaitRead)
import GHC.Exts as Exports (lazy, inline, sortWith, groupWith)
import GHC.Generics as Exports (Generic)
@@ -87,9 +90,23 @@
import Text.Read as Exports (Read(..), readMaybe, readEither)
import Unsafe.Coerce as Exports
+-- Conditional imports for reimplementations
+#if MIN_VERSION_base(4,7,0)
+import Data.Bool (bool)
+import Debug.Trace (traceShowId, traceM, traceShowM)
+import Data.Functor (($>))
+#endif
+#if MIN_VERSION_base(4,8,0)
+import Data.Function ((&))
+import Data.List (isSubsequenceOf, sortOn, uncons)
+#endif
+
+
+---------------------------------
+-- Reimplementations for base-4.7
+---------------------------------
--- Reimplementations
--------------------------
+#if !MIN_VERSION_base(4,7,0)
-- | Case analysis for the 'Bool' type.
-- @bool a b p@ evaluates to @a@ when @p@ is @False@, and evaluates to @b@
@@ -135,6 +152,14 @@
($>) :: Functor f => f a -> b -> f b
($>) = flip (<$)
+#endif
+
+---------------------------------
+-- Reimplementations for base-4.8
+---------------------------------
+
+#if !MIN_VERSION_base(4,8,0)
+
infixl 1 &
-- | '&' is a reverse application operator. This provides notational
@@ -177,3 +202,5 @@
sortOn :: Ord b => (a -> b) -> [a] -> [a]
sortOn f =
map snd . sortBy (comparing fst) . map (\x -> let y = f x in y `seq` (y, x))
+
+#endif
1
0
Hello community,
here is the log from the commit of package ghc-atom-conduit for openSUSE:Factory checked in at 2017-08-31 20:50:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-atom-conduit (Old)
and /work/SRC/openSUSE:Factory/.ghc-atom-conduit.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-atom-conduit"
Thu Aug 31 20:50:09 2017 rev:2 rq:513204 version:0.4.0.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-atom-conduit/ghc-atom-conduit.changes 2017-05-17 10:50:20.664672358 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-atom-conduit.new/ghc-atom-conduit.changes 2017-08-31 20:50:10.888356645 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:06:00 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.4.0.3.
+
+-------------------------------------------------------------------
Old:
----
atom-conduit-0.4.0.1.tar.gz
New:
----
atom-conduit-0.4.0.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-atom-conduit.spec ++++++
--- /var/tmp/diff_new_pack.c3vmK4/_old 2017-08-31 20:50:11.756234821 +0200
+++ /var/tmp/diff_new_pack.c3vmK4/_new 2017-08-31 20:50:11.760234260 +0200
@@ -19,7 +19,7 @@
%global pkg_name atom-conduit
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.4.0.1
+Version: 0.4.0.3
Release: 0
Summary: Streaming parser/renderer for the Atom 1.0 standard (RFC 4287)
License: WTFPL
++++++ atom-conduit-0.4.0.1.tar.gz -> atom-conduit-0.4.0.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/atom-conduit-0.4.0.1/Text/Atom/Conduit/Parse.hs new/atom-conduit-0.4.0.3/Text/Atom/Conduit/Parse.hs
--- old/atom-conduit-0.4.0.1/Text/Atom/Conduit/Parse.hs 2016-09-25 21:04:05.000000000 +0200
+++ new/atom-conduit-0.4.0.3/Text/Atom/Conduit/Parse.hs 2017-06-15 12:22:21.000000000 +0200
@@ -87,7 +87,7 @@
-- | Like 'tagName' but ignores the namespace.
tagName' :: MonadThrow m => Text -> AttrParser a -> (a -> ConduitM Event o m b) -> ConduitM Event o m (Maybe b)
-tagName' t = tagPredicate (\n -> nameLocalName n == t && nameNamespace n == Just "http://www.w3.org/2005/Atom")
+tagName' t = tag' (matching $ \n -> nameLocalName n == t && nameNamespace n == Just "http://www.w3.org/2005/Atom")
-- | Tag which content is a date-time that follows RFC 3339 format.
tagDate :: MonadThrow m => Text -> ConduitM Event o m (Maybe UTCTime)
@@ -100,7 +100,7 @@
tagIgnoreAttrs' name handler = tagName' name ignoreAttrs $ const handler
xhtmlContent :: MonadThrow m => ConduitM Event o m Text
-xhtmlContent = fmap (decodeUtf8 . toByteString) $ takeAllTreesContent =$= Render.renderBuilder def =$= foldC
+xhtmlContent = fmap (decodeUtf8 . toByteString) $ many_ takeAnyTreeContent =$= Render.renderBuilder def =$= foldC
projectC :: Monad m => Fold a a' b b' -> Conduit a m b
@@ -138,7 +138,7 @@
-- > <uri>http://example.com/~johndoe</uri>
-- > </author>
atomPerson :: MonadThrow m => Text -> ConduitM Event o m (Maybe AtomPerson)
-atomPerson name = tagIgnoreAttrs' name $ (manyYield' (choose piece) =$= parser) <* many ignoreAllTreesContent where
+atomPerson name = tagIgnoreAttrs' name $ (manyYield' (choose piece) =$= parser) <* many ignoreAnyTreeContent where
parser = getZipConduit $ AtomPerson
<$> ZipConduit (projectC _PersonName =$= headRequiredC "Missing or invalid <name> element")
<*> ZipConduit (projectC _PersonEmail =$= headDefC "")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/atom-conduit-0.4.0.1/Text/Atom/Conduit/Render.hs new/atom-conduit-0.4.0.3/Text/Atom/Conduit/Render.hs
--- old/atom-conduit-0.4.0.1/Text/Atom/Conduit/Render.hs 2016-09-25 14:58:14.000000000 +0200
+++ new/atom-conduit-0.4.0.3/Text/Atom/Conduit/Render.hs 2017-06-15 12:22:21.000000000 +0200
@@ -1,4 +1,3 @@
-{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
-- | Streaming renderers for the Atom 1.0 standard.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/atom-conduit-0.4.0.1/Text/Atom/Lens.hs new/atom-conduit-0.4.0.3/Text/Atom/Lens.hs
--- old/atom-conduit-0.4.0.1/Text/Atom/Lens.hs 2016-09-25 15:46:16.000000000 +0200
+++ new/atom-conduit-0.4.0.3/Text/Atom/Lens.hs 2017-06-15 12:22:21.000000000 +0200
@@ -1,6 +1,6 @@
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TemplateHaskell #-}
-module Text.Atom.Lens where
+module Text.Atom.Lens (module Text.Atom.Lens) where
-- {{{ Imports
import Lens.Simple
@@ -70,7 +70,7 @@
] ''AtomPerson
--personUriL :: Traversal' AtomPerson (URIRef a)
---personUriL inj a@AtomPerson { personUri = u } = (\x -> a { personUri = x }) <$> sequenceA (fmap inj u)
+--personUriL inj a@AtomPerson { personUri = u } = (\x -> a { personUri = x }) <$> traverse inj u
makeLensesFor
[ ("sourceAuthors", "sourceAuthorsL")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/atom-conduit-0.4.0.1/Text/Atom/Types.hs new/atom-conduit-0.4.0.3/Text/Atom/Types.hs
--- old/atom-conduit-0.4.0.1/Text/Atom/Types.hs 2016-09-25 14:57:39.000000000 +0200
+++ new/atom-conduit-0.4.0.3/Text/Atom/Types.hs 2017-06-15 12:22:21.000000000 +0200
@@ -28,7 +28,7 @@
-- > </entry>
-- >
-- > </feed>
-module Text.Atom.Types where
+module Text.Atom.Types (module Text.Atom.Types) where
-- {{{ Imports
import Data.NonNull
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/atom-conduit-0.4.0.1/atom-conduit.cabal new/atom-conduit-0.4.0.3/atom-conduit.cabal
--- old/atom-conduit-0.4.0.1/atom-conduit.cabal 2016-09-25 21:06:33.000000000 +0200
+++ new/atom-conduit-0.4.0.3/atom-conduit.cabal 2017-06-15 12:22:21.000000000 +0200
@@ -1,5 +1,5 @@
name: atom-conduit
-version: 0.4.0.1
+version: 0.4.0.3
synopsis: Streaming parser/renderer for the Atom 1.0 standard (RFC 4287).
description: Please refer to README.
license: PublicDomain
@@ -35,7 +35,7 @@
, time >= 1.5
, timerep >= 2.0
, uri-bytestring >= 0.2
- , xml-conduit >= 1.4
+ , xml-conduit >= 1.5
, xml-types
default-language: Haskell2010
1
0
Hello community,
here is the log from the commit of package ghc-async-extra for openSUSE:Factory checked in at 2017-08-31 20:50:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-async-extra (Old)
and /work/SRC/openSUSE:Factory/.ghc-async-extra.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-async-extra"
Thu Aug 31 20:50:07 2017 rev:2 rq:513203 version:0.2.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-async-extra/ghc-async-extra.changes 2017-04-12 18:05:08.331937445 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-async-extra.new/ghc-async-extra.changes 2017-08-31 20:50:09.064612644 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:07:40 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.2.0.0.
+
+-------------------------------------------------------------------
Old:
----
async-extra-0.1.0.0.tar.gz
New:
----
async-extra-0.2.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-async-extra.spec ++++++
--- /var/tmp/diff_new_pack.G5sYk2/_old 2017-08-31 20:50:10.408424013 +0200
+++ /var/tmp/diff_new_pack.G5sYk2/_new 2017-08-31 20:50:10.412423452 +0200
@@ -18,7 +18,7 @@
%global pkg_name async-extra
Name: ghc-%{pkg_name}
-Version: 0.1.0.0
+Version: 0.2.0.0
Release: 0
Summary: Useful concurrent combinators
License: MIT
@@ -27,9 +27,9 @@
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-async-devel
-BuildRequires: ghc-containers-devel
BuildRequires: ghc-deepseq-devel
BuildRequires: ghc-rpm-macros
+BuildRequires: ghc-split-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
++++++ async-extra-0.1.0.0.tar.gz -> async-extra-0.2.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/async-extra-0.1.0.0/async-extra.cabal new/async-extra-0.2.0.0/async-extra.cabal
--- old/async-extra-0.1.0.0/async-extra.cabal 2017-01-08 23:45:28.000000000 +0100
+++ new/async-extra-0.2.0.0/async-extra.cabal 2017-05-28 02:20:54.000000000 +0200
@@ -1,5 +1,5 @@
name: async-extra
-version: 0.1.0.0
+version: 0.2.0.0
synopsis: Useful concurrent combinators
description: Various concurrent combinators
homepage: https://github.com/agrafix/async-extra#readme
@@ -20,8 +20,8 @@
exposed-modules: Control.Concurrent.Async.Extra
build-depends: base >= 4.8 && < 5,
async,
- containers >= 0.5,
- deepseq >= 1.4
+ deepseq >= 1.4,
+ split >= 0.2
default-language: Haskell2010
source-repository head
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/async-extra-0.1.0.0/src/Control/Concurrent/Async/Extra.hs new/async-extra-0.2.0.0/src/Control/Concurrent/Async/Extra.hs
--- old/async-extra-0.1.0.0/src/Control/Concurrent/Async/Extra.hs 2017-01-08 23:57:21.000000000 +0100
+++ new/async-extra-0.2.0.0/src/Control/Concurrent/Async/Extra.hs 2017-05-28 02:20:49.000000000 +0200
@@ -1,10 +1,12 @@
-{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Control.Concurrent.Async.Extra
( -- * concurrent mapping
mapConcurrentlyBounded
+ , mapConcurrentlyBounded_
, mapConcurrentlyBatched
+ , mapConcurrentlyBatched_
, mapConcurrentlyChunks
+ , mapConcurrentlyChunks_
-- * merge strategies
, mergeConcatAll
)
@@ -13,11 +15,16 @@
import Control.Concurrent.Async
import Control.DeepSeq
import Control.Exception
-import Data.List
-import Data.Sequence (Seq)
+import Control.Monad
+import Data.List.Split (chunksOf)
import qualified Control.Concurrent.QSem as S
import qualified Data.Foldable as F
-import qualified Data.Sequence as Seq
+
+-- | Span a green thread for each task, but only execute N tasks
+-- concurrently. Ignore the result
+mapConcurrentlyBounded_ :: Traversable t => Int -> (a -> IO ()) -> t a -> IO ()
+mapConcurrentlyBounded_ bound action =
+ void . mapConcurrentlyBounded bound action
-- | Span a green thread for each task, but only execute N tasks
-- concurrently.
@@ -29,40 +36,39 @@
mapConcurrently wrappedAction items
-- | Span green threads to perform N (batch size) tasks in one thread
+-- and ignore results
+mapConcurrentlyBatched_ ::
+ (Foldable t) => Int -> (a -> IO ()) -> t a -> IO ()
+mapConcurrentlyBatched_ batchSize =
+ mapConcurrentlyBatched batchSize (const $ pure ())
+
+-- | Span green threads to perform N (batch size) tasks in one thread
-- and merge results using provided merge function
mapConcurrentlyBatched ::
(NFData b, Foldable t)
- => Int -> (Seq (Seq b) -> IO r) -> (a -> IO b) -> t a -> IO r
+ => Int -> ([[b]] -> IO r) -> (a -> IO b) -> t a -> IO r
mapConcurrentlyBatched batchSize merge action items =
- do let chunks = chunkList batchSize $ F.toList items
+ do let chunks = chunksOf batchSize $ F.toList items
r <- mapConcurrently (\x -> force <$> mapM action x) chunks
merge r
-- | Split input into N chunks with equal length and work on
+-- each chunk in a dedicated green thread. Ignore results
+mapConcurrentlyChunks_ :: (Foldable t) => Int -> (a -> IO ()) -> t a -> IO ()
+mapConcurrentlyChunks_ chunkCount =
+ mapConcurrentlyChunks chunkCount (const $ pure ())
+
+-- | Split input into N chunks with equal length and work on
-- each chunk in a dedicated green thread. Then merge results using provided merge function
mapConcurrentlyChunks ::
(NFData b, Foldable t)
- => Int -> (Seq (Seq b) -> IO r) -> (t a -> Int) -> (a -> IO b) -> t a -> IO r
-mapConcurrentlyChunks chunkCount merge getLength action items =
- do let listSize = getLength items
+ => Int -> ([[b]] -> IO r) -> (a -> IO b) -> t a -> IO r
+mapConcurrentlyChunks chunkCount merge action items =
+ do let listSize = F.length items
batchSize :: Double
batchSize = fromIntegral listSize / fromIntegral chunkCount
mapConcurrentlyBatched (ceiling batchSize) merge action items
--- | Chunk a list into chunks of N elements at maximum
-chunkList :: forall a. Int -> [a] -> Seq (Seq a)
-chunkList chunkSize =
- go 0 Seq.empty
- where
- go :: Int -> Seq a -> [a] -> Seq (Seq a)
- go !size !chunk q
- | size == chunkSize =
- Seq.singleton chunk Seq.>< go 0 Seq.empty q
- | otherwise =
- case q of
- [] -> Seq.singleton chunk
- (x : xs) -> go (size + 1) (chunk Seq.|> x) xs
-
--- | Merge all chunks by combining to one list
-mergeConcatAll :: Seq (Seq a) -> [a]
-mergeConcatAll = F.toList . foldl' (Seq.><) Seq.empty . F.toList
+-- | Merge all chunks by combining to one list. (Equiv to 'join')
+mergeConcatAll :: [[a]] -> [a]
+mergeConcatAll = join
1
0
Hello community,
here is the log from the commit of package ghc-amqp for openSUSE:Factory checked in at 2017-08-31 20:50:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-amqp (Old)
and /work/SRC/openSUSE:Factory/.ghc-amqp.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-amqp"
Thu Aug 31 20:50:04 2017 rev:2 rq:513201 version:0.15.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-amqp/ghc-amqp.changes 2017-03-28 15:20:27.988485767 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-amqp.new/ghc-amqp.changes 2017-08-31 20:50:05.897057273 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:06:00 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.15.1.
+
+-------------------------------------------------------------------
Old:
----
amqp-0.14.1.tar.gz
New:
----
amqp-0.15.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-amqp.spec ++++++
--- /var/tmp/diff_new_pack.RHILrx/_old 2017-08-31 20:50:06.764935449 +0200
+++ /var/tmp/diff_new_pack.RHILrx/_new 2017-08-31 20:50:06.772934326 +0200
@@ -19,7 +19,7 @@
%global pkg_name amqp
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.14.1
+Version: 0.15.1
Release: 0
Summary: Client library for AMQP servers (currently only RabbitMQ)
License: MIT
++++++ amqp-0.14.1.tar.gz -> amqp-0.15.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/amqp-0.14.1/Network/AMQP/Internal.hs new/amqp-0.15.1/Network/AMQP/Internal.hs
--- old/amqp-0.14.1/Network/AMQP/Internal.hs 2017-01-12 10:35:15.000000000 +0100
+++ new/amqp-0.15.1/Network/AMQP/Internal.hs 2017-06-30 14:14:47.000000000 +0200
@@ -278,7 +278,7 @@
-- connection: if the thread died for an unexpected exception,
-- inform the channel threads downstream accordingly. Otherwise
-- just use a normal 'killThread' finaliser.
- let finaliser = case res of
+ let finaliser = ChanThreadKilledException $ case res of
Left ex -> ex
Right _ -> CE.toException CE.ThreadKilled
modifyMVar_ cChannels $ \x -> do
@@ -486,6 +486,16 @@
chanExceptionHandlers :: MVar [CE.SomeException -> IO ()]
}
+-- | Thrown in the channel thread when the connection gets closed.
+-- When handling exceptions in a subscription callback, make sure to re-throw this so the channel thread can be stopped.
+data ChanThreadKilledException = ChanThreadKilledException { cause :: CE.SomeException }
+ deriving (Show)
+
+instance CE.Exception ChanThreadKilledException
+
+unwrapChanThreadKilledException :: CE.SomeException -> CE.SomeException
+unwrapChanThreadKilledException e = maybe e cause $ CE.fromException e
+
msgFromContentHeaderProperties :: ContentHeaderProperties -> BL.ByteString -> Message
msgFromContentHeaderProperties (CHBasic content_type content_encoding headers delivery_mode priority correlation_id reply_to expiration message_id timestamp message_type user_id application_id cluster_id) body =
let msgId = fromShortString message_id
@@ -542,8 +552,11 @@
let env = Envelope {envDeliveryTag = deliveryTag, envRedelivered = redelivered,
envExchangeName = exchange, envRoutingKey = routingKey, envChannel = chan}
- CE.catch (subscriber (msg, env))
- (\(e::CE.SomeException) -> hPutStrLn stderr $ "AMQP callback threw exception: " ++ show e)
+ CE.catches (subscriber (msg, env))
+ [
+ CE.Handler (\(e::ChanThreadKilledException) -> CE.throwIO $ cause e),
+ CE.Handler (\(e::CE.SomeException) -> hPutStrLn stderr $ "AMQP callback threw exception: " ++ show e)
+ ]
Nothing ->
-- got a message, but have no registered subscriber; so drop it
return ()
@@ -656,7 +669,7 @@
closeChannel' newChannel "closed"
case res of
Right _ -> return ()
- Left ex -> readMVar handlers >>= mapM_ ($ ex)
+ Left ex -> readMVar handlers >>= mapM_ ($ unwrapChanThreadKilledException ex)
when (IM.member newChannelID mp) $ CE.throwIO $ userError "openChannel fail: channel already open"
return (IM.insert newChannelID (newChannel, thrID) mp, newChannel)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/amqp-0.14.1/Network/AMQP.hs new/amqp-0.15.1/Network/AMQP.hs
--- old/amqp-0.14.1/Network/AMQP.hs 2017-01-12 10:35:15.000000000 +0100
+++ new/amqp-0.15.1/Network/AMQP.hs 2017-06-30 14:14:47.000000000 +0200
@@ -119,7 +119,8 @@
waitForConfirmsUntil,
addConfirmationListener,
ConfirmationResult(..),
-
+ AckType(..),
+
-- * Flow Control
flow,
@@ -131,6 +132,7 @@
-- * Exceptions
AMQPException(..),
+ ChanThreadKilledException,
-- * URI parsing
fromURI
@@ -353,6 +355,8 @@
-- | @consumeMsgs chan queue ack callback@ subscribes to the given queue and returns a consumerTag. For any incoming message, the callback will be run. If @ack == 'Ack'@ you will have to acknowledge all incoming messages (see 'ackMsg' and 'ackEnv')
--
+-- If you do any exception handling inside the callback, you should make sure not to catch 'ChanThreadKilledException', or re-throw it if you did catch it, since it is used internally by the library to close channels.
+--
-- NOTE: The callback will be run on the same thread as the channel thread (every channel spawns its own thread to listen for incoming data) so DO NOT perform any request on @chan@ inside the callback (however, you CAN perform requests on other open channels inside the callback, though I wouldn't recommend it).
-- Functions that can safely be called on @chan@ are 'ackMsg', 'ackEnv', 'rejectMsg', 'recoverMsgs'. If you want to perform anything more complex, it's a good idea to wrap it inside 'forkIO'.
consumeMsgs :: Channel -> Text -> Ack -> ((Message,Envelope) -> IO ()) -> IO ConsumerTag
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/amqp-0.14.1/amqp.cabal new/amqp-0.15.1/amqp.cabal
--- old/amqp-0.14.1/amqp.cabal 2017-01-12 10:35:15.000000000 +0100
+++ new/amqp-0.15.1/amqp.cabal 2017-06-30 14:14:47.000000000 +0200
@@ -1,5 +1,5 @@
Name: amqp
-Version: 0.14.1
+Version: 0.15.1
Synopsis: Client library for AMQP servers (currently only RabbitMQ)
Description: Client library for AMQP servers (currently only RabbitMQ)
License: BSD3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/amqp-0.14.1/changelog.md new/amqp-0.15.1/changelog.md
--- old/amqp-0.14.1/changelog.md 2017-01-12 10:35:15.000000000 +0100
+++ new/amqp-0.15.1/changelog.md 2017-06-30 14:14:47.000000000 +0200
@@ -1,3 +1,11 @@
+### Version 0.15.1
+
+* export the `AckType` data-type and constructors
+
+### Version 0.15.0
+
+* The way channels are closed internally was changed. This may affect you if you have installed an exception handler inside the callback passed to `consumeMsgs`. Specifically, the exceptions used internally to close channels are now wrapped inside `ChanThreadKilledException`. You should make sure to re-throw this exception if you did catch it.
+
### Version 0.14.1
* show all exceptions if no host can be connected to
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/amqp-0.14.1/test/BasicPublishSpec.hs new/amqp-0.15.1/test/BasicPublishSpec.hs
--- old/amqp-0.14.1/test/BasicPublishSpec.hs 2017-01-12 10:35:15.000000000 +0100
+++ new/amqp-0.15.1/test/BasicPublishSpec.hs 2017-06-30 14:14:47.000000000 +0200
@@ -6,8 +6,12 @@
import Network.AMQP
import Data.ByteString.Lazy.Char8 as BL
+import Data.Map (Map)
+import qualified Data.Map as Map
+import Data.Word
import Control.Concurrent (threadDelay)
+import Control.Concurrent.STM
main :: IO ()
main = hspec spec
@@ -60,3 +64,66 @@
_ <- deleteQueue ch q
closeConnection conn
+ context "confirmSelect" $ do
+ it "receives a confirmation message" $ do
+ let q = "haskell-amqp.queues.publish-over-fanout1"
+ e = "haskell-amqp.fanout.d.na"
+ conn <- openConnection "127.0.0.1" "/" "guest" "guest"
+ ch <- openChannel conn
+ confirmSelect ch True
+ (confirmMap, counter) <- atomically $ (,) <$> newTVar Map.empty <*> newTVar 0
+ addConfirmationListener ch (handleConfirms counter confirmMap)
+ _ <- declareExchange ch (newExchange {exchangeName = e,
+ exchangeType = "fanout",
+ exchangeDurable = True})
+
+ (_, _, _) <- declareQueue ch (newQueue {queueName = q, queueDurable = False})
+ _ <- purgeQueue ch q
+ bindQueue ch q e ""
+
+
+ _ <- traverse (\n -> do
+ sn' <- publishMsg ch e "" (newMsg {msgBody = (BL.pack "hello")})
+ case sn' of
+ Just sn -> atomically $ addSequenceNumber confirmMap (fromIntegral sn) n
+ Nothing -> return ()
+
+ ) [1..5]
+
+
+ threadDelay (1000 * 100)
+
+ (_, n, _) <- declareQueue ch (newQueue {queueName = q, queueDurable = False})
+ n `shouldBe` 5
+
+ cMap' <- atomically $ readTVar confirmMap
+ cMap' `shouldBe` Map.empty
+
+ counter' <- atomically $ readTVar counter
+ counter' `shouldBe` 5
+
+ _ <- deleteQueue ch q
+ closeConnection conn
+
+
+addSequenceNumber :: TVar (Map Word64 Int) -> Word64 -> Int -> STM ()
+addSequenceNumber cMap sn n = modifyTVar' cMap (Map.insert sn n)
+
+removeSequenceNumber :: TVar (Map Word64 Int) -> Word64 -> STM ()
+removeSequenceNumber cMap sn = modifyTVar' cMap (Map.delete sn)
+
+increaseCounter :: TVar Int -> STM ()
+increaseCounter n = modifyTVar' n (+1)
+
+handleConfirms :: TVar Int -> TVar (Map Word64 Int) -> (Word64, Bool, AckType) -> IO ()
+handleConfirms c _ (_, False, BasicNack) = atomically $ increaseCounter c
+handleConfirms c _ (_, True, BasicNack) = atomically $ increaseCounter c
+handleConfirms c cMap (n, False, BasicAck) = atomically $ removeSequenceNumber cMap n >> increaseCounter c
+handleConfirms c cMap (n, True, BasicAck) = atomically $ do
+ cMap' <- readTVar cMap
+ let (lt, eq', _) = Map.splitLookup n cMap'
+ case eq' of
+ Just _ -> removeSequenceNumber cMap n >> increaseCounter c
+ Nothing -> return ()
+ _ <- traverse (\i -> removeSequenceNumber cMap i >> increaseCounter c) (Map.keys lt)
+ return ()
1
0
Hello community,
here is the log from the commit of package ghc-amazonka-s3-streaming for openSUSE:Factory checked in at 2017-08-31 20:50:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-amazonka-s3-streaming (Old)
and /work/SRC/openSUSE:Factory/.ghc-amazonka-s3-streaming.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-amazonka-s3-streaming"
Thu Aug 31 20:50:02 2017 rev:3 rq:513200 version:0.2.0.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-amazonka-s3-streaming/ghc-amazonka-s3-streaming.changes 2017-07-28 09:47:55.153927102 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-amazonka-s3-streaming.new/ghc-amazonka-s3-streaming.changes 2017-08-31 20:50:04.125305973 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:07:03 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.2.0.3.
+
+-------------------------------------------------------------------
Old:
----
amazonka-s3-streaming-0.1.0.4.tar.gz
New:
----
amazonka-s3-streaming-0.2.0.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-amazonka-s3-streaming.spec ++++++
--- /var/tmp/diff_new_pack.oYwQwi/_old 2017-08-31 20:50:05.081171798 +0200
+++ /var/tmp/diff_new_pack.oYwQwi/_new 2017-08-31 20:50:05.093170114 +0200
@@ -18,7 +18,7 @@
%global pkg_name amazonka-s3-streaming
Name: ghc-%{pkg_name}
-Version: 0.1.0.4
+Version: 0.2.0.3
Release: 0
Summary: Provides conduits to upload data to S3 using the Multipart API
License: MIT
@@ -33,8 +33,10 @@
BuildRequires: ghc-bytestring-devel
BuildRequires: ghc-conduit-devel
BuildRequires: ghc-conduit-extra-devel
+BuildRequires: ghc-deepseq-devel
BuildRequires: ghc-dlist-devel
BuildRequires: ghc-exceptions-devel
+BuildRequires: ghc-http-client-devel
BuildRequires: ghc-lens-devel
BuildRequires: ghc-lifted-async-devel
BuildRequires: ghc-mmap-devel
@@ -83,6 +85,6 @@
%files devel -f %{name}-devel.files
%defattr(-,root,root,-)
-%doc README.md
+%doc Changelog.md README.md
%changelog
++++++ amazonka-s3-streaming-0.1.0.4.tar.gz -> amazonka-s3-streaming-0.2.0.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/amazonka-s3-streaming-0.1.0.4/Changelog.md new/amazonka-s3-streaming-0.2.0.3/Changelog.md
--- old/amazonka-s3-streaming-0.1.0.4/Changelog.md 1970-01-01 01:00:00.000000000 +0100
+++ new/amazonka-s3-streaming-0.2.0.3/Changelog.md 2017-06-05 05:40:29.000000000 +0200
@@ -0,0 +1,20 @@
+# Changelog - amazonka-s3-streaming
+
+# 0.2.0.3
+ * Make all library generated messages use Debug level not Info
+
+# 0.2.0.2
+ * Update to mmorph < 1.2
+
+## 0.2.0.1
+ * Fixed a bug with the printf format strings which would lead to a crash (Thanks @JakeOShannessy
+ for reporting).
+
+## 0.2.0.0
+ * Fixed a potential bug with very large uploads where the chunksize might be too small
+ for the limit of 10,000 chunks per upload (#6).
+ * Change API to allow the user to specify a chunk size for streaming if the user knows
+ more about the data than we do.
+ * Allow the user to specify how many concurrent threads to use for `concurrentUpload` as
+ as well as chunk size (#4).
+ * Better specify cabal dependency ranges.
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/amazonka-s3-streaming-0.1.0.4/Main.hs new/amazonka-s3-streaming-0.2.0.3/Main.hs
--- old/amazonka-s3-streaming-0.1.0.4/Main.hs 2016-12-24 12:01:09.000000000 +0100
+++ new/amazonka-s3-streaming-0.2.0.3/Main.hs 2017-02-13 10:34:19.000000000 +0100
@@ -3,20 +3,21 @@
module Main where
-import Data.Conduit (($$))
-import Data.Conduit.Binary (sourceHandle)
-import Data.Text (pack)
-
-import Network.AWS
-import Network.AWS.Data.Text (fromText)
-import Network.AWS.S3.CreateMultipartUpload
-import Network.AWS.S3.StreamingUpload
-
-import System.Environment
-import System.IO (BufferMode(BlockBuffering), hSetBuffering, stdin)
+import Data.Conduit (($$))
+import Data.Conduit.Binary (sourceHandle)
+import Data.Text (pack)
+
+import Network.AWS
+import Network.AWS.Data.Text (fromText)
+import Network.AWS.S3.CreateMultipartUpload
+import Network.AWS.S3.StreamingUpload
+
+import System.Environment
+import System.IO (BufferMode(BlockBuffering),
+ hSetBuffering, stdin)
#if !MIN_VERSION_base(4,8,0)
-import Control.Applicative (pure, (<$>), (<*>))
+import Control.Applicative (pure, (<$>), (<*>))
#endif
main :: IO ()
@@ -38,9 +39,9 @@
hSetBuffering stdin (BlockBuffering Nothing)
res <- runResourceT . runAWS env $ case file of
-- Stream data from stdin
- "-" -> sourceHandle stdin $$ streamUpload (createMultipartUpload buck ky)
+ "-" -> sourceHandle stdin $$ streamUpload Nothing (createMultipartUpload buck ky)
-- Read from a file
- _ -> concurrentUpload (FP file) $ createMultipartUpload buck ky
+ _ -> concurrentUpload Nothing Nothing (FP file) $ createMultipartUpload buck ky
print res
Left err -> print err >> usage
("abort":region:profile:credfile:bucket:_) ->
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/amazonka-s3-streaming-0.1.0.4/README.md new/amazonka-s3-streaming-0.2.0.3/README.md
--- old/amazonka-s3-streaming-0.1.0.4/README.md 2016-12-24 12:00:15.000000000 +0100
+++ new/amazonka-s3-streaming-0.2.0.3/README.md 2017-05-24 04:37:45.000000000 +0200
@@ -1,3 +1,5 @@
# amazonka-s3-streaming [![Build Status](https://travis-ci.org/axman6/amazonka-s3-streaming.svg?branch=maste…
-Provides a conduit based streaming interface and a concurrent interface to uploading data to S3 using the Multipart API.
+Provides a conduit based streaming interface and a concurrent interface to uploading data to S3 using the Multipart API. Also provides method to upload files or bytestrings of known size in parallel.
+
+The documentation can be found on [Hackage](https://hackage.haskell.org/package/amazonka-s3-streaming).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/amazonka-s3-streaming-0.1.0.4/amazonka-s3-streaming.cabal new/amazonka-s3-streaming-0.2.0.3/amazonka-s3-streaming.cabal
--- old/amazonka-s3-streaming-0.1.0.4/amazonka-s3-streaming.cabal 2016-12-24 12:29:54.000000000 +0100
+++ new/amazonka-s3-streaming-0.2.0.3/amazonka-s3-streaming.cabal 2017-06-05 05:41:31.000000000 +0200
@@ -1,5 +1,5 @@
name: amazonka-s3-streaming
-version: 0.1.0.4
+version: 0.2.0.3
cabal-version: >=1.10
build-type: Simple
license: BSD3
@@ -14,6 +14,7 @@
author: Alex Mason
extra-source-files:
README.md
+ Changelog.md
source-repository head
type: git
@@ -35,13 +36,15 @@
resourcet >=1.1.7.4 && <1.2,
conduit >=1.2.6.6 && <1.3,
bytestring >=0.10.6.0 && <0.11,
- mmorph >=1.0.6 && <1.1,
+ mmorph >=1.0.6 && <1.2,
lens >=4.13 && <5.0,
mtl >=2.2.1 && <2.3,
exceptions >=0.8.2.1 && <0.9,
- dlist >=0.8.0.2 && <0.9,
- lifted-async >=0.9.0 && <0.10,
- mmap >=0.5.9 && <0.6
+ dlist ==0.8.*,
+ lifted-async ==0.9.*,
+ mmap ==0.5.*,
+ deepseq ==1.4.*,
+ http-client >=0.4 && <0.6
default-language: Haskell2010
hs-source-dirs: src
@@ -52,11 +55,11 @@
amazonka >=1.4.3 && <1.5,
amazonka-core >=1.4.3 && <1.5,
amazonka-s3 >=1.4.3 && <1.5,
- amazonka-s3-streaming >=0.1.0.4 && <0.2,
+ amazonka-s3-streaming >=0.2.0.3 && <0.3,
conduit-extra >=1.1.15 && <1.2,
conduit >=1.2.8 && <1.3,
bytestring >=0.10.8.1 && <0.11,
text >=1.2.2.1 && <1.3
default-language: Haskell2010
- ghc-options: -threaded -rtsopts -with-rtsopts=-N
+ ghc-options: -threaded -rtsopts -with-rtsopts=-N -O2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/amazonka-s3-streaming-0.1.0.4/src/Network/AWS/S3/StreamingUpload.hs new/amazonka-s3-streaming-0.2.0.3/src/Network/AWS/S3/StreamingUpload.hs
--- old/amazonka-s3-streaming-0.1.0.4/src/Network/AWS/S3/StreamingUpload.hs 2016-12-24 11:33:43.000000000 +0100
+++ new/amazonka-s3-streaming-0.2.0.3/src/Network/AWS/S3/StreamingUpload.hs 2017-06-05 05:39:00.000000000 +0200
@@ -1,4 +1,5 @@
{-# LANGUAGE BangPatterns #-}
+{-# LANGUAGE CPP #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MultiParamTypeClasses #-}
@@ -15,66 +16,72 @@
, abortAllUploads
, module Network.AWS.S3.CreateMultipartUpload
, module Network.AWS.S3.CompleteMultipartUpload
- , chunkSize
+ , minimumChunkSize
) where
-import Network.AWS
- ( HasEnv(..)
- , LogLevel(..)
- , MonadAWS
- , getFileSize
- , hashedBody
- , send
- , toBody
- )
-
-import Control.Monad.Trans.AWS (AWSConstraint)
-import Network.AWS.Data.Crypto
- (Digest, SHA256, hashFinalize, hashInit, hashUpdate)
-
-import Network.AWS.S3.AbortMultipartUpload
-import Network.AWS.S3.CompleteMultipartUpload
-import Network.AWS.S3.CreateMultipartUpload
-import Network.AWS.S3.ListMultipartUploads
-import Network.AWS.S3.Types
- ( BucketName
- , cmuParts
- , completedMultipartUpload
- , completedPart
- , muKey
- , muUploadId
- )
-import Network.AWS.S3.UploadPart
-
-import Control.Applicative
-import Control.Category ((>>>))
-import Control.Monad (forM_, when, (>=>))
-import Control.Monad.IO.Class (MonadIO, liftIO)
-import Control.Monad.Morph (lift)
-import Control.Monad.Trans.Resource (MonadBaseControl, MonadResource, throwM)
-
-import Data.Conduit (Sink, await)
-import Data.Conduit.List (sourceList)
-
-import Data.ByteString (ByteString)
-import qualified Data.ByteString as BS
-import Data.ByteString.Builder (stringUtf8)
-import System.IO.MMap (mmapFileByteString)
-
-import qualified Data.DList as D
-import Data.List (unfoldr)
-import Data.List.NonEmpty (nonEmpty)
+import Network.AWS (HasEnv(..),
+ LogLevel(..), MonadAWS,
+ getFileSize,
+ hashedBody, send,
+ toBody)
+
+import Control.Monad.Trans.AWS (AWSConstraint)
+import Network.AWS.Data.Crypto (Digest, SHA256,
+ hashFinalize, hashInit,
+ hashUpdate)
+
+import Network.AWS.S3.AbortMultipartUpload
+import Network.AWS.S3.CompleteMultipartUpload
+import Network.AWS.S3.CreateMultipartUpload
+import Network.AWS.S3.ListMultipartUploads
+import Network.AWS.S3.Types (BucketName, cmuParts, completedMultipartUpload,
+ completedPart, muKey,
+ muUploadId)
+import Network.AWS.S3.UploadPart
+
+import Control.Applicative
+import Control.Category ((>>>))
+import Control.Monad (forM_, when, (>=>))
+import Control.Monad.IO.Class (MonadIO, liftIO)
+import Control.Monad.Morph (lift)
+import Control.Monad.Reader.Class (local)
+import Control.Monad.Trans.Resource (MonadBaseControl,
+ MonadResource, throwM)
+
+import Data.Conduit (Sink, await)
+import Data.Conduit.List (sourceList)
+
+import Data.ByteString (ByteString)
+import qualified Data.ByteString as BS
+import Data.ByteString.Builder (stringUtf8)
+import System.IO.MMap (mmapFileByteString)
+
+import Control.DeepSeq (rnf)
+import qualified Data.DList as D
+import Data.List (unfoldr)
+import Data.List.NonEmpty (nonEmpty)
+
+import Control.Exception.Lens (catching, handling)
+import Control.Lens
+
+import Text.Printf (printf)
+
+import Control.Concurrent (newQSem, signalQSem,
+ waitQSem)
+import Control.Concurrent.Async.Lifted (forConcurrently)
+import System.Mem (performGC)
+
+import Network.HTTP.Client (defaultManagerSettings,
+ managerConnCount,
+ newManager)
+import Network.HTTP.Client.Internal (mMaxConns)
-import Control.Exception.Lens (catching, handling)
-import Control.Lens
-
-import Text.Printf (printf)
-
-import Control.Concurrent.Async.Lifted (forConcurrently)
+type ChunkSize = Int
+type NumThreads = Int
-- | Minimum size of data which will be sent in a single part, currently 6MB
-chunkSize :: Int
-chunkSize = 6*1024*1024 -- Making this 5MB+1 seemed to cause AWS to complain
+minimumChunkSize :: ChunkSize
+minimumChunkSize = 6*1024*1024 -- Making this 5MB+1 seemed to cause AWS to complain
{- |
@@ -91,15 +98,17 @@
May throw 'Network.AWS.Error'
-}
-streamUpload :: (MonadResource m, MonadAWS m, AWSConstraint r m)
- => CreateMultipartUpload
+streamUpload :: (MonadResource m, AWSConstraint r m, MonadAWS m)
+ => Maybe ChunkSize -- ^ Optional chunk size
+ -> CreateMultipartUpload -- ^ Upload location
-> Sink ByteString m CompleteMultipartUploadResponse
-streamUpload cmu = do
+streamUpload mcs cmu = do
logger <- lift $ view envLogger
let logStr :: MonadIO m => String -> m ()
- logStr = liftIO . logger Info . stringUtf8
+ logStr = liftIO . logger Debug . stringUtf8
+ chunkSize = maybe minimumChunkSize (max minimumChunkSize) mcs
- cmur <- lift (send cmu)
+ cmur <- lift $ send cmu
when (cmur ^. cmursResponseStatus /= 200) $
fail "Failed to create upload"
@@ -119,18 +128,26 @@
(hashFinalize $ hashUpdate ctx bs)
(D.snoc bss bs)
- logStr $ printf "\n**** Uploaded part %d size $d\n" partnum bufsize
-
+ logStr $ printf "\n**** Uploaded part %d size %d\n" partnum bufsize
let part = completedPart partnum <$> (rs ^. uprsETag)
- go empty 0 hashInit (partnum+1) $ D.snoc completed part
+#if MIN_VERSION_amazonka_s3(1,4,1)
+ !_ = rnf part
+#endif
+ liftIO performGC
+ go empty 0 hashInit (partnum+1) . D.snoc completed $! part
Nothing -> lift $ do
- rs <- partUploader partnum bufsize (hashFinalize ctx) bss
-
- logStr $ printf "\n**** Uploaded (final) part %d size $d\n" partnum bufsize
-
- let allParts = D.toList $ D.snoc completed $ completedPart partnum <$> (rs ^. uprsETag)
- prts = nonEmpty =<< sequence allParts
+ prts <- if bufsize > 0
+ then do
+ rs <- partUploader partnum bufsize (hashFinalize ctx) bss
+
+ logStr $ printf "\n**** Uploaded (final) part %d size %d\n" partnum bufsize
+
+ let allParts = D.toList $ D.snoc completed $ completedPart partnum <$> (rs ^. uprsETag)
+ pure $ nonEmpty =<< sequence allParts
+ else do
+ logStr $ printf "\n**** No final data to upload\n"
+ pure $ nonEmpty =<< sequence (D.toList completed)
send $ completeMultipartUpload bucket key upId
& cMultipartUpload ?~ set cmuParts prts completedMultipartUpload
@@ -167,37 +184,68 @@
{-|
Allows a file or 'ByteString' to be uploaded concurrently, using the
-async library. 'ByteString's are split into 'chunkSize' chunks
-and uploaded directly.
+async library. The chunk size may optionally be specified, but will be at least
+`minimumChunkSize`, and may be made larger than if the `ByteString` or file
+is larger enough to cause more than 10,000 chunks.
Files are mmapped into 'chunkSize' chunks and each chunk is uploaded in parallel.
This considerably reduces the memory necessary compared to reading the contents
into memory as a strict 'ByteString'. The usual caveats about mmaped files apply:
if the file is modified during this operation, the data may become corrupt.
-May throw `Network.AWS.Error`, or `IOError`.
+May throw `Network.AWS.Error`, or `IOError`; an attempt is made to cancel the
+multipart upload on any error, but this may also fail if, for example, the network
+connection has been broken. See `abortAllUploads` for a crude cleanup method.
-}
-concurrentUpload :: (MonadAWS m, MonadBaseControl IO m)
- => UploadLocation -> CreateMultipartUpload -> m CompleteMultipartUploadResponse
-concurrentUpload ud cmu = do
+concurrentUpload :: (AWSConstraint r m, MonadAWS m, MonadBaseControl IO m)
+ => Maybe ChunkSize -- ^ Optional chunk size
+ -> Maybe NumThreads -- ^ Optional number of threads to upload with
+ -> UploadLocation -- ^ Whether to upload a file on disk or a `ByteString` that's already in memory.
+ -> CreateMultipartUpload -- ^ Description of where to upload.
+ -> m CompleteMultipartUploadResponse
+concurrentUpload mcs mnt ud cmu = do
cmur <- send cmu
when (cmur ^. cmursResponseStatus /= 200) $
fail "Failed to create upload"
+ logger <- view envLogger
+ let logStr :: MonadIO m => String -> m ()
+ logStr = liftIO . logger Info . stringUtf8
let Just upId = cmur ^. cmursUploadId
bucket = cmu ^. cmuBucket
key = cmu ^. cmuKey
+
+ calcChunkSize :: Int -> Int
+ calcChunkSize len =
+ let chunkSize' = maybe minimumChunkSize (max minimumChunkSize) mcs
+ in if len `div` chunkSize' >= 10000 then len `div` 9999 else chunkSize'
+
-- hndlr :: SomeException -> m CompleteMultipartUploadResponse
hndlr e = send (abortMultipartUpload bucket key upId) >> throwM e
-
- handling id hndlr $ do
+ mgr <- view envManager
+ let mConnCount = mMaxConns mgr
+ nThreads = maybe mConnCount (max 1) mnt
+ exec run = if maybe False (> mConnCount) mnt
+ then do
+ mgr' <- liftIO $ newManager defaultManagerSettings{managerConnCount = nThreads}
+ local (envManager .~ mgr') run
+ else run
+ exec $ handling id hndlr $ do
+ sem <- liftIO $ newQSem nThreads
umrs <- case ud of
- BS bs -> forConcurrently (zip [1..] $ chunksOf chunkSize bs) $ \(partnum, b) -> do
- umr <- send . uploadPart bucket key partnum upId . toBody $ b
- pure $ completedPart partnum <$> (umr ^. uprsETag)
+ BS bs ->
+ let chunkSize = calcChunkSize $ BS.length bs
+ in forConcurrently (zip [1..] $ chunksOf chunkSize bs) $ \(partnum, b) -> do
+ liftIO $ waitQSem sem
+ logStr $ "Starting part: " ++ show partnum
+ umr <- send . uploadPart bucket key partnum upId . toBody $ b
+ logStr $ "Finished part: " ++ show partnum
+ liftIO $ signalQSem sem
+ pure $ completedPart partnum <$> (umr ^. uprsETag)
FP fp -> do
fsize <- liftIO $ getFileSize fp
- let (count,lst) = divMod (fromIntegral fsize) chunkSize
+ let chunkSize = calcChunkSize $ fromIntegral fsize
+ (count,lst) = divMod (fromIntegral fsize) chunkSize
params = [(partnum, chunkSize*offset, size)
| partnum <- [1..]
| offset <- [0..count]
@@ -205,8 +253,10 @@
]
forConcurrently params $ \(partnum,off,size) -> do
+ liftIO $ waitQSem sem
b <- liftIO $ mmapFileByteString fp (Just (fromIntegral off,size))
umr <- send . uploadPart bucket key partnum upId . toBody $ b
+ liftIO $ signalQSem sem
pure $ completedPart partnum <$> (umr ^. uprsETag)
let prts = nonEmpty =<< sequence umrs
1
0
Hello community,
here is the log from the commit of package ghc-Spock-lucid for openSUSE:Factory checked in at 2017-08-31 20:50:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-Spock-lucid (Old)
and /work/SRC/openSUSE:Factory/.ghc-Spock-lucid.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-Spock-lucid"
Thu Aug 31 20:50:01 2017 rev:2 rq:513196 version:0.4.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-Spock-lucid/ghc-Spock-lucid.changes 2017-04-14 13:32:29.199776692 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-Spock-lucid.new/ghc-Spock-lucid.changes 2017-08-31 20:50:02.497534463 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:08:04 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.4.0.0.
+
+-------------------------------------------------------------------
Old:
----
Spock-lucid-0.3.0.0.tar.gz
New:
----
Spock-lucid-0.4.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-Spock-lucid.spec ++++++
--- /var/tmp/diff_new_pack.bxom4I/_old 2017-08-31 20:50:03.465398604 +0200
+++ /var/tmp/diff_new_pack.bxom4I/_new 2017-08-31 20:50:03.469398042 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ghc-Spock-lucid
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# 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
@@ -18,22 +18,19 @@
%global pkg_name Spock-lucid
Name: ghc-%{pkg_name}
-Version: 0.3.0.0
+Version: 0.4.0.0
Release: 0
Summary: Lucid support for Spock
License: BSD-3-Clause
-Group: System/Libraries
+Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
BuildRequires: ghc-Cabal-devel
-# Begin cabal-rpm deps:
BuildRequires: ghc-Spock-devel
-BuildRequires: ghc-blaze-builder-devel
BuildRequires: ghc-lucid-devel
BuildRequires: ghc-rpm-macros
BuildRequires: ghc-transformers-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-# End cabal-rpm deps
%description
Lucid support for Spock.
@@ -52,15 +49,12 @@
%prep
%setup -q -n %{pkg_name}-%{version}
-
%build
%ghc_lib_build
-
%install
%ghc_lib_install
-
%post devel
%ghc_pkg_recache
++++++ Spock-lucid-0.3.0.0.tar.gz -> Spock-lucid-0.4.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Spock-lucid-0.3.0.0/CHANGELOG.md new/Spock-lucid-0.4.0.0/CHANGELOG.md
--- old/Spock-lucid-0.3.0.0/CHANGELOG.md 2016-03-21 22:08:03.000000000 +0100
+++ new/Spock-lucid-0.4.0.0/CHANGELOG.md 2017-02-16 11:59:23.000000000 +0100
@@ -1,3 +1,7 @@
+# 0.4.0.0
+
+* Generalized all types by not returning the value (since it can't be used anyway).
+
# 0.3.0.0
* Added `lucidT`.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Spock-lucid-0.3.0.0/Spock-lucid.cabal new/Spock-lucid-0.4.0.0/Spock-lucid.cabal
--- old/Spock-lucid-0.3.0.0/Spock-lucid.cabal 2016-03-21 22:08:03.000000000 +0100
+++ new/Spock-lucid-0.4.0.0/Spock-lucid.cabal 2017-02-16 11:59:23.000000000 +0100
@@ -1,5 +1,5 @@
name: Spock-lucid
-version: 0.3.0.0
+version: 0.4.0.0
synopsis: Lucid support for Spock
description:
Lucid support for Spock
@@ -26,7 +26,6 @@
-- other-extensions:
build-depends: Spock >= 0.9
, base >= 4.7 && < 4.10
- , blaze-builder
, lucid == 2.*
, transformers
ghc-options: -Wall -fno-warn-unused-do-bind
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Spock-lucid-0.3.0.0/lib/Web/Spock/Lucid.hs new/Spock-lucid-0.4.0.0/lib/Web/Spock/Lucid.hs
--- old/Spock-lucid-0.3.0.0/lib/Web/Spock/Lucid.hs 2016-03-21 22:08:03.000000000 +0100
+++ new/Spock-lucid-0.4.0.0/lib/Web/Spock/Lucid.hs 2017-02-16 11:59:23.000000000 +0100
@@ -1,8 +1,5 @@
-{-# LANGUAGE
-CPP,
-OverloadedStrings,
-RankNTypes
- #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RankNTypes #-}
module Web.Spock.Lucid
@@ -19,37 +16,26 @@
import Control.Monad.Trans.Class
import Web.Spock
import Lucid.Base
-import Blaze.ByteString.Builder
-
-#if !MIN_VERSION_base(4,8,0)
-import Data.Monoid (mempty)
-#endif
-- | Render HTML and send as response body. Content-type will be @text/html@.
-lucid :: MonadIO m => Html a -> ActionCtxT cxt m a
+lucid :: MonadIO m => Html a -> ActionCtxT cxt m b
lucid x = do
setHeader "Content-Type" "text/html; charset=utf-8"
- let Identity (render, a) = runHtmlT x
- lazyBytes (toLazyByteString (render mempty))
- return a
+ lazyBytes (renderBS x)
{-# INLINE lucid #-}
-- | Like 'lucid', but for @HtmlT IO@.
-lucidIO :: MonadIO m => HtmlT IO a -> ActionCtxT cxt m a
+lucidIO :: MonadIO m => HtmlT IO a -> ActionCtxT cxt m b
lucidIO x = do
setHeader "Content-Type" "text/html; charset=utf-8"
- (render, a) <- liftIO (runHtmlT x)
- lazyBytes (toLazyByteString (render mempty))
- return a
+ lazyBytes =<< liftIO (renderBST x)
{-# INLINE lucidIO #-}
-- | Like 'lucid', but for arbitrary monads. Might require some additional
-- boilerplate.
-lucidT :: MonadIO m => HtmlT m a -> ActionCtxT cxt m a
+lucidT :: MonadIO m => HtmlT m a -> ActionCtxT cxt m b
lucidT x = do
setHeader "Content-Type" "text/html; charset=utf-8"
- (render, a) <- lift (runHtmlT x)
- lazyBytes (toLazyByteString (render mempty))
- return a
+ lazyBytes =<< lift (renderBST x)
{-# INLINE lucidT #-}
1
0
Hello community,
here is the log from the commit of package ghc-HaTeX for openSUSE:Factory checked in at 2017-08-31 20:49:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-HaTeX (Old)
and /work/SRC/openSUSE:Factory/.ghc-HaTeX.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-HaTeX"
Thu Aug 31 20:49:59 2017 rev:4 rq:513188 version:3.17.3.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-HaTeX/ghc-HaTeX.changes 2017-06-04 01:51:23.339744489 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-HaTeX.new/ghc-HaTeX.changes 2017-08-31 20:49:59.889900495 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:08:05 UTC 2017 - psimons(a)suse.com
+
+- Update to version 3.17.3.0.
+
+-------------------------------------------------------------------
Old:
----
HaTeX-3.17.2.0.tar.gz
New:
----
HaTeX-3.17.3.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-HaTeX.spec ++++++
--- /var/tmp/diff_new_pack.rlF6tZ/_old 2017-08-31 20:50:00.825769128 +0200
+++ /var/tmp/diff_new_pack.rlF6tZ/_new 2017-08-31 20:50:00.829768566 +0200
@@ -19,7 +19,7 @@
%global pkg_name HaTeX
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 3.17.2.0
+Version: 3.17.3.0
Release: 0
Summary: The Haskell LaTeX library
License: BSD-3-Clause
@@ -30,6 +30,7 @@
BuildRequires: ghc-QuickCheck-devel
BuildRequires: ghc-bytestring-devel
BuildRequires: ghc-containers-devel
+BuildRequires: ghc-hashable-devel
BuildRequires: ghc-matrix-devel
BuildRequires: ghc-parsec-devel
BuildRequires: ghc-rpm-macros
++++++ HaTeX-3.17.2.0.tar.gz -> HaTeX-3.17.3.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HaTeX-3.17.2.0/Examples/accents.hs new/HaTeX-3.17.3.0/Examples/accents.hs
--- old/HaTeX-3.17.2.0/Examples/accents.hs 1970-01-01 01:00:00.000000000 +0100
+++ new/HaTeX-3.17.3.0/Examples/accents.hs 2017-06-27 12:21:34.000000000 +0200
@@ -0,0 +1,27 @@
+
+{-# LANGUAGE OverloadedStrings #-}
+
+import Text.LaTeX
+import Text.LaTeX.Packages.Inputenc
+
+main :: IO ()
+main = renderFile "accents.tex" $ execLaTeXM accents
+
+accents :: LaTeXM ()
+accents = thePreamble >> document theBody
+
+thePreamble :: LaTeXM ()
+thePreamble = do
+ documentclass [] article
+ usepackage [utf8] inputenc
+ author "Daniel Díaz"
+ title "HaTeX and accents"
+
+theBody :: LaTeXM ()
+theBody = do
+ maketitle
+ flushleft "ÁáÉéÍíÓóÚú"
+ flushleft "ÀàÈèÌìÒòÙù"
+ flushleft "ÄäËëÏïÖöÜü"
+ flushleft "ÂâÊêÎîÔôÛû"
+ flushleft "ß"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HaTeX-3.17.2.0/HaTeX.cabal new/HaTeX-3.17.3.0/HaTeX.cabal
--- old/HaTeX-3.17.2.0/HaTeX.cabal 2017-04-30 13:59:35.000000000 +0200
+++ new/HaTeX-3.17.3.0/HaTeX.cabal 2017-07-16 18:18:10.000000000 +0200
@@ -1,5 +1,5 @@
Name: HaTeX
-Version: 3.17.2.0
+Version: 3.17.3.0
Author: Daniel Díaz
Category: LaTeX
Build-type: Simple
@@ -64,6 +64,7 @@
, text >= 0.11.2.3 && < 2
, transformers >= 0.2.2 && < 0.6
, containers >= 0.4.2.1 && < 0.6
+ , hashable >= 1.2 && < 1.3
, matrix
-- Testing
, QuickCheck
@@ -71,6 +72,8 @@
, parsec >= 3.1.6
-- Pretty-printing
, wl-pprint-extras >= 3.5
+ if impl(ghc < 7.6)
+ build-depends: ghc-prim
Exposed-modules:
Text.LaTeX
-- Base (Core of the library)
@@ -98,9 +101,12 @@
Text.LaTeX.Packages.Geometry
Text.LaTeX.Packages.Graphicx
Text.LaTeX.Packages.Hyperref
+ Text.LaTeX.Packages.LongTable
+ Text.LaTeX.Packages.LTableX
Text.LaTeX.Packages.Inputenc
Text.LaTeX.Packages.QRCode
Text.LaTeX.Packages.Relsize
+ Text.LaTeX.Packages.TabularX
-- Trees
Text.LaTeX.Packages.Trees
Text.LaTeX.Packages.Trees.Qtree
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HaTeX-3.17.2.0/README.md new/HaTeX-3.17.3.0/README.md
--- old/HaTeX-3.17.2.0/README.md 2016-06-10 18:05:15.000000000 +0200
+++ new/HaTeX-3.17.3.0/README.md 2017-07-07 18:34:13.000000000 +0200
@@ -73,8 +73,6 @@
within a LaTeX file.
* [TeX-my-math](https://github.com/leftaroundabout/Symbolic-math-HaTeX): Experimental library to ease the production
of mathematical expressions using HaTeX.
-* [blatex](http://hackage.haskell.org/package/blatex): Static site generator for blogs where posts are written
-in LaTeX.
## Travis automatic build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HaTeX-3.17.2.0/Text/LaTeX/Base/Class.hs new/HaTeX-3.17.3.0/Text/LaTeX/Base/Class.hs
--- old/HaTeX-3.17.2.0/Text/LaTeX/Base/Class.hs 2015-03-29 09:22:53.000000000 +0200
+++ new/HaTeX-3.17.3.0/Text/LaTeX/Base/Class.hs 2017-07-02 14:32:40.000000000 +0200
@@ -23,6 +23,8 @@
-- ** Others
, comm0
, comm1
+ , comm2
+ , comm3
, commS
, braces
) where
@@ -79,6 +81,22 @@
comm1 :: LaTeXC l => String -> l -> l
comm1 str = liftL $ \l -> TeXComm str [FixArg l]
+-- | A two parameter command generator using the name of the command.
+-- The parameters will be rendered as fixed arguments.
+--
+-- > comm2 str = liftL2 $ \l1 l2 -> TeXComm str [FixArg l1, FixArg l2]
+--
+comm2 :: LaTeXC l => String -> l -> l -> l
+comm2 str = liftL2 $ \l1 l2 -> TeXComm str [FixArg l1, FixArg l2]
+
+-- | A three parameter command generator using the name of the command.
+-- The parameters will be rendered as fixed arguments.
+--
+-- > comm3 str = liftL2 $ \l1 l2 -> TeXComm str [FixArg l1, FixArg l2]
+--
+comm3 :: LaTeXC l => String -> l -> l -> l -> l
+comm3 str = liftL3 $ \l1 l2 l3 -> TeXComm str [FixArg l1, FixArg l2, FixArg l3]
+
-- | Like 'comm0' but using 'TeXCommS', i.e. no \"{}\" will be inserted to protect
-- the command's end.
--
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HaTeX-3.17.2.0/Text/LaTeX/Base/Commands.hs new/HaTeX-3.17.3.0/Text/LaTeX/Base/Commands.hs
--- old/HaTeX-3.17.2.0/Text/LaTeX/Base/Commands.hs 2016-05-13 06:03:29.000000000 +0200
+++ new/HaTeX-3.17.3.0/Text/LaTeX/Base/Commands.hs 2017-07-02 14:32:40.000000000 +0200
@@ -191,6 +191,9 @@
, pageref
-- ** Tables
, tabular
+ , tabularnewline
+ , tabularnewlineSpc
+ , arraybackslash
, array
, (&)
, hline
@@ -199,6 +202,9 @@
-- *** Special tables
, matrixTabular
-- ** Others
+ , centering
+ , raggedleft
+ , raggedright
, footnote
, protect
, hyphenation
@@ -689,6 +695,15 @@
qts :: LaTeXC l => l -> l
qts l = between l (raw "``") (raw "''")
+centering :: LaTeXC l => l
+centering = comm0 "centering"
+
+raggedleft :: LaTeXC l => l
+raggedleft = comm0 "raggedleft"
+
+raggedright :: LaTeXC l => l
+raggedright = comm0 "raggedright"
+
footnote :: LaTeXC l => l -> l
footnote = liftL $ \l -> TeXComm "footnote" [FixArg l]
@@ -883,6 +898,21 @@
hline :: LaTeXC l => l
hline = commS "hline "
+-- | 'tabularnewline' ends a row in array or tabular environments. The
+-- '\' command has different meanings in different contexts. It can
+-- end a line in normal text, or it can end an array or tabular
+-- line. It may be preferrable to use 'newline' and in the first case,
+-- and 'tabularnewline' in the second.
+tabularnewline :: LaTeXC l => l
+tabularnewline = commS "tabularnewline "
+
+tabularnewlineSpc :: LaTeXC l => Measure -> l
+tabularnewlineSpc m = fromLaTeX $ TeXComm "tabularnewline" [OptArg $ rendertex m]
+
+-- | 'arraybackslash' resets the definition of '\' to 'tabularnewline'.
+arraybackslash :: LaTeXC l => l
+arraybackslash = commS "arraybackslash "
+
-- | Cell taking multiple columns.
multicolumn :: LaTeXC l => Int -> [TableSpec] -> l -> l
multicolumn n c = liftL $ \l -> TeXComm "multicolumn"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HaTeX-3.17.2.0/Text/LaTeX/Base/Parser.hs new/HaTeX-3.17.3.0/Text/LaTeX/Base/Parser.hs
--- old/HaTeX-3.17.2.0/Text/LaTeX/Base/Parser.hs 2016-05-14 16:55:18.000000000 +0200
+++ new/HaTeX-3.17.3.0/Text/LaTeX/Base/Parser.hs 2017-07-02 15:38:04.000000000 +0200
@@ -303,8 +303,13 @@
dolMath :: Parser LaTeX
dolMath = do
_ <- char '$'
- b <- mconcat <$> latexBlockParser `manyTill` char '$'
- return $ TeXMath Dollar b
+ choice
+ [ do _ <- char '$'
+ b <- mconcat <$> latexBlockParser `manyTill` try (string "$$")
+ return $ TeXMath DoubleDollar b
+ , do b <- mconcat <$> latexBlockParser `manyTill` char '$'
+ return $ TeXMath Dollar b
+ ]
math :: MathType -> String -> Parser LaTeX
math t eMath = do
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HaTeX-3.17.2.0/Text/LaTeX/Base/Pretty.hs new/HaTeX-3.17.3.0/Text/LaTeX/Base/Pretty.hs
--- old/HaTeX-3.17.2.0/Text/LaTeX/Base/Pretty.hs 2015-03-29 09:21:34.000000000 +0200
+++ new/HaTeX-3.17.3.0/Text/LaTeX/Base/Pretty.hs 2017-07-02 14:35:00.000000000 +0200
@@ -48,6 +48,7 @@
Parentheses -> ("\\(","\\)")
Square -> ("\\[","\\]")
Dollar -> ("$","$")
+ DoubleDollar -> ("$$","$$")
in text l <> docLaTeX b <> text r
docLaTeX (TeXLineBreak m b) =
text "\\\\" <> maybe mempty (brackets . text . unpack . render) m <> ( if b then text "*" else mempty )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HaTeX-3.17.2.0/Text/LaTeX/Base/Render.hs new/HaTeX-3.17.3.0/Text/LaTeX/Base/Render.hs
--- old/HaTeX-3.17.2.0/Text/LaTeX/Base/Render.hs 2015-03-18 22:54:27.000000000 +0100
+++ new/HaTeX-3.17.3.0/Text/LaTeX/Base/Render.hs 2017-07-02 14:34:23.000000000 +0200
@@ -124,6 +124,7 @@
<> "}"
render (TeXMath Dollar l) = "$" <> render l <> "$"
+ render (TeXMath DoubleDollar l) = "$$" <> render l <> "$$"
render (TeXMath Square l) = "\\[" <> render l <> "\\]"
render (TeXMath Parentheses l) = "\\(" <> render l <> "\\)"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HaTeX-3.17.2.0/Text/LaTeX/Base/Syntax.hs new/HaTeX-3.17.3.0/Text/LaTeX/Base/Syntax.hs
--- old/HaTeX-3.17.2.0/Text/LaTeX/Base/Syntax.hs 2017-04-30 13:54:08.000000000 +0200
+++ new/HaTeX-3.17.3.0/Text/LaTeX/Base/Syntax.hs 2017-07-16 18:11:08.000000000 +0200
@@ -38,8 +38,9 @@
import Data.Functor.Identity (runIdentity)
import Data.Data (Data)
import Data.Typeable
-import GHC.Generics (Generic)
import Test.QuickCheck
+import Data.Hashable
+import GHC.Generics (Generic)
-- | Measure units defined in LaTeX. Use 'CustomMeasure' to use commands like 'textwidth'.
-- For instance:
@@ -59,7 +60,7 @@
deriving (Data, Eq, Generic, Show, Typeable)
-- | Different types of syntax for mathematical expressions.
-data MathType = Parentheses | Square | Dollar
+data MathType = Parentheses | Square | Dollar | DoubleDollar
deriving (Data, Eq, Generic, Show, Typeable)
-- | Type of @LaTeX@ blocks.
@@ -277,7 +278,7 @@
arbitraryChar = elements $
['A'..'Z']
++ ['a'..'z']
- ++ "\n-+*/!\"$%&(){}^_.,:;'#@<>?\\ "
+ ++ "\n-+*/!\"().,:;'@<>? "
-- | Utility for the instance of 'LaTeX' to 'Arbitrary'.
-- We generate a short sequence of characters and
@@ -301,26 +302,31 @@
f <$> arbitrary
instance Arbitrary LaTeX where
- arbitrary = do
- -- We give more chances to 'TeXRaw'.
- -- This results in arbitrary 'LaTeX' values
- -- not getting too large.
- n <- choose (0,16 :: Int)
- case n of
- 0 -> pure TeXEmpty
- 1 -> do m <- choose (0,5)
- TeXComm <$> arbitraryName <*> vectorOf m arbitrary
- 2 -> TeXCommS <$> arbitraryName
- 3 -> do m <- choose (0,5)
- TeXEnv <$> arbitraryName <*> vectorOf m arbitrary <*> arbitrary
- 4 -> do m <- choose (0,2)
- let t = [Parentheses,Square,Dollar] !! m
- TeXMath <$> pure t <*> arbitrary
- 5 -> TeXLineBreak <$> arbitrary <*> arbitrary
- 6 -> TeXBraces <$> arbitrary
- 7 -> TeXComment <$> arbitraryRaw
- 8 -> TeXSeq <$> arbitrary <*> arbitrary
- _ -> TeXRaw <$> arbitraryRaw
+ arbitrary = arbitraryLaTeX False
+
+arbitraryLaTeX :: Bool -> Gen LaTeX
+arbitraryLaTeX inDollar = do
+ -- We give more chances to 'TeXRaw'.
+ -- This results in arbitrary 'LaTeX' values
+ -- not getting too large.
+ n <- choose (0,16 :: Int)
+ case n of
+ 0 -> if inDollar then arbitraryLaTeX True else pure TeXEmpty
+ 1 -> do m <- choose (0,5)
+ TeXComm <$> arbitraryName <*> vectorOf m arbitrary
+ 2 -> TeXCommS <$> arbitraryName
+ 3 -> do m <- choose (0,5)
+ TeXEnv <$> arbitraryName <*> vectorOf m arbitrary <*> arbitrary
+ 4 -> if inDollar
+ then arbitraryLaTeX True
+ else do do m <- choose (0,3)
+ let t = [Parentheses,Square,Dollar,DoubleDollar] !! m
+ TeXMath <$> pure t <*> arbitraryLaTeX (t == Dollar || t == DoubleDollar)
+ 5 -> TeXLineBreak <$> arbitrary <*> arbitrary
+ 6 -> TeXBraces <$> arbitrary
+ 7 -> TeXComment <$> arbitraryRaw
+ 8 -> TeXSeq <$> (if inDollar then arbitraryLaTeX True else arbitrary) <*> arbitrary
+ _ -> TeXRaw <$> arbitraryRaw
instance Arbitrary TeXArg where
arbitrary = do
@@ -336,3 +342,9 @@
5 -> do m <- choose (1,5)
MParArg <$> vectorOf m arbitrary
_ -> FixArg <$> arbitrary
+
+
+instance Hashable Measure
+instance Hashable MathType
+instance Hashable TeXArg
+instance Hashable LaTeX
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HaTeX-3.17.2.0/Text/LaTeX/Base/Types.hs new/HaTeX-3.17.3.0/Text/LaTeX/Base/Types.hs
--- old/HaTeX-3.17.2.0/Text/LaTeX/Base/Types.hs 2015-03-18 22:54:27.000000000 +0100
+++ new/HaTeX-3.17.3.0/Text/LaTeX/Base/Types.hs 2017-07-02 14:32:40.000000000 +0200
@@ -66,6 +66,9 @@
| ParColumnTop LaTeX -- ^ Paragraph column with text vertically aligned at the top.
| ParColumnMid LaTeX -- ^ Paragraph column with text vertically aligned at the middle. Requires 'array' package.
| ParColumnBot LaTeX -- ^ Paragraph column with text vertically aligned at the bottom. Requires 'array' package.
+ | NameColumn String -- ^ User defined column. Requires 'array' package.
+ | BeforeColumn LaTeX -- ^ Can be used before a 'LeftColumn', 'CenterColumn', 'RightColumn', 'ParColumnTop', 'ParColumnMid' or a 'ParColumnBot' specification. Inserts the code directly in front of the entry of the column. Requires 'array' package.
+ | AfterColumn LaTeX -- ^ Can be used after a 'LeftColumn', 'CenterColumn', 'RightColumn', 'ParColumnTop', 'ParColumnMid' or a 'ParColumnBot' specification. Inserts the code directly in front of the entry of the column. Requires 'array' package.
| VerticalLine -- ^ Vertical line between two columns.
| DVerticalLine -- ^ Double vertical line between two columns.
| Separator LaTeX -- ^ Column separator. Requires 'array' package.
@@ -78,6 +81,9 @@
render (ParColumnTop l) = "p" <> render (FixArg l)
render (ParColumnMid l) = "m" <> render (FixArg l)
render (ParColumnBot l) = "b" <> render (FixArg l)
+ render (NameColumn n) = fromString n
+ render (BeforeColumn l) = ">{" <> render l <> "}"
+ render (AfterColumn l) = "<{" <> render l <> "}"
render VerticalLine = "|"
render DVerticalLine = "||"
render (Separator l) = "@" <> render (FixArg l)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HaTeX-3.17.2.0/Text/LaTeX/Packages/AMSMath.hs new/HaTeX-3.17.3.0/Text/LaTeX/Packages/AMSMath.hs
--- old/HaTeX-3.17.2.0/Text/LaTeX/Packages/AMSMath.hs 2016-11-08 06:03:40.000000000 +0100
+++ new/HaTeX-3.17.3.0/Text/LaTeX/Packages/AMSMath.hs 2017-07-02 15:23:40.000000000 +0200
@@ -1,5 +1,10 @@
{-# LANGUAGE CPP, OverloadedStrings, TypeFamilies #-}
+#if __GLASGOW_HASKELL__ >= 801
+{-# OPTIONS_GHC -Wno-orphans #-}
+#else
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+#endif
-- | \AMSMath\ support. Also numeric instances ('Num', 'Fractional' and 'Floating') for 'LaTeX' and 'LaTeXT'.
module Text.LaTeX.Packages.AMSMath
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HaTeX-3.17.2.0/Text/LaTeX/Packages/LTableX.hs new/HaTeX-3.17.3.0/Text/LaTeX/Packages/LTableX.hs
--- old/HaTeX-3.17.2.0/Text/LaTeX/Packages/LTableX.hs 1970-01-01 01:00:00.000000000 +0100
+++ new/HaTeX-3.17.3.0/Text/LaTeX/Packages/LTableX.hs 2017-07-02 14:32:40.000000000 +0200
@@ -0,0 +1,39 @@
+
+{-# LANGUAGE OverloadedStrings #-}
+
+module Text.LaTeX.Packages.LTableX
+ ( -- * ltablex package
+ ltablex
+ -- * ltablex commands
+ , keepXColumns
+ , convertXColumns
+ , module Text.LaTeX.Packages.TabularX
+ , module Text.LaTeX.Packages.LongTable
+ ) where
+
+import Text.LaTeX.Base.Syntax (LaTeX(TeXComm))
+import Text.LaTeX.Base.Class (LaTeXC, fromLaTeX)
+import Text.LaTeX.Base.Types (PackageName)
+import Text.LaTeX.Packages.TabularX (tabularx)
+import Text.LaTeX.Packages.LongTable (endfirsthead, endhead, endfoot, endlastfoot)
+
+-- | ltablex package. Use it to import it like this:
+--
+-- > usepackage [] ltablex
+ltablex :: PackageName
+ltablex = "ltablex"
+
+keepXColumns :: LaTeXC l => l
+keepXColumns = fromLaTeX $ TeXComm "keepXColumns" []
+
+-- | Treet the specified width as the maximum allowed, not the exact width of the table.
+--
+-- ltablex has added a feature that treats the X columns like ‘l’
+-- columns if the table contents would allow that to happen without
+-- exceeding the specified width of the table. In other words, the
+-- specified width is treated as the maximum allowed and not the exact
+-- width of the table. This feature is the default but can be disabled
+-- (or enabled) with \keepXColumns (or \convertXColumns).
+
+convertXColumns :: LaTeXC l => l
+convertXColumns = fromLaTeX $ TeXComm "convertXColumns" []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HaTeX-3.17.2.0/Text/LaTeX/Packages/LongTable.hs new/HaTeX-3.17.3.0/Text/LaTeX/Packages/LongTable.hs
--- old/HaTeX-3.17.2.0/Text/LaTeX/Packages/LongTable.hs 1970-01-01 01:00:00.000000000 +0100
+++ new/HaTeX-3.17.3.0/Text/LaTeX/Packages/LongTable.hs 2017-07-02 14:32:40.000000000 +0200
@@ -0,0 +1,67 @@
+
+{-# LANGUAGE OverloadedStrings #-}
+
+module Text.LaTeX.Packages.LongTable
+ ( -- * longtable package
+ longtablep
+ -- * longtable commands
+ , longtable
+ , endfirsthead
+ , endhead
+ , endfoot
+ , endlastfoot
+ -- * Package Options
+ ) where
+
+import Text.LaTeX.Base.Syntax (LaTeX(TeXEnv, TeXRaw, TeXComm), TeXArg(FixArg, OptArg))
+import Text.LaTeX.Base.Class (LaTeXC, fromLaTeX, liftL)
+import Text.LaTeX.Base.Render (render, renderAppend)
+import Text.LaTeX.Base.Types (PackageName, Pos, TableSpec)
+
+-- | longtable package. Use it to import it like this:
+--
+-- > usepackage [] longtable
+longtablep :: PackageName
+longtablep = "longtable"
+
+
+-- | The 'longtable' environment can be used to typeset multi-page tables.
+longtable :: LaTeXC l =>
+ Maybe Pos -- ^ This optional parameter can be used to specify the vertical position of the table.
+ -- Defaulted to 'Center'.
+ -> [TableSpec] -- ^ Table specification of columns and vertical lines.
+ -> l -- ^ Table content. See '&', 'lnbk', 'hline' and 'cline'.
+ -> l -- ^ Resulting table syntax.
+longtable Nothing ts = liftL $ TeXEnv "longtable" [ FixArg $ TeXRaw $ renderAppend ts ]
+longtable (Just p) ts = liftL $ TeXEnv "longtable" [ OptArg $ TeXRaw $ render p , FixArg $ TeXRaw $ renderAppend ts ]
+
+-- | End the first head.
+--
+-- Everything above this command will appear at the beginning of the
+-- table, in the first page.
+endfirsthead :: LaTeXC l => l
+endfirsthead = fromLaTeX $ TeXComm "endfirsthead" []
+
+-- | End the head.
+--
+-- Whatever you put before this command and below \endfirsthead will
+-- be displayed at the top of the table in every page except the first
+-- one.
+endhead :: LaTeXC l => l
+endhead = fromLaTeX $ TeXComm "endhead" []
+
+-- | End the foot.
+--
+-- Similar to \endhead, what you put after \endhead and before this
+-- command will appear at the bottom of the table in every page except
+-- the last one.
+endfoot :: LaTeXC l => l
+endfoot = fromLaTeX $ TeXComm "endfoot" []
+
+-- | End the last foot.
+--
+-- Similar to \endfisthead. The elements after \endfoot and before
+-- this command will be displayed at the bottom of the table but only
+-- in the last page where the table appears.
+endlastfoot :: LaTeXC l => l
+endlastfoot = fromLaTeX $ TeXComm "endlastfoot" []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HaTeX-3.17.2.0/Text/LaTeX/Packages/TabularX.hs new/HaTeX-3.17.3.0/Text/LaTeX/Packages/TabularX.hs
--- old/HaTeX-3.17.2.0/Text/LaTeX/Packages/TabularX.hs 1970-01-01 01:00:00.000000000 +0100
+++ new/HaTeX-3.17.3.0/Text/LaTeX/Packages/TabularX.hs 2017-07-02 14:32:40.000000000 +0200
@@ -0,0 +1,44 @@
+
+{-# LANGUAGE OverloadedStrings #-}
+
+module Text.LaTeX.Packages.TabularX
+ ( -- * tabularx package
+ tabularxp
+ -- * tabularx commands
+ , tabularx
+ ) where
+
+import Text.LaTeX.Base.Syntax (LaTeX(TeXEnv, TeXRaw), TeXArg(FixArg, OptArg))
+import Text.LaTeX.Base.Class (LaTeXC, liftL)
+import Text.LaTeX.Base.Render (render, renderAppend)
+import Text.LaTeX.Base.Types (PackageName, Pos, TableSpec, Measure)
+
+-- | tabularx package. Use it to import it like this:
+--
+-- > usepackage [] tabularxp
+tabularxp :: PackageName
+tabularxp = "tabularx"
+
+-- | The 'tabularx' environment takes the same arguments as tabular*,
+-- but modifies the widths of certain columns, rather than the inter
+-- column space, to set a table with the requested total width. The
+-- columns that may stretch are marked with the new token X in the
+-- preamble argument.
+--
+tabularx :: LaTeXC l =>
+ Measure -- ^ Width of the whole tabular.
+ -> Maybe Pos -- ^ This optional parameter can be used to specify the vertical position of the table.
+ -- Defaulted to 'Center'.
+ -> [TableSpec] -- ^ Table specification of columns and vertical lines.
+ -> l -- ^ Table content. See '&', 'lnbk', 'hline' and 'cline'.
+ -> l -- ^ Resulting table syntax.
+tabularx width maybePos ts =
+ liftL $ TeXEnv "tabularx" args
+ where
+ width' = FixArg $ TeXRaw $ render width
+ ts' = FixArg $ TeXRaw $ renderAppend ts
+ args = case maybePos of
+ Nothing -> [width', ts']
+ Just p -> [width', p', ts']
+ where
+ p' = OptArg $ TeXRaw $ render p
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HaTeX-3.17.2.0/Text/LaTeX/Packages/Trees/Qtree.hs new/HaTeX-3.17.3.0/Text/LaTeX/Packages/Trees/Qtree.hs
--- old/HaTeX-3.17.2.0/Text/LaTeX/Packages/Trees/Qtree.hs 2015-03-18 22:54:27.000000000 +0100
+++ new/HaTeX-3.17.3.0/Text/LaTeX/Packages/Trees/Qtree.hs 2017-07-02 15:23:34.000000000 +0200
@@ -1,5 +1,10 @@
-{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE OverloadedStrings, CPP #-}
+#if __GLASGOW_HASKELL__ >= 801
+{-# OPTIONS_GHC -Wno-orphans #-}
+#else
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+#endif
-- | Tree interface using the @qtree@ package.
-- An example of usage is provided in the /examples/ directory of
1
0
Hello community,
here is the log from the commit of package ghc-HDBC-session for openSUSE:Factory checked in at 2017-08-31 20:49:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-HDBC-session (Old)
and /work/SRC/openSUSE:Factory/.ghc-HDBC-session.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-HDBC-session"
Thu Aug 31 20:49:57 2017 rev:3 rq:513187 version:0.1.1.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-HDBC-session/ghc-HDBC-session.changes 2016-10-22 13:23:32.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-HDBC-session.new/ghc-HDBC-session.changes 2017-08-31 20:49:58.758059371 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:07:08 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.1.1.1.
+
+-------------------------------------------------------------------
Old:
----
HDBC-session-0.1.1.0.tar.gz
New:
----
HDBC-session-0.1.1.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-HDBC-session.spec ++++++
--- /var/tmp/diff_new_pack.1EzteC/_old 2017-08-31 20:49:59.573944845 +0200
+++ /var/tmp/diff_new_pack.1EzteC/_new 2017-08-31 20:49:59.577944285 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ghc-HDBC-session
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# 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
@@ -18,7 +18,7 @@
%global pkg_name HDBC-session
Name: ghc-%{pkg_name}
-Version: 0.1.1.0
+Version: 0.1.1.1
Release: 0
Summary: Bracketed connection for HDBC
License: BSD-3-Clause
++++++ HDBC-session-0.1.1.0.tar.gz -> HDBC-session-0.1.1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HDBC-session-0.1.1.0/HDBC-session.cabal new/HDBC-session-0.1.1.1/HDBC-session.cabal
--- old/HDBC-session-0.1.1.0/HDBC-session.cabal 2016-09-09 08:21:41.000000000 +0200
+++ new/HDBC-session-0.1.1.1/HDBC-session.cabal 2017-07-17 02:51:56.000000000 +0200
@@ -1,5 +1,5 @@
name: HDBC-session
-version: 0.1.1.0
+version: 0.1.1.1
synopsis: Bracketed connection for HDBC
description: This package contains a base bracketed function
to call close correctly against opend DB connection.
@@ -8,11 +8,12 @@
license-file: LICENSE
author: Kei Hibino
maintainer: ex8k.hibino(a)gmail.com
-copyright: Copyright (c) 2013-2016 Kei Hibino
+copyright: Copyright (c) 2013-2017 Kei Hibino
category: Database
build-type: Simple
cabal-version: >=1.10
-tested-with: GHC == 8.0.1
+tested-with: GHC == 8.2.1
+ , GHC == 8.0.1, GHC == 8.0.2
, GHC == 7.10.1, GHC == 7.10.2, GHC == 7.10.3
, GHC == 7.8.1, GHC == 7.8.2, GHC == 7.8.3, GHC == 7.8.4
, GHC == 7.6.1, GHC == 7.6.2, GHC == 7.6.3
1
0
Hello community,
here is the log from the commit of package ghc-Glob for openSUSE:Factory checked in at 2017-08-31 20:49:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-Glob (Old)
and /work/SRC/openSUSE:Factory/.ghc-Glob.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-Glob"
Thu Aug 31 20:49:54 2017 rev:9 rq:513186 version:0.8.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-Glob/ghc-Glob.changes 2017-02-03 17:37:43.580486957 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-Glob.new/ghc-Glob.changes 2017-08-31 20:49:55.622499508 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:08:13 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.8.0.
+
+-------------------------------------------------------------------
Old:
----
Glob-0.7.14.tar.gz
New:
----
Glob-0.8.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-Glob.spec ++++++
--- /var/tmp/diff_new_pack.vWB9Et/_old 2017-08-31 20:49:56.750341194 +0200
+++ /var/tmp/diff_new_pack.vWB9Et/_new 2017-08-31 20:49:56.770338386 +0200
@@ -19,7 +19,7 @@
%global pkg_name Glob
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.7.14
+Version: 0.8.0
Release: 0
Summary: Globbing library
License: BSD-3-Clause
++++++ Glob-0.7.14.tar.gz -> Glob-0.8.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Glob-0.7.14/CHANGELOG.txt new/Glob-0.8.0/CHANGELOG.txt
--- old/Glob-0.7.14/CHANGELOG.txt 2016-12-29 18:14:26.000000000 +0100
+++ new/Glob-0.8.0/CHANGELOG.txt 2017-05-27 11:33:57.000000000 +0200
@@ -1,3 +1,6 @@
+0.8.0, 2017-05-27:
+ Added instance IsString Pattern, thanks to Mitsutoshi Aoe.
+
0.7.14, 2016-12-29:
Update dependencies to allow directory-1.3.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Glob-0.7.14/Glob.cabal new/Glob-0.8.0/Glob.cabal
--- old/Glob-0.7.14/Glob.cabal 2016-12-29 18:14:26.000000000 +0100
+++ new/Glob-0.8.0/Glob.cabal 2017-05-27 11:33:57.000000000 +0200
@@ -1,7 +1,7 @@
Cabal-Version: >= 1.9.2
Name: Glob
-Version: 0.7.14
+Version: 0.8.0
Homepage: http://iki.fi/matti.niemenmaa/glob/
Synopsis: Globbing library
Category: System
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Glob-0.7.14/System/FilePath/Glob/Base.hs new/Glob-0.8.0/System/FilePath/Glob/Base.hs
--- old/Glob-0.7.14/System/FilePath/Glob/Base.hs 2016-12-29 18:14:26.000000000 +0100
+++ new/Glob-0.8.0/System/FilePath/Glob/Base.hs 2017-05-27 11:33:57.000000000 +0200
@@ -30,6 +30,7 @@
import Data.Maybe (fromMaybe)
import Data.Monoid (Monoid, mappend, mempty, mconcat)
import Data.Semigroup (Semigroup, (<>), sconcat, stimes)
+import Data.String (IsString(fromString))
import System.FilePath ( pathSeparator, extSeparator
, isExtSeparator, isPathSeparator
)
@@ -163,6 +164,9 @@
mappend = (<>)
mconcat = optimize . Pattern . concatMap unPattern
+instance IsString Pattern where
+ fromString = compile
+
-- |Options which can be passed to the 'tryCompileWith' or 'compileWith'
-- functions: with these you can selectively toggle certain features at compile
-- time.
1
0
Hello community,
here is the log from the commit of package doctest for openSUSE:Factory checked in at 2017-08-31 20:49:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/doctest (Old)
and /work/SRC/openSUSE:Factory/.doctest.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "doctest"
Thu Aug 31 20:49:52 2017 rev:5 rq:513183 version:0.11.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/doctest/doctest.changes 2017-07-05 23:57:53.852803823 +0200
+++ /work/SRC/openSUSE:Factory/.doctest.new/doctest.changes 2017-08-31 20:49:52.510936276 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:07:54 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.11.4.
+
+-------------------------------------------------------------------
Old:
----
doctest-0.11.3.tar.gz
New:
----
doctest-0.11.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ doctest.spec ++++++
--- /var/tmp/diff_new_pack.rJN2lc/_old 2017-08-31 20:49:53.290826803 +0200
+++ /var/tmp/diff_new_pack.rJN2lc/_new 2017-08-31 20:49:53.298825680 +0200
@@ -19,7 +19,7 @@
%global pkg_name doctest
%bcond_with tests
Name: %{pkg_name}
-Version: 0.11.3
+Version: 0.11.4
Release: 0
Summary: Test interactive Haskell examples
License: MIT
++++++ doctest-0.11.3.tar.gz -> doctest-0.11.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doctest-0.11.3/doctest.cabal new/doctest-0.11.4/doctest.cabal
--- old/doctest-0.11.3/doctest.cabal 2017-06-15 10:12:28.000000000 +0200
+++ new/doctest-0.11.4/doctest.cabal 2017-07-23 06:03:31.000000000 +0200
@@ -1,5 +1,5 @@
name: doctest
-version: 0.11.3
+version: 0.11.4
synopsis: Test interactive Haskell examples
description: The doctest program checks examples in source code comments.
It is modeled after doctest for Python
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doctest-0.11.3/src/Options.hs new/doctest-0.11.4/src/Options.hs
--- old/doctest-0.11.3/src/Options.hs 2017-06-15 10:12:28.000000000 +0200
+++ new/doctest-0.11.4/src/Options.hs 2017-07-23 06:03:31.000000000 +0200
@@ -1,4 +1,5 @@
{-# LANGUAGE CPP #-}
+{-# LANGUAGE DeriveFunctor #-}
module Options (
Result(..)
, Run(..)
@@ -24,12 +25,13 @@
usage :: String
usage = unlines [
"Usage:"
- , " doctest [ --no-magic | GHC OPTION | MODULE ]..."
+ , " doctest [ --fast | --no-magic | GHC OPTION | MODULE ]..."
, " doctest --help"
, " doctest --version"
, " doctest --info"
, ""
, "Options:"
+ , " --fast disable :reload between example groups"
, " --help display this help and exit"
, " --version output version information and exit"
, " --info output machine-readable version information and exit"
@@ -55,8 +57,8 @@
, ("ghc", ghc)
]) ++ "\n]\n"
-data Result = Output String | Result Run
- deriving (Eq, Show)
+data Result a = Output String | Result a
+ deriving (Eq, Show, Functor)
type Warning = String
@@ -64,20 +66,26 @@
runWarnings :: [Warning]
, runOptions :: [String]
, runMagicMode :: Bool
+, runFastMode :: Bool
} deriving (Eq, Show)
-parseOptions :: [String] -> Result
+parseOptions :: [String] -> Result Run
parseOptions args
| "--help" `elem` args = Output usage
| "--info" `elem` args = Output info
| "--version" `elem` args = Output versionInfo
- | otherwise = case stripOptGhc <$> stripNoMagic args of
- (magicMode, (warning, xs)) -> Result (Run (maybeToList warning) xs magicMode)
+ | otherwise = case fmap stripOptGhc . stripFast <$> stripNoMagic args of
+ (magicMode, (fastMode, (warning, xs))) ->
+ Result (Run (maybeToList warning) xs magicMode fastMode)
stripNoMagic :: [String] -> (Bool, [String])
-stripNoMagic args = (noMagic `notElem` args, filter (/= noMagic) args)
- where
- noMagic = "--no-magic"
+stripNoMagic = stripFlag False "--no-magic"
+
+stripFast :: [String] -> (Bool, [String])
+stripFast = stripFlag True "--fast"
+
+stripFlag :: Bool -> String -> [String] -> (Bool, [String])
+stripFlag enableIt flag args = ((flag `elem` args) == enableIt, filter (/= flag) args)
stripOptGhc :: [String] -> (Maybe Warning, [String])
stripOptGhc = go
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doctest-0.11.3/src/Run.hs new/doctest-0.11.4/src/Run.hs
--- old/doctest-0.11.3/src/Run.hs 2017-06-15 10:12:28.000000000 +0200
+++ new/doctest-0.11.4/src/Run.hs 2017-07-23 06:03:31.000000000 +0200
@@ -2,7 +2,7 @@
module Run (
doctest
#ifdef TEST
-, doctest_
+, doctestWithFastMode
, Summary
, expandDirs
#endif
@@ -43,7 +43,7 @@
doctest :: [String] -> IO ()
doctest args0 = case parseOptions args0 of
Output s -> putStr s
- Result (Run warnings args_ magicMode) -> do
+ Result (Run warnings args_ magicMode fastMode) -> do
mapM_ (hPutStrLn stderr) warnings
hFlush stderr
@@ -60,7 +60,7 @@
addDistArgs <- getAddDistArgs
return (addDistArgs $ packageDBArgs ++ expandedArgs)
- r <- doctest_ args `E.catch` \e -> do
+ r <- doctestWithFastMode fastMode args `E.catch` \e -> do
case fromException e of
Just (UsageError err) -> do
hPutStrLn stderr ("doctest: " ++ err)
@@ -123,11 +123,11 @@
isSuccess :: Summary -> Bool
isSuccess s = sErrors s == 0 && sFailures s == 0
-doctest_ :: [String] -> IO Summary
-doctest_ args = do
+doctestWithFastMode :: Bool -> [String] -> IO Summary
+doctestWithFastMode fastMode args = do
-- get examples from Haddock comments
modules <- getDocTests args
Interpreter.withInterpreter args $ \repl -> withCP65001 $ do
- runModules repl modules
+ runModules fastMode repl modules
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doctest-0.11.3/src/Runner.hs new/doctest-0.11.4/src/Runner.hs
--- old/doctest-0.11.3/src/Runner.hs 2017-06-15 10:12:28.000000000 +0200
+++ new/doctest-0.11.4/src/Runner.hs 2017-07-23 06:03:31.000000000 +0200
@@ -52,11 +52,11 @@
(Summary x1 x2 x3 x4) `mappend` (Summary y1 y2 y3 y4) = Summary (x1 + y1) (x2 + y2) (x3 + y3) (x4 + y4)
-- | Run all examples from a list of modules.
-runModules :: Interpreter -> [Module [Located DocTest]] -> IO Summary
-runModules repl modules = do
+runModules :: Bool -> Interpreter -> [Module [Located DocTest]] -> IO Summary
+runModules fastMode repl modules = do
isInteractive <- hIsTerminalDevice stderr
ReportState _ _ s <- (`execStateT` ReportState 0 isInteractive mempty {sExamples = c}) $ do
- forM_ modules $ runModule repl
+ forM_ modules $ runModule fastMode repl
-- report final summary
gets (show . reportStateSummary) >>= report
@@ -107,8 +107,8 @@
liftIO (hPutStr stderr str)
-- | Run all examples from given module.
-runModule :: Interpreter -> Module [Located DocTest] -> Report ()
-runModule repl (Module module_ setup examples) = do
+runModule :: Bool -> Interpreter -> Module [Located DocTest] -> Report ()
+runModule fastMode repl (Module module_ setup examples) = do
Summary _ _ e0 f0 <- gets reportStateSummary
@@ -124,9 +124,11 @@
where
reload :: IO ()
reload = do
- -- NOTE: It is important to do the :reload first! There was some odd bug
- -- with a previous version of GHC (7.4.1?).
- void $ Interpreter.safeEval repl ":reload"
+ unless fastMode $
+ -- NOTE: It is important to do the :reload first! See
+ -- https://ghc.haskell.org/trac/ghc/ticket/5904, which results in a
+ -- panic on GHC 7.4.1 if you do the :reload second.
+ void $ Interpreter.safeEval repl ":reload"
void $ Interpreter.safeEval repl $ ":m *" ++ module_
setup_ :: IO ()
1
0
Hello community,
here is the log from the commit of package ghc-unique for openSUSE:Factory checked in at 2017-08-31 20:49:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-unique (Old)
and /work/SRC/openSUSE:Factory/.ghc-unique.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-unique"
Thu Aug 31 20:49:48 2017 rev:1 rq:514583 version:0
Changes:
--------
New Changes file:
--- /dev/null 2017-07-20 07:30:00.335470106 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-unique.new/ghc-unique.changes 2017-08-31 20:49:50.575207993 +0200
@@ -0,0 +1,10 @@
+-------------------------------------------------------------------
+Thu Aug 3 15:38:38 UTC 2017 - psimons(a)suse.com
+
+- Updated with latest spec-cleaner version 0.9.8-8-geadfbbf.
+
+-------------------------------------------------------------------
+Wed Apr 19 13:32:41 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0 revision 1 with cabal2obs.
+
New:
----
ghc-unique.changes
ghc-unique.spec
unique-0.tar.gz
unique.cabal
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-unique.spec ++++++
#
# spec file for package ghc-unique
#
# 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 unique
Name: ghc-%{pkg_name}
Version: 0
Release: 0
Summary: Fully concurrent unique identifiers
License: BSD-2-Clause
Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal…
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-hashable-devel
BuildRequires: ghc-rpm-macros
%description
Fully concurrent unique identifiers.
%package devel
Summary: Haskell %{pkg_name} library development files
Group: Development/Libraries/Other
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}
cp -p %{SOURCE1} %{pkg_name}.cabal
%build
%ghc_lib_build
%install
%ghc_lib_install
%post devel
%ghc_pkg_recache
%postun devel
%ghc_pkg_recache
%files -f %{name}.files
%doc LICENSE
%files devel -f %{name}-devel.files
%doc CHANGELOG.markdown README.markdown
%changelog
++++++ unique.cabal ++++++
name: unique
category: Concurrency, Data
version: 0
x-revision: 1
license: BSD3
cabal-version: >= 1.10
license-file: LICENSE
author: Edward A. Kmett
maintainer: Edward A. Kmett <ekmett(a)gmail.com>
stability: experimental
homepage: http://github.com/ekmett/unique/
bug-reports: http://github.com/ekmett/unique/issues
copyright: Copyright (C) 2015 Edward A. Kmett
synopsis: Fully concurrent unique identifiers
description: Fully concurrent unique identifiers
build-type: Simple
extra-source-files: .travis.yml CHANGELOG.markdown README.markdown stack.yaml
source-repository head
type: git
location: git://github.com/ekmett/unique.git
library
default-language: Haskell2010
hs-source-dirs: src
other-extensions: CPP, MagicHash, UnboxedTuples
exposed-modules: Control.Concurrent.Unique
ghc-options: -Wall
build-depends:
base >= 4.5 && < 5,
hashable >= 1.1 && < 1.3,
ghc-prim
1
0
Hello community,
here is the log from the commit of package ghc-taggy for openSUSE:Factory checked in at 2017-08-31 20:49:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-taggy (Old)
and /work/SRC/openSUSE:Factory/.ghc-taggy.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-taggy"
Thu Aug 31 20:49:45 2017 rev:2 rq:513722 version:0.2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-taggy/ghc-taggy.changes 2017-03-24 01:58:23.785566250 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-taggy.new/ghc-taggy.changes 2017-08-31 20:49:46.447787356 +0200
@@ -1,0 +2,6 @@
+Tue Aug 1 15:14:00 UTC 2017 - psimons(a)suse.com
+
+- Apply "fix-lts-9-build.patch" from upstream to add support for
+ recent versions of blaze-markup.
+
+-------------------------------------------------------------------
Old:
----
1.cabal
New:
----
fix-lts-9-build.patch
taggy.cabal
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-taggy.spec ++++++
--- /var/tmp/diff_new_pack.aivjT4/_old 2017-08-31 20:49:47.883585814 +0200
+++ /var/tmp/diff_new_pack.aivjT4/_new 2017-08-31 20:49:47.911581884 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ghc-taggy
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# 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
@@ -26,7 +26,8 @@
Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
-Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal
+Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal…
+Patch1: fix-lts-9-build.patch
BuildRequires: chrpath
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-attoparsec-devel
@@ -89,13 +90,14 @@
%prep
%setup -q -n %{pkg_name}-%{version}
cp -p %{SOURCE1} %{pkg_name}.cabal
+%patch1 -p1
%build
%ghc_lib_build
%install
%ghc_lib_install
-%ghc_fix_dynamic_rpath %{pkg_name}
+%ghc_fix_rpath %{pkg_name}-%{version}
%check
%cabal_test
++++++ fix-lts-9-build.patch ++++++
>From 5456c2fa4d377f7802ec5df3d5f50c4ccab2e8ed Mon Sep 17 00:00:00 2001
From: vi <vi(a)computational.law>
Date: Fri, 28 Jul 2017 19:00:23 +0200
Subject: [PATCH] Build compatability with blaze-markup 0.8.0.0.
Resolves #19.
Resolves #20.
---
src/Text/Taggy/Renderer.hs | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/Text/Taggy/Renderer.hs b/src/Text/Taggy/Renderer.hs
index d1d3486..a931905 100644
--- a/src/Text/Taggy/Renderer.hs
+++ b/src/Text/Taggy/Renderer.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE LambdaCase, RecordWildCards, FlexibleInstances, UndecidableInstances, OverloadedStrings #-}
+{-# LANGUAGE CPP, LambdaCase, RecordWildCards, FlexibleInstances, UndecidableInstances, OverloadedStrings #-}
-- |
-- Module : Text.Taggy.Renderer
-- Copyright : (c) 2014 Alp Mestanogullari, Vikram Verma
@@ -33,7 +33,13 @@ class AsMarkup a where
-- | A 'Node' is convertible to 'Markup'
instance AsMarkup Node where
toMarkup convertEntities = \case
- NodeContent text -> Content $ if convertEntities then Text text else PreEscaped (Text text)
+#if MIN_VERSION_blaze_markup(0,8,0)
+ NodeContent text -> flip Content () $
+#else
+ NodeContent text -> Content $
+#endif
+ if convertEntities then Text text else PreEscaped (Text text)
+
NodeElement elmt -> toMarkup convertEntities elmt
-- | An 'Element' is convertible to 'Markup'
++++++ taggy.cabal ++++++
name: taggy
version: 0.2.0
x-revision: 1
synopsis: Efficient and simple HTML/XML parsing library
description:
/taggy/ is a simple package for parsing HTML (and should work with XML)
written on top of the <http://hackage.haskell.org/package/attoparsec attoparsec>
library, which makes it one of the most efficient (space and time consumption wise)
on hackage.
.
This is the root module of /taggy/. It reexports everything
from the package. See each module's docs for details about
the functions and types involved in /taggy/.
.
While we've been testing the parser on /many/ pages, it may still
be a bit rough around the edges. Let us know on <http://github.com/alpmestan/taggy/issues github>
if you have any problem.
.
If you like to look at your HTML through
various optical instruments, feel free to take a look at
the companion <http://hackage.haskell.org/package/taggy-lens taggy-lens>
package we've put up together. It makes HTML parsing a piece of cake.
.
If you want to parse a document as list of tags
and go through it as some kind of stream by just picking
what you need, head to "Text.Taggy.Parser" and take
a look at 'Text.Taggy.Parser.taggyWith' and
'Text.Taggy.Parser.run'.
.
If you want to parse the document as a DOM tree and
traverse it to find the information you need,
use 'Text.Taggy.DOM.parseDOM'. This is especially useful
when used in conjunction with <http://hackage.haskell.org/package/taggy-lens taggy-lens>.
.
If you build some HTML manually
or just transform some existing DOM tree
and want to turn it into a 'Data.Text.Lazy.Text'
head to "Text.Taggy.Renderer" and look at 'Text.Taggy.Renderer.render'.
homepage: http://github.com/alpmestan/taggy
license: BSD3
license-file: LICENSE
author: Alp Mestanogullari, Vikram Verma
maintainer: alpmestan(a)gmail.com
copyright: 2014 Alp Mestanogullari, Vikram Verma
category: Text, Web
build-type: Simple
extra-source-files: html_files/*.html
data-files: html_files/*.html
cabal-version: >=1.10
library
exposed-modules: Text.Taggy,
Text.Taggy.DOM,
Text.Taggy.Entities,
Text.Taggy.Parser,
Text.Taggy.Renderer
Text.Taggy.Types
other-modules:
build-depends: base >=4.6 && <5,
blaze-html >= 0.7,
blaze-markup >= 0.6,
text >= 1,
attoparsec >=0.11,
vector >=0.7,
unordered-containers >= 0.2
hs-source-dirs: src
default-language: Haskell2010
ghc-options: -Wall -O2 -fno-warn-unused-do-bind -funbox-strict-fields
ghc-prof-options: -Wall -O2 -fno-warn-unused-do-bind -funbox-strict-fields -prof -auto-all
executable taggy
main-is: taggy.hs
hs-source-dirs: example
build-depends: base >=4.5 && <5,
text >= 1,
attoparsec >=0.12,
taggy
ghc-options: -Wall -O2 -fno-warn-unused-do-bind
ghc-prof-options: -Wall -prof -auto-all -O2 -fno-warn-unused-do-bind -rtsopts "-with-rtsopts=-sstderr -p"
default-language: Haskell2010
benchmark taggytagsoup
main-is: vs-tagsoup.hs
hs-source-dirs: bench
ghc-options: -O2 -funbox-strict-fields
type: exitcode-stdio-1.0
build-depends: base >= 4 && < 5,
text >=1,
attoparsec >=0.12,
taggy >= 0.1,
tagsoup,
criterion,
vector
default-language: Haskell2010
test-suite unit
type:
exitcode-stdio-1.0
ghc-options:
-Wall -O -fno-warn-unused-do-bind
hs-source-dirs:
src, tests/unit
main-is:
Spec.hs
build-depends:
base == 4.*
, blaze-html
, blaze-markup
, text
, hspec
, hspec-attoparsec
, vector
, attoparsec
, unordered-containers
default-language:
Haskell2010
test-suite integration
type:
exitcode-stdio-1.0
ghc-options:
-Wall -O -fno-warn-unused-do-bind
hs-source-dirs:
src, tests/integration
main-is:
Main.hs
build-depends:
base == 4.*
, blaze-html
, blaze-markup
, directory
, text
, hspec >= 1.11
, hspec-attoparsec
, vector
, attoparsec
, unordered-containers
other-modules:
Paths_taggy
default-language:
Haskell2010
1
0