packages feed

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 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