packages feed

json-bytes-builder 0.4 → 0.5

raw patch · 5 files changed

+71/−30 lines, 5 files

Files

demo/Main.hs view
@@ -34,7 +34,7 @@   A.object rows   where     rows =-      A.row "name" (A.string name) <>+      A.row "name" (A.stringFromText name) <>       A.row "genres" (A.array genresElements)       where         genresElements =@@ -45,7 +45,7 @@   A.object rows   where     rows =-      A.row "name" (A.string name)+      A.row "name" (A.stringFromText name)  metallica :: A.Literal metallica =
json-bytes-builder.cabal view
@@ -1,7 +1,7 @@ name:   json-bytes-builder version:-  0.4+  0.5 synopsis:   Direct-to-bytes JSON Builder description:
library/JSONBytesBuilder/Builder.hs view
@@ -6,11 +6,14 @@   Literal,   null,   boolean,-  number_int,-  number_integer,-  number_double,-  number_scientific,-  string,+  numberFromInt,+  numberFromInteger,+  numberFromDouble,+  numberFromScientific,+  stringFromText,+  stringFromLazyText,+  stringFromBytes,+  stringFromLazyBytes,   object,   array,   -- ** Rows builders
library/JSONBytesBuilder/Private/Builder.hs view
@@ -3,6 +3,8 @@  import JSONBytesBuilder.Private.Prelude hiding (null) import qualified Data.ByteString.Builder as A+import qualified Data.Text.Lazy as C+import qualified Data.ByteString.Lazy as D import qualified JSONBytesBuilder.Private.ByteString.Builder as E  @@ -69,38 +71,55 @@  -- | -- JSON Number literal from 'Int'.-{-# INLINE number_int #-}-number_int :: Int -> Literal-number_int =+{-# INLINE numberFromInt #-}+numberFromInt :: Int -> Literal+numberFromInt =   Literal . inline A.intDec  -- | -- JSON Number literal from 'Integer'.-{-# INLINE number_integer #-}-number_integer :: Integer -> Literal-number_integer =+{-# INLINE numberFromInteger #-}+numberFromInteger :: Integer -> Literal+numberFromInteger =   Literal . inline A.integerDec  -- | -- JSON Number literal from 'Double'.-{-# INLINE number_double #-}-number_double :: Double -> Literal-number_double =+{-# INLINE numberFromDouble #-}+numberFromDouble :: Double -> Literal+numberFromDouble =   Literal . inline A.doubleDec  -- | -- JSON Number literal from 'Scientific'.-{-# INLINE number_scientific #-}-number_scientific :: Scientific -> Literal-number_scientific =+{-# INLINE numberFromScientific #-}+numberFromScientific :: Scientific -> Literal+numberFromScientific =   Literal . inline E.scientific  -- |--- JSON String literal from 'Text'.-{-# INLINE string #-}-string :: Text -> Literal-string =-  Literal . inline E.string+-- JSON String literal from 'Text' encoded using UTF8.+{-# INLINE stringFromText #-}+stringFromText :: Text -> Literal+stringFromText =+  Literal . inline E.stringFromText++-- |+-- JSON String literal from lazy Text encoded using UTF8.+{-# INLINE stringFromLazyText #-}+stringFromLazyText :: C.Text -> Literal+stringFromLazyText =+  Literal . inline E.stringFromLazyText++{-# INLINE stringFromBytes #-}+stringFromBytes :: ByteString -> Literal+stringFromBytes =+  Literal . inline E.stringFromBytes++{-# INLINE stringFromLazyBytes #-}+stringFromLazyBytes :: D.ByteString -> Literal+stringFromLazyBytes =+  Literal . inline E.stringFromLazyBytes  -- | -- JSON Object literal from the 'Rows' builder.
library/JSONBytesBuilder/Private/ByteString/Builder.hs view
@@ -5,9 +5,13 @@ import Data.ByteString.Builder import qualified JSONBytesBuilder.Private.ByteString.BoundedPrim as A import qualified Data.ByteString.Builder.Prim as A+import qualified Data.ByteString.Builder.Scientific as D+import qualified Data.ByteString as E+import qualified Data.ByteString.Lazy as F import qualified Data.Text.Encoding as B+import qualified Data.Text.Lazy as G+import qualified Data.Text.Lazy.Encoding as H import qualified Data.Scientific as C-import qualified Data.ByteString.Builder.Scientific as D   {-# INLINABLE null #-}@@ -20,11 +24,26 @@ boolean =   A.primBounded A.boolean -{-# INLINABLE string #-}-string :: Text -> Builder-string x =+{-# INLINABLE stringFromText #-}+stringFromText :: Text -> Builder+stringFromText x =   char8 '"' <> B.encodeUtf8BuilderEscaped A.stringEncodedByte x <> char8 '"' +{-# INLINABLE stringFromLazyText #-}+stringFromLazyText :: G.Text -> Builder+stringFromLazyText x =+  char8 '"' <> H.encodeUtf8BuilderEscaped A.stringEncodedByte x <> char8 '"'++{-# INLINABLE stringFromBytes #-}+stringFromBytes :: ByteString -> Builder+stringFromBytes x =+  char8 '"' <> A.primMapByteStringBounded (inline A.stringEncodedByte) x <> char8 '"'++{-# INLINABLE stringFromLazyBytes #-}+stringFromLazyBytes :: F.ByteString -> Builder+stringFromLazyBytes x =+  char8 '"' <> A.primMapLazyByteStringBounded (inline A.stringEncodedByte) x <> char8 '"'+ {-# INLINABLE scientific #-} scientific :: Scientific -> Builder scientific n =@@ -43,7 +62,7 @@ {-# INLINABLE row #-} row :: Text -> Builder -> Builder row key value =-  string key <> char8 ':' <> value+  stringFromText key <> char8 ':' <> value  {-# INLINABLE inSquarelies #-} inSquarelies :: Builder -> Builder