hw-json 0.1.0.0 → 0.2.0.0
raw patch · 4 files changed
+62/−7 lines, 4 filesdep ~hw-rankselectPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: hw-rankselect
API changes (from Hackage documentation)
- HaskellWorks.Data.Json.Succinct.Cursor.Internal: instance (HaskellWorks.Data.Succinct.BalancedParens.Internal.BalancedParens u, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Rank1.Rank1 u, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Rank0.Rank0 u) => HaskellWorks.Data.TreeCursor.TreeCursor (HaskellWorks.Data.Json.Succinct.Cursor.Internal.JsonCursor t v u)
- HaskellWorks.Data.Json.Succinct.Index: instance (HaskellWorks.Data.Succinct.BalancedParens.Internal.BalancedParens w, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Rank0.Rank0 w, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Rank1.Rank1 w, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Select1.Select1 v, HaskellWorks.Data.Bits.BitWise.TestBit w) => HaskellWorks.Data.Json.Succinct.Index.JsonIndexAt (HaskellWorks.Data.Json.Succinct.Cursor.Internal.JsonCursor Data.ByteString.Internal.ByteString v w)
- HaskellWorks.Data.Json.Type: instance (HaskellWorks.Data.Succinct.BalancedParens.Internal.BalancedParens w, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Rank0.Rank0 w, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Rank1.Rank1 w, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Select1.Select1 v, HaskellWorks.Data.Bits.BitWise.TestBit w) => HaskellWorks.Data.Json.Type.JsonTypeAt (HaskellWorks.Data.Json.Succinct.Cursor.Internal.JsonCursor Data.ByteString.Internal.ByteString v w)
- HaskellWorks.Data.Json.Type: instance (HaskellWorks.Data.Succinct.BalancedParens.Internal.BalancedParens w, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Rank0.Rank0 w, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Rank1.Rank1 w, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Select1.Select1 v, HaskellWorks.Data.Bits.BitWise.TestBit w) => HaskellWorks.Data.Json.Type.JsonTypeAt (HaskellWorks.Data.Json.Succinct.Cursor.Internal.JsonCursor GHC.Base.String v w)
- HaskellWorks.Data.Json.Value: class FromJsonValue a
- HaskellWorks.Data.Json.Value: fromJsonValue :: FromJsonValue a => JsonValue -> Either DecodeError a
- HaskellWorks.Data.Json.Value: instance HaskellWorks.Data.Json.Value.FromJsonValue HaskellWorks.Data.Json.Value.JsonValue
+ HaskellWorks.Data.Json.FromValue: class FromJsonValue a
+ HaskellWorks.Data.Json.FromValue: fromJsonValue :: FromJsonValue a => JsonValue -> Either DecodeError a
+ HaskellWorks.Data.Json.FromValue: instance (HaskellWorks.Data.Json.FromValue.FromJsonValue a, HaskellWorks.Data.Json.FromValue.FromJsonValue b) => HaskellWorks.Data.Json.FromValue.FromJsonValue (a, b)
+ HaskellWorks.Data.Json.FromValue: instance (HaskellWorks.Data.Json.FromValue.FromJsonValue a, HaskellWorks.Data.Json.FromValue.FromJsonValue b, HaskellWorks.Data.Json.FromValue.FromJsonValue c) => HaskellWorks.Data.Json.FromValue.FromJsonValue (a, b, c)
+ HaskellWorks.Data.Json.FromValue: instance (HaskellWorks.Data.Json.FromValue.FromJsonValue a, HaskellWorks.Data.Json.FromValue.FromJsonValue b, HaskellWorks.Data.Json.FromValue.FromJsonValue c, HaskellWorks.Data.Json.FromValue.FromJsonValue d) => HaskellWorks.Data.Json.FromValue.FromJsonValue (a, b, c, d)
+ HaskellWorks.Data.Json.FromValue: instance HaskellWorks.Data.Json.FromValue.FromJsonValue GHC.Base.String
+ HaskellWorks.Data.Json.FromValue: instance HaskellWorks.Data.Json.FromValue.FromJsonValue GHC.Types.Bool
+ HaskellWorks.Data.Json.FromValue: instance HaskellWorks.Data.Json.FromValue.FromJsonValue GHC.Types.Double
+ HaskellWorks.Data.Json.FromValue: instance HaskellWorks.Data.Json.FromValue.FromJsonValue GHC.Types.Int
+ HaskellWorks.Data.Json.FromValue: instance HaskellWorks.Data.Json.FromValue.FromJsonValue HaskellWorks.Data.Json.Value.JsonValue
+ HaskellWorks.Data.Json.FromValue: instance HaskellWorks.Data.Json.FromValue.FromJsonValue a => HaskellWorks.Data.Json.FromValue.FromJsonValue [a]
+ HaskellWorks.Data.Json.Succinct.Cursor.Internal: instance (HaskellWorks.Data.Succinct.BalancedParens.BalancedParens.BalancedParens u, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Rank1.Rank1 u, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Rank0.Rank0 u) => HaskellWorks.Data.TreeCursor.TreeCursor (HaskellWorks.Data.Json.Succinct.Cursor.Internal.JsonCursor t v u)
+ HaskellWorks.Data.Json.Succinct.Index: instance (HaskellWorks.Data.Succinct.BalancedParens.BalancedParens.BalancedParens w, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Rank0.Rank0 w, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Rank1.Rank1 w, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Select1.Select1 v, HaskellWorks.Data.Bits.BitWise.TestBit w) => HaskellWorks.Data.Json.Succinct.Index.JsonIndexAt (HaskellWorks.Data.Json.Succinct.Cursor.Internal.JsonCursor Data.ByteString.Internal.ByteString v w)
+ HaskellWorks.Data.Json.Type: instance (HaskellWorks.Data.Succinct.BalancedParens.BalancedParens.BalancedParens w, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Rank0.Rank0 w, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Rank1.Rank1 w, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Select1.Select1 v, HaskellWorks.Data.Bits.BitWise.TestBit w) => HaskellWorks.Data.Json.Type.JsonTypeAt (HaskellWorks.Data.Json.Succinct.Cursor.Internal.JsonCursor Data.ByteString.Internal.ByteString v w)
+ HaskellWorks.Data.Json.Type: instance (HaskellWorks.Data.Succinct.BalancedParens.BalancedParens.BalancedParens w, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Rank0.Rank0 w, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Rank1.Rank1 w, HaskellWorks.Data.Succinct.RankSelect.Binary.Basic.Select1.Select1 v, HaskellWorks.Data.Bits.BitWise.TestBit w) => HaskellWorks.Data.Json.Type.JsonTypeAt (HaskellWorks.Data.Json.Succinct.Cursor.Internal.JsonCursor GHC.Base.String v w)
- HaskellWorks.Data.Json.Token.Tokenize: class ParseJson t s d where parseJsonToken = parseJsonTokenString <|> parseJsonTokenBraceL <|> parseJsonTokenBraceR <|> parseJsonTokenBracketL <|> parseJsonTokenBracketR <|> parseJsonTokenComma <|> parseJsonTokenColon <|> parseJsonTokenWhitespace <|> parseJsonTokenNull <|> parseJsonTokenBoolean <|> parseJsonTokenDouble
+ HaskellWorks.Data.Json.Token.Tokenize: class ParseJson t s d
- HaskellWorks.Data.Json.Token.Tokenize: toChar :: c -> Char
+ HaskellWorks.Data.Json.Token.Tokenize: toChar :: IsChar c => c -> Char
Files
- README.md +5/−0
- hw-json.cabal +4/−1
- src/HaskellWorks/Data/Json/FromValue.hs +53/−0
- src/HaskellWorks/Data/Json/Value.hs +0/−6
README.md view
@@ -59,7 +59,12 @@ 274 import qualified Data.Vector.Storable as DVS 274 import qualified Data.ByteString as BS 274 import System.IO.MMap+ 274 import Control.Monad 274 import Data.Word+ 274 import HaskellWorks.Data.Bits.BitShown+ 274 import HaskellWorks.Data.Succinct.BalancedParens.Simple+ 274 import HaskellWorks.Data.FromForeignRegion+ 274 import HaskellWorks.Diagnostics 274 (fptr :: ForeignPtr Word8, offset, size) <- mmapFileForeignPtr "/Users/jky/Downloads/78mbs.json" ReadOnly Nothing 601 cursor <- measure (fromForeignRegion (fptr, offset, size) :: JsonCursor BS.ByteString (BitShown (DVS.Vector Word64)) (SimpleBalancedParens (DVS.Vector Word64)))
hw-json.cabal view
@@ -1,5 +1,5 @@ name: hw-json-version: 0.1.0.0+version: 0.2.0.0 synopsis: Conduits for tokenizing streams. description: Please see README.md homepage: http://github.com/haskell-works/hw-json#readme@@ -40,6 +40,7 @@ , HaskellWorks.Data.Json.Conduit , HaskellWorks.Data.Json.Conduit.Blank , HaskellWorks.Data.Json.Conduit.Words+ , HaskellWorks.Data.Json.FromValue , HaskellWorks.Data.Json.Succinct , HaskellWorks.Data.Json.Succinct.Cursor , HaskellWorks.Data.Json.Succinct.Cursor.BalancedParens@@ -62,9 +63,11 @@ , containers , hw-bits , hw-conduit+ , hw-diagnostics , hw-parser , hw-prim >= 0.0.3.1 , hw-rankselect >= 0.0.0.5+ , mmap , mono-traversable , resourcet , text
+ src/HaskellWorks/Data/Json/FromValue.hs view
@@ -0,0 +1,53 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE TypeSynonymInstances #-}++module HaskellWorks.Data.Json.FromValue where++import HaskellWorks.Data.Decode+import HaskellWorks.Data.Json.Value++class FromJsonValue a where+ fromJsonValue :: JsonValue -> Either DecodeError a++instance FromJsonValue JsonValue where+ fromJsonValue = Right++instance FromJsonValue String where+ fromJsonValue v = case v of+ JsonString r -> Right r+ _ -> Left (DecodeError "Not a string")++instance FromJsonValue Int where+ fromJsonValue v = case v of+ JsonNumber r -> Right (floor r)+ _ -> Left (DecodeError "Not an integer")++instance FromJsonValue Double where+ fromJsonValue v = case v of+ JsonNumber r -> Right r+ _ -> Left (DecodeError "Not a double")++instance FromJsonValue Bool where+ fromJsonValue v = case v of+ JsonBool r -> Right r+ _ -> Left (DecodeError "Not a boolean")++instance FromJsonValue a => FromJsonValue [a] where+ fromJsonValue v = case v of+ JsonArray xs -> mapM fromJsonValue xs+ _ -> Left (DecodeError "Not an array")++instance (FromJsonValue a, FromJsonValue b) => FromJsonValue (a, b) where+ fromJsonValue v = case v of+ JsonArray (a:b:_) -> (,) <$> fromJsonValue a <*> fromJsonValue b+ _ -> Left (DecodeError "Not a 2-tuple")++instance (FromJsonValue a, FromJsonValue b, FromJsonValue c) => FromJsonValue (a, b, c) where+ fromJsonValue v = case v of+ JsonArray (a:b:c:_) -> (,,) <$> fromJsonValue a <*> fromJsonValue b <*> fromJsonValue c+ _ -> Left (DecodeError "Not a 3-tuple")++instance (FromJsonValue a, FromJsonValue b, FromJsonValue c, FromJsonValue d) => FromJsonValue (a, b, c, d) where+ fromJsonValue v = case v of+ JsonArray (a:b:c:d:_) -> (,,,) <$> fromJsonValue a <*> fromJsonValue b <*> fromJsonValue c <*> fromJsonValue d+ _ -> Left (DecodeError "Not a 4-tuple")
src/HaskellWorks/Data/Json/Value.hs view
@@ -25,9 +25,6 @@ class JsonValueAt a where jsonValueAt :: a -> Either DecodeError JsonValue -class FromJsonValue a where- fromJsonValue :: JsonValue -> Either DecodeError a- instance JsonValueAt JsonIndex where jsonValueAt i = case i of JsonIndexString s -> case ABC.parse parseJsonString s of@@ -49,6 +46,3 @@ ABC.Fail {} -> Left (DecodeError ("Invalid field: '" ++ show (BS.take 20 bs) ++ "...'")) ABC.Partial _ -> Left (DecodeError "Unexpected end of field") ABC.Done _ s -> Right s--instance FromJsonValue JsonValue where- fromJsonValue = Right