packages feed

json-query 0.2.3.1 → 0.3.0.0

raw patch · 9 files changed

+45/−38 lines, 9 filesdep −array-chunksdep ~bytebuilddep ~json-syntaxdep ~textsetup-changed

Dependencies removed: array-chunks

Dependency ranges changed: bytebuild, json-syntax, text, text-short

Files

CHANGELOG.md view
@@ -1,5 +1,9 @@ # Revision history for json-query +## 0.3.0.0 -- 2025-07-14++* Update to work with json-syntax+ ## 0.2.3.1 -- 2024-01-29  * Update package metadata.
− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
json-query.cabal view
@@ -1,6 +1,6 @@ cabal-version:   2.4 name:            json-query-version:         0.2.3.1+version:         0.3.0.0 synopsis:        Kitchen sink for querying JSON description:   The library complements json-syntax by making available several@@ -8,7 +8,7 @@   only query JSON. They do not update it.  homepage:        https://github.com/byteverse/json-query-bug-reports:     https://github.com/byteverse/json-query+bug-reports:     https://github.com/byteverse/json-query/issues license:         BSD-3-Clause license-file:    LICENSE author:          Andrew Martin@@ -17,8 +17,14 @@ category:        Data build-type:      Simple extra-doc-files: CHANGELOG.md+tested-with:     GHC ==9.6.3 || ==9.8.1 +common build-settings+  default-language: Haskell2010+  ghc-options:      -Wall -Wunused-packages+ library+  import:          build-settings   exposed-modules:     Json.Arrow     Json.Context@@ -28,38 +34,34 @@     Json.Path    build-depends:-    , array-chunks         >=0.1.2 && <0.2     , base                 >=4.12  && <5     , bytebuild            >=0.3.5 && <0.4     , bytestring           >=0.10  && <0.12     , contiguous           >=0.6.4 && <0.7-    , json-syntax          >=0.2.2 && <0.3+    , json-syntax          >=0.3   && <0.4     , primitive            >=0.7   && <0.10-    , primitive-unlifted   >=0.1.3 && <2.2+    , primitive-unlifted   >=0.1.3 && <2.3     , profunctors          >=5.6.2 && <5.7     , scientific-notation  >=0.1.5 && <0.2-    , text-short           >=0.1.3 && <0.2+    , text                 >=2.1.2+    , text-short           >=0.1.5     , transformers         >=0.5.6 && <0.7 -  hs-source-dirs:   src-  default-language: Haskell2010-  ghc-options:      -Wall -O2+  hs-source-dirs:  src+  ghc-options:     -O2  test-suite test-  default-language: Haskell2010-  type:             exitcode-stdio-1.0-  hs-source-dirs:   test-  main-is:          Main.hs+  import:         build-settings+  type:           exitcode-stdio-1.0+  hs-source-dirs: test+  main-is:        Main.hs   other-modules:     Arrowy     DogHouse     Monadic -  ghc-options:      -Wall -O2   build-depends:-    , array-chunks     , base                 >=4.12.0.0 && <5-    , bytebuild     , byteslice            >=0.1.3     , bytestring     , hspec                >=2.11.7@@ -72,7 +74,6 @@     , tasty-hspec          >=1.2.0.4     , tasty-hunit          >=0.10.0.2     , text                 >=1.2-    , text-short  source-repository head   type:     git
src/Json/Arrow.hs view
@@ -59,6 +59,7 @@ import Data.Primitive (SmallArray) import Data.Primitive.Unlifted.Array (UnliftedArray) import Data.Profunctor (Profunctor (..))+import Data.Text (Text) import Data.Text.Short (ShortText) import Data.Word (Word16, Word64) import Json (Member (Member), Value (Array, Number, Object, String))@@ -94,7 +95,7 @@   Array membs -> Right (ctx, Elements membs)   _ -> Left (Errors.singleton (Error "expected array" ctx)) -string :: Value ~> ShortText+string :: Value ~> Text string = P $ \ctx v -> case v of   String str -> Right (ctx, str)   _ -> Left (Errors.singleton (Error "expected string" ctx))@@ -106,7 +107,7 @@ Failure context includes the index of non-string value if any values in the array are not strings. -}-strings :: Value ~> UnliftedArray ShortText+strings :: Value ~> SmallArray Text strings = P $ \ctx v -> case v of   Array membs -> runST $ runExceptT $ do     xs <-@@ -137,7 +138,7 @@  newtype Members = Members {unMembers :: SmallArray Member} -member :: ShortText -> Members ~> Value+member :: Text -> Members ~> Value member k = P $ \ctx xs -> case find keyEq (unMembers xs) of   Just Member {value} -> Right (Key k ctx, value)   Nothing -> Left (Errors.singleton (Error ("key not found: " <> k) ctx))@@ -145,7 +146,7 @@   keyEq Member {key} = k == key  -- | An optional member. Returns Nothing if the value is missing.-memberOpt :: ShortText -> Members ~> Maybe Value+memberOpt :: Text -> Members ~> Maybe Value memberOpt k = P $ \ctx xs -> case find keyEq (unMembers xs) of   Just Member {value} -> Right (Key k ctx, Just value)   Nothing -> Right (ctx, Nothing)@@ -248,7 +249,7 @@ instance ArrowApply Parser where   app = P $ \ctx (p, x) -> unParser p ctx x -fail :: ShortText -> a ~> b+fail :: Text -> a ~> b fail msg = P $ \ctx _ -> Left (Errors.singleton (Error msg ctx))  failZero :: a ~> b@@ -256,7 +257,7 @@  liftMaybe ::   -- | Message to display on decode error-  ShortText ->+  Text ->   -- | Decode function   (a -> Maybe b) ->   a ~> b
src/Json/Context.hs view
@@ -11,6 +11,7 @@   ) where  import Data.Bytes.Builder (Builder)+import Data.Text (Text) import Data.Text.Short (ShortText) import Json.Path (Path) @@ -26,7 +27,7 @@ -} data Context   = Top-  | Key !ShortText !Context+  | Key {-# UNPACK #-} !Text !Context   | Index !Int !Context   deriving (Eq, Show) 
src/Json/Error.hs view
@@ -13,6 +13,7 @@ import Data.ByteString.Short.Internal (ShortByteString (SBS)) import Data.Bytes.Builder (Builder) import Data.Text.Short (ShortText)+import Data.Text (Text) import Json.Context (Context (..))  import qualified Data.Bytes.Builder as Builder@@ -23,7 +24,7 @@  -- | A single error message. data Error = Error-  { message :: !ShortText+  { message :: {-# UNPACK #-} !Text   , context :: !Context   }   deriving (Eq, Show)@@ -39,4 +40,4 @@ builderUtf8 Error {message, context} =   Context.builderUtf8 context     <> Builder.ascii2 ':' ' '-    <> Builder.shortTextUtf8 message+    <> Builder.textUtf8 message
src/Json/Parser.hs view
@@ -58,7 +58,7 @@ import Data.List (find) import Data.Number.Scientific (Scientific) import Data.Primitive (SmallArray)-import Data.Text.Short (ShortText)+import Data.Text (Text) import Data.Word (Word16, Word32, Word64) import Json (Member (Member), Value (Array, Number, Object)) @@ -127,7 +127,7 @@   Right a -> Right a   Left e -> Left e -fail :: ShortText -> Parser a+fail :: Text -> Parser a fail !msg = Parser (\e -> Left (Errors.singleton Error {context = e, message = msg}))  object :: Value -> Parser (SmallArray Member)@@ -148,7 +148,7 @@   Number n -> pure n   _ -> fail "expected number" -string :: Value -> Parser ShortText+string :: Value -> Parser Text string = \case   Json.String n -> pure n   _ -> fail "expected string"@@ -187,7 +187,7 @@ -- members :: Parser Value (Chunks Member) -- members = _ -key :: ShortText -> (Value -> Parser a) -> MemberParser a+key :: Text -> (Value -> Parser a) -> MemberParser a key !name f = MemberParser $ \p mbrs ->   let !p' = Key name p    in case find (\Member {key = k} -> k == name) mbrs of@@ -199,7 +199,7 @@ that there is no distinction between @null@ and an absent value in the encoding scheme. -}-keyOptNull :: ShortText -> (Value -> Parser a) -> MemberParser a+keyOptNull :: Text -> (Value -> Parser a) -> MemberParser a keyOptNull !name f = MemberParser $ \p mbrs ->   let !p' = Key name p       val = case find (\Member {key = k} -> k == name) mbrs of
src/Json/Path.hs view
@@ -23,6 +23,7 @@ import Data.Bytes.Builder (Builder) import Data.Primitive (ByteArray (ByteArray)) import Data.Text.Short (ShortText)+import Data.Text (Text) import Json (Member (Member), Value (Array, Null, Object))  import qualified Data.Bytes.Builder as Builder@@ -33,7 +34,7 @@ -- | A path to an object. data Path   = -- | JSON path element of a key into an object, \"object.key\".-    Key {-# UNPACK #-} !ShortText !Path+    Key {-# UNPACK #-} !Text !Path   | -- | JSON path element of an index into an array, \"array[index]\".     -- Negative numbers result in undefined behavior.     Index {-# UNPACK #-} !Int !Path@@ -51,7 +52,7 @@ builderUtf8 p0 = Builder.ascii '$' <> go p0  where   go Nil = mempty-  go (Key k p) = Builder.ascii '.' <> Builder.shortTextUtf8 k <> go p+  go (Key k p) = Builder.ascii '.' <> Builder.textUtf8 k <> go p   go (Index i p) =     Builder.ascii '['       <> Builder.wordDec (fromIntegral i)
test/DogHouse.hs view
@@ -15,7 +15,7 @@ import Data.Bytes (Bytes) import Data.Primitive (ByteArray, SmallArray) import Data.Text.Encoding (encodeUtf8)-import Data.Text.Short (ShortText)+import Data.Text (Text) import NeatInterpolation (text)  import qualified Data.ByteString.Short as SBS@@ -24,13 +24,13 @@ import qualified GHC.Exts as Exts  data House = House-  { address :: !ShortText+  { address :: {-# UNPACK #-} !Text   , dogs :: !(SmallArray Dog)   }   deriving (Eq, Show)  data Dog = Dog-  { name :: !ShortText+  { name :: {-# UNPACK #-} !Text   , age :: !Int   , alive :: !Bool   }