packages feed

hw-json 1.1.0.0 → 1.1.0.1

raw patch · 5 files changed

+100/−3 lines, 5 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

app/App/Commands.hs view
@@ -1,5 +1,6 @@ module App.Commands where +import App.Commands.Count import App.Commands.CreateIndex import App.Commands.Demo import Data.Semigroup           ((<>))@@ -12,4 +13,5 @@ commandsGeneral = subparser $ mempty   <>  commandGroup "Commands:"   <>  cmdCreateIndex+  <>  cmdCount   <>  cmdDemo
+ app/App/Commands/Count.hs view
@@ -0,0 +1,85 @@+{-# LANGUAGE DataKinds           #-}+{-# LANGUAGE OverloadedStrings   #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeApplications    #-}++module App.Commands.Count+  ( cmdCount+  ) where++import Control.Lens+import Control.Monad+import Data.Generics.Product.Any+import Data.Semigroup                                         ((<>))+import Data.Word+import HaskellWorks.Data.FromForeignRegion+import HaskellWorks.Data.Json.Backend.Standard.Cursor.Generic+import HaskellWorks.Data.Json.LightJson+import HaskellWorks.Data.Json.Query+import HaskellWorks.Data.MQuery+import HaskellWorks.Data.MQuery.Micro+import HaskellWorks.Data.RankSelect.CsPoppy+import HaskellWorks.Data.TreeCursor+import Options.Applicative                                    hiding (columns)++import qualified App.Commands.Types                        as Z+import qualified Data.ByteString                           as BS+import qualified Data.ByteString.Internal                  as BSI+import qualified Data.DList                                as DL+import qualified Data.Vector.Storable                      as DVS+import qualified HaskellWorks.Data.BalancedParens.RangeMin as RM+import qualified System.IO.MMap                            as IO++siblings :: GenericCursor BSI.ByteString CsPoppy (RM.RangeMin CsPoppy) -> [GenericCursor BSI.ByteString CsPoppy (RM.RangeMin CsPoppy)]+siblings c = c:cs+  where cs = case nextSibling c of+          Just d  -> siblings d+          Nothing -> []++runCount :: Z.CountOptions -> IO ()+runCount opts = do+  let inputFile   = opts ^. the @"inputFile"+  let ibIndex     = opts ^. the @"ibIndex"+  let bpIndex     = opts ^. the @"bpIndex"+  let expression  = opts ^. the @"expression"+  jsonFr    <- IO.mmapFileForeignPtr inputFile IO.ReadOnly Nothing+  jsonIbFr  <- IO.mmapFileForeignPtr ibIndex   IO.ReadOnly Nothing+  jsonBpFr  <- IO.mmapFileForeignPtr bpIndex   IO.ReadOnly Nothing+  let jsonBs  = fromForeignRegion jsonFr    :: BS.ByteString+  let jsonIb  = fromForeignRegion jsonIbFr  :: DVS.Vector Word64+  let jsonBp  = fromForeignRegion jsonBpFr  :: DVS.Vector Word64++  let cursor = GenericCursor jsonBs (makeCsPoppy jsonIb) (RM.mkRangeMin (makeCsPoppy jsonBp)) 1++  let q = MQuery (DL.fromList $ fmap lightJsonAt (siblings cursor))++  putPretty $ q >>= (entry >=> named expression) & count++  return ()++optsCount :: Parser Z.CountOptions+optsCount = Z.CountOptions+  <$> strOption+        (   long "input"+        <>  short 'i'+        <>  help "Input JSON file"+        <>  metavar "FILE"+        )+  <*> strOption+        (   long "ib-index"+        <>  help "IB index"+        <>  metavar "FILE"+        )+  <*> strOption+        (   long "bp-index"+        <>  help "BP index"+        <>  metavar "FILE"+        )+  <*> option auto+        (   long "expression"+        <>  help "JSON expression"+        <>  metavar "EXPRESSION"+        )++cmdCount :: Mod CommandFields (IO ())+cmdCount = command "count"  $ flip info idm $ runCount <$> optsCount
app/App/Commands/Types.hs view
@@ -2,10 +2,12 @@ {-# LANGUAGE DuplicateRecordFields #-}  module App.Commands.Types-  ( CreateIndexOptions(..)+  ( CountOptions(..)+  , CreateIndexOptions(..)   , DemoOptions(..)   ) where +import Data.Text    (Text) import GHC.Generics  data CreateIndexOptions = CreateIndexOptions@@ -19,4 +21,11 @@ data DemoOptions = DemoOptions   { filePath :: FilePath   , method   :: FilePath+  } deriving (Eq, Show, Generic)++data CountOptions = CountOptions+  { inputFile  :: FilePath+  , ibIndex    :: FilePath+  , bpIndex    :: FilePath+  , expression :: Text   } deriving (Eq, Show, Generic)
hw-json.cabal view
@@ -1,7 +1,7 @@ cabal-version:  2.2  name:           hw-json-version:        1.1.0.0+version:        1.1.0.1 synopsis:       Memory efficient JSON parser description:    Memory efficient JSON parser. Please see README.md category:       Data@@ -166,6 +166,7 @@           , mmap           , optparse-applicative           , semigroups+          , text           , vector   main-is:            Main.hs   hs-source-dirs:     app@@ -174,6 +175,7 @@   other-modules:       App.Commands       App.Commands.CreateIndex+      App.Commands.Count       App.Commands.Demo       App.Commands.Types 
src/HaskellWorks/Data/Json/Backend/Standard/Fast.hs view
@@ -15,7 +15,6 @@ import qualified Data.ByteString                                       as BS import qualified Data.ByteString.Char8                                 as BSC import qualified Data.ByteString.Internal                              as BSI-import qualified HaskellWorks.Data.BalancedParens                      as BP import qualified HaskellWorks.Data.BalancedParens.RangeMin             as RM import qualified HaskellWorks.Data.FromForeignRegion                   as F import qualified HaskellWorks.Data.Json.Internal.Backend.Standard.IbBp as J