dev-haskell/json: bump up to 0.9.3

Package-Manager: Portage-2.3.81, Repoman-2.3.20
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
This commit is contained in:
Sergei Trofimovich
2019-12-14 20:08:52 +00:00
parent ee1997f0d1
commit d5dbd873fa
3 changed files with 210 additions and 0 deletions

View File

@@ -1 +1,2 @@
DIST json-0.9.1.tar.gz 22568 BLAKE2B b1c73771e24ccafb2019ffff61e392f2eec18768c4bdd09f1a5ee8275c92d8982cda3fab4d91222f726fae65324776c9e79ccd602dbd4ac9c435749d61a1015e SHA512 537257fed476683d0657c6474e465ca437e43e36b60ab132c0f584cece99a18d222ef9a33171543689ba5589434bc78cf2e0e5ff550804ff8969052d09430d57
DIST json-0.9.3.tar.gz 22562 BLAKE2B 8947d2b4bea1ee86eea19e25b73b991d186274c7a6beaff09e8f346756e870d440c4511c599d6ee5f82df08975076e47f0f528cc03cabb5063fb768506b9a660 SHA512 836ae920ef19e0cff5b617a579090ea1d760e253513d3fb28c56650a1fa413c0bd852165be487c211a52be6246eac3241a97f729342223be10275917a34230a6

View File

@@ -0,0 +1,172 @@
commit a0d8bcde5ab5329d11be8cd89c407e6aa0db83a4
Author: Fumiaki Kinoshita <fumiexcel@gmail.com>
Date: Tue Apr 30 18:37:40 2019 +0900
Support GHC 8.8
diff --git a/Text/JSON.hs b/Text/JSON.hs
index f2e2618..6f80949 100644
--- a/Text/JSON.hs
+++ b/Text/JSON.hs
@@ -37,7 +37,7 @@ module Text.JSON (
-- ** Instance helpers
, makeObj, valFromObj
, JSKey(..), encJSDict, decJSDict
-
+
) where
import Text.JSON.Types
@@ -60,7 +60,7 @@ import qualified Data.Text as T
------------------------------------------------------------------------
--- | Decode a String representing a JSON value
+-- | Decode a String representing a JSON value
-- (either an object, array, bool, number, null)
--
-- This is a superset of JSON, as types other than
@@ -137,7 +137,9 @@ instance MonadPlus Result where
instance Monad Result where
return x = Ok x
+#if !MIN_VERSION_base(4,13,0)
fail x = Error x
+#endif
Ok a >>= f = f a
Error x >>= _ = Error x
@@ -199,7 +201,7 @@ instance JSON Ordering where
showJSON = encJSString show
readJSON = decJSString "Ordering" readOrd
where
- readOrd x =
+ readOrd x =
case x of
"LT" -> return Prelude.LT
"EQ" -> return Prelude.EQ
@@ -460,7 +462,7 @@ instance JSKey Int where
instance JSKey String where
toJSKey = id
fromJSKey = Just
-
+
-- | Encode an association list as 'JSObject' value.
encJSDict :: (JSKey a, JSON b) => [(a,b)] -> JSValue
encJSDict v = makeObj [ (toJSKey x, showJSON y) | (x,y) <- v ]
@@ -477,5 +479,3 @@ decJSDict l (JSObject o) = mapM rd (fromJSObject o)
"unable to read dict; invalid object key")
decJSDict l _ = mkError ("readJSON{"++l ++ "}: unable to read dict; expected JSON object")
-
-
diff --git a/Text/JSON/String.hs b/Text/JSON/String.hs
index 51463cd..67fdca8 100644
--- a/Text/JSON/String.hs
+++ b/Text/JSON/String.hs
@@ -1,7 +1,8 @@
+{-# LANGUAGE CPP #-}
-- | Basic support for working with JSON values.
-module Text.JSON.String
- (
+module Text.JSON.String
+ (
-- * Parsing
--
GetJSON
@@ -35,6 +36,7 @@ import Text.JSON.Types (JSValue(..),
JSObject, toJSObject, fromJSObject)
import Control.Monad (liftM, ap)
+import qualified Control.Monad.Fail as Fail
import Control.Applicative((<$>))
import qualified Control.Applicative as A
import Data.Char (isSpace, isDigit, digitToInt)
@@ -52,9 +54,14 @@ instance A.Applicative GetJSON where
pure = return
(<*>) = ap
+instance Fail.MonadFail GetJSON where
+ fail x = GetJSON (\_ -> Left x)
+
instance Monad GetJSON where
return x = GetJSON (\s -> Right (x,s))
- fail x = GetJSON (\_ -> Left x)
+#if !MIN_VERSION_base(4,13,0)
+ fail = Fail.fail
+#endif
GetJSON m >>= f = GetJSON (\s -> case m s of
Left err -> Left err
Right (a,s1) -> un (f a) s1)
@@ -93,7 +100,7 @@ tryJSNull k = do
xs <- getInput
case xs of
'n':'u':'l':'l':xs1 -> setInput xs1 >> return JSNull
- _ -> k
+ _ -> k
-- | Read the JSON Bool type
readJSBool :: GetJSON JSValue
@@ -111,8 +118,8 @@ readJSString = do
case x of
'"' : cs -> parse [] cs
_ -> fail $ "Malformed JSON: expecting string: " ++ context x
- where
- parse rs cs =
+ where
+ parse rs cs =
case cs of
'\\' : c : ds -> esc rs c ds
'"' : ds -> do setInput ds
@@ -153,22 +160,22 @@ readJSRational = do
'-' : ds -> negate <$> pos ds
_ -> pos cs
- where
+ where
pos [] = fail $ "Unable to parse JSON Rational: " ++ context []
pos (c:cs) =
case c of
'0' -> frac 0 cs
- _
+ _
| not (isDigit c) -> fail $ "Unable to parse JSON Rational: " ++ context cs
| otherwise -> readDigits (digitToIntI c) cs
readDigits acc [] = frac (fromInteger acc) []
readDigits acc (x:xs)
- | isDigit x = let acc' = 10*acc + digitToIntI x in
+ | isDigit x = let acc' = 10*acc + digitToIntI x in
acc' `seq` readDigits acc' xs
| otherwise = frac (fromInteger acc) (x:xs)
- frac n ('.' : ds) =
+ frac n ('.' : ds) =
case span isDigit ds of
([],_) -> setInput ds >> return n
(as,bs) -> let x = read as :: Integer
@@ -320,15 +327,15 @@ showJSRational :: Rational -> ShowS
showJSRational r = showJSRational' False r
showJSRational' :: Bool -> Rational -> ShowS
-showJSRational' asFloat r
+showJSRational' asFloat r
| denominator r == 1 = shows $ numerator r
| isInfinite x || isNaN x = showJSNull
| asFloat = shows xf
| otherwise = shows x
- where
+ where
x :: Double
x = realToFrac r
-
+
xf :: Float
xf = realToFrac r
@@ -382,4 +389,3 @@ encJSString jss ss = go (fromJSString jss)
| x < '\x1000' -> 'u' : '0' : hexxs
| otherwise -> 'u' : hexxs
where hexxs = showHex (fromEnum x) xs
-

View File

@@ -0,0 +1,37 @@
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
# ebuild generated by hackport 0.6.9999
CABAL_FEATURES="lib profile haddock hoogle hscolour"
inherit haskell-cabal
DESCRIPTION="Support for serialising Haskell to and from JSON"
HOMEPAGE="http://hackage.haskell.org/package/json"
SRC_URI="https://hackage.haskell.org/package/${P}/${P}.tar.gz"
LICENSE="BSD"
SLOT="0/${PV}"
KEYWORDS="~amd64 ~ppc64 ~x86 ~amd64-linux"
IUSE="mapdict +parsec +pretty"
RDEPEND="dev-haskell/mtl:=[profile?]
>=dev-haskell/syb-0.3.3:=[profile?]
dev-haskell/text:=[profile?]
>=dev-lang/ghc-7.4.1:=
parsec? ( dev-haskell/parsec:=[profile?] )
"
DEPEND="${RDEPEND}
>=dev-haskell/cabal-1.6
"
PATCHES=( "${FILESDIR}"/${PN}-0.9.3-ghc-8.8.patch )
src_configure() {
haskell-cabal_src_configure \
$(cabal_flag mapdict mapdict) \
$(cabal_flag parsec parsec) \
$(cabal_flag pretty pretty)
}