aboutsummaryrefslogtreecommitdiff
path: root/devel/hs-conduit-combinators
diff options
context:
space:
mode:
authorGabor Pali <pgj@FreeBSD.org>2014-08-10 22:34:50 +0000
committerGabor Pali <pgj@FreeBSD.org>2014-08-10 22:34:50 +0000
commitcc555442337c7591ab5c3fd19ad8e3e185a256b0 (patch)
treea6a0dfa4f440949889fc7b609c83f74555f6894e /devel/hs-conduit-combinators
parent5e492199d1e024a681c6d21087c8d948cb3b7bc3 (diff)
Notes
Diffstat (limited to 'devel/hs-conduit-combinators')
-rw-r--r--devel/hs-conduit-combinators/Makefile19
-rw-r--r--devel/hs-conduit-combinators/distinfo2
-rw-r--r--devel/hs-conduit-combinators/files/patch-Data__Conduit__Combinators.hs68
-rw-r--r--devel/hs-conduit-combinators/files/patch-conduit-combinators.cabal19
-rw-r--r--devel/hs-conduit-combinators/pkg-descr4
5 files changed, 112 insertions, 0 deletions
diff --git a/devel/hs-conduit-combinators/Makefile b/devel/hs-conduit-combinators/Makefile
new file mode 100644
index 000000000000..64582d1d1c6a
--- /dev/null
+++ b/devel/hs-conduit-combinators/Makefile
@@ -0,0 +1,19 @@
+# $FreeBSD$
+
+PORTNAME= conduit-combinators
+PORTVERSION= 0.2.8.2
+CATEGORIES= devel haskell
+
+MAINTAINER= haskell@FreeBSD.org
+COMMENT= Commonly used conduit functions, for both chunked and unchunked data
+
+LICENSE= MIT
+
+USE_CABAL= base16-bytestring base64-bytestring>=0.1.1.1 chunked-data \
+ conduit>=1.0.12 conduit-extra monad-control \
+ mono-traversable>=0.4 mwc-random primitive resourcet \
+ streaming-commons system-fileio system-filepath text \
+ transformers-base unix-compat vector void
+
+.include "${.CURDIR}/../../lang/ghc/bsd.cabal.mk"
+.include <bsd.port.mk>
diff --git a/devel/hs-conduit-combinators/distinfo b/devel/hs-conduit-combinators/distinfo
new file mode 100644
index 000000000000..752e302cdc67
--- /dev/null
+++ b/devel/hs-conduit-combinators/distinfo
@@ -0,0 +1,2 @@
+SHA256 (cabal/conduit-combinators-0.2.8.2.tar.gz) = 0a06ff14ebad9778c1fe0f3bcc00aae587ce673a8553d2f99664c7e7c7184ff4
+SIZE (cabal/conduit-combinators-0.2.8.2.tar.gz) = 28058
diff --git a/devel/hs-conduit-combinators/files/patch-Data__Conduit__Combinators.hs b/devel/hs-conduit-combinators/files/patch-Data__Conduit__Combinators.hs
new file mode 100644
index 000000000000..460fc8fb3434
--- /dev/null
+++ b/devel/hs-conduit-combinators/files/patch-Data__Conduit__Combinators.hs
@@ -0,0 +1,68 @@
+--- ./Data/Conduit/Combinators.hs.orig 2014-07-26 20:08:37.000000000 +0200
++++ ./Data/Conduit/Combinators.hs 2014-07-29 14:03:36.000000000 +0200
+@@ -204,6 +204,7 @@
+ import qualified Data.Sequences as Seq
+ import Data.Sequences.Lazy
+ import qualified Data.Vector.Generic as V
++import qualified Data.Text as T
+ import qualified Data.Vector.Generic.Mutable as VM
+ import Data.Void (absurd)
+ import qualified Filesystem as F
+@@ -228,6 +229,8 @@
+ import qualified System.PosixCompat.Files as PosixC
+ import Data.Primitive.MutVar (MutVar, newMutVar, readMutVar,
+ writeMutVar)
++import Data.Streaming.Text hiding (decodeUtf8)
++import qualified Data.Streaming.Text as DST
+
+ #ifndef WINDOWS
+ import qualified System.Posix.Directory as Dir
+@@ -1646,7 +1649,47 @@
+ --
+ -- Since 1.0.0
+ decodeUtf8Lenient :: MonadThrow m => Conduit ByteString m Text
+-decodeUtf8Lenient = CT.decodeUtf8Lenient
++decodeUtf8Lenient =
++ decodeNew onFailure "UTF8-lenient" 0 DST.decodeUtf8
++ where
++ onFailure _consumed _bs t rest = do
++ unless (T.null t) (yield t)
++ case S.uncons rest of
++ Nothing -> return ()
++ Just (_, rest') -> do
++ unless (S.null rest') (leftover rest')
++ yield $ T.singleton '\xFFFD'
++ decodeUtf8Lenient
++
++decodeNew
++ :: Monad m
++ => (Int -> S.ByteString -> T.Text -> S.ByteString -> Conduit S.ByteString m T.Text)
++ -> t
++ -> Int
++ -> (S.ByteString -> DecodeResult)
++ -> Conduit S.ByteString m T.Text
++decodeNew onFailure name =
++ loop
++ where
++ loop consumed dec =
++ await >>= maybe finish go
++ where
++ finish =
++ case dec S.empty of
++ DecodeResultSuccess _ _ -> return ()
++ DecodeResultFailure t rest -> onFailure consumed S.empty t rest
++ {-# INLINE finish #-}
++
++ go bs | S.null bs = loop consumed dec
++ go bs =
++ case dec bs of
++ DecodeResultSuccess t dec' -> do
++ let consumed' = consumed + S.length bs
++ next = do
++ unless (T.null t) (yield t)
++ loop consumed' dec'
++ in consumed' `seq` next
++ DecodeResultFailure t rest -> onFailure consumed bs t rest
+
+ -- | Stream in the entirety of a single line.
+ --
diff --git a/devel/hs-conduit-combinators/files/patch-conduit-combinators.cabal b/devel/hs-conduit-combinators/files/patch-conduit-combinators.cabal
new file mode 100644
index 000000000000..2e01c966d5a0
--- /dev/null
+++ b/devel/hs-conduit-combinators/files/patch-conduit-combinators.cabal
@@ -0,0 +1,19 @@
+--- ./conduit-combinators.cabal.orig 2014-07-26 20:08:37.000000000 +0200
++++ ./conduit-combinators.cabal 2014-07-29 14:01:52.000000000 +0200
+@@ -20,7 +20,7 @@
+ build-depends: base >= 4 && < 5
+ , chunked-data
+ , conduit >= 1.0.12
+- , conduit-extra >= 1.1.1
++ , conduit-extra
+ , transformers
+ , transformers-base
+ , primitive
+@@ -37,6 +37,7 @@
+ , base64-bytestring >= 0.1.1.1
+ , resourcet
+ , monad-control
++ , streaming-commons
+ if os(windows)
+ cpp-options: -DWINDOWS
+ else
diff --git a/devel/hs-conduit-combinators/pkg-descr b/devel/hs-conduit-combinators/pkg-descr
new file mode 100644
index 000000000000..7f386cb58255
--- /dev/null
+++ b/devel/hs-conduit-combinators/pkg-descr
@@ -0,0 +1,4 @@
+Provides a replacement for Data.Conduit.List, as well as a convenient
+Conduit module.
+
+WWW: https://github.com/fpco/conduit-combinators