mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
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:
@@ -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
|
||||
|
||||
172
dev-haskell/json/files/json-0.9.3-ghc-8.8.patch
Normal file
172
dev-haskell/json/files/json-0.9.3-ghc-8.8.patch
Normal 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
|
||||
-
|
||||
37
dev-haskell/json/json-0.9.3.ebuild
Normal file
37
dev-haskell/json/json-0.9.3.ebuild
Normal 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)
|
||||
}
|
||||
Reference in New Issue
Block a user