avro 0.3.1.1 → 0.3.1.2
raw patch · 2 files changed
+13/−12 lines, 2 files
Files
- avro.cabal +2/−2
- src/Data/Avro/Deriving.hs +11/−10
avro.cabal view
@@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 639a04c94ec3749a4ac9ddc59885f5313d5d0a1220120baff521a3e36fc8d362+-- hash: 6ce25074d44e607f3bbf1f81921a61fe9d8ea37a5cbde2000d26607b4d04d85a name: avro-version: 0.3.1.1+version: 0.3.1.2 synopsis: Avro serialization support for Haskell description: Avro serialization and deserialization support for Haskell category: Data
src/Data/Avro/Deriving.hs view
@@ -47,6 +47,7 @@ import qualified Data.ByteString.Lazy as LBS import qualified Data.ByteString.Lazy.Char8 as LBSC8 import qualified Data.HashMap.Strict as HM+import qualified Data.Set as S import Data.Text (Text) import qualified Data.Text as T import qualified Data.Vector as V@@ -55,18 +56,18 @@ -- Generates data types, FromAvro and ToAvro instances. data DeriveOptions = DeriveOptions { -- | How to build field names for generated data types- doFieldNameBuilder :: TypeName -> Field -> Name- }+ fieldNameBuilder :: TypeName -> Field -> T.Text+ } deriving Generic -- | Default deriving options -- -- @ -- defaultDeriveOptions = 'DeriveOptions'--- { doFieldNameBuilder = 'mkPrefixedFieldName'+-- { fieldNameBuilder = 'mkPrefixedFieldName' -- } -- @ defaultDeriveOptions = DeriveOptions- { doFieldNameBuilder = mkPrefixedFieldName+ { fieldNameBuilder = mkPrefixedFieldName } -- | Generates a field name that is prefixed with the type name.@@ -77,8 +78,8 @@ -- @ -- Person { personFirstName :: Text } -- @-mkPrefixedFieldName :: TypeName -> Field -> Name-mkPrefixedFieldName (TN dn) fld = mkTextName . sanitiseName $+mkPrefixedFieldName :: TypeName -> Field -> T.Text+mkPrefixedFieldName (TN dn) fld = sanitiseName $ updateFirst T.toLower dn <> updateFirst T.toUpper (fldName fld) -- | Generates a field name that matches the field name in schema@@ -92,8 +93,8 @@ -- @ -- You may want to enable 'DuplicateRecordFields' if you want to use this method. -mkAsIsFieldName :: TypeName -> Field -> Name-mkAsIsFieldName _ = mkTextName . sanitiseName . updateFirst T.toLower . fldName+mkAsIsFieldName :: TypeName -> Field -> Text+mkAsIsFieldName _ = sanitiseName . updateFirst T.toLower . fldName -- | Generates Haskell classes and 'FromAvro' and 'ToAvro' instances -- given the Avro schema file@@ -221,7 +222,7 @@ toAvro = $(genToAvroFieldsExp sname) |] genToAvroFieldsExp sname = [| \r -> record $(varE sname)- $(let assign fld = [| T.pack $(mkTextLit (fldName fld)) .= $(varE $ (doFieldNameBuilder opts) n fld) r |]+ $(let assign fld = [| T.pack $(mkTextLit (fldName fld)) .= $(varE $ mkTextName $ (fieldNameBuilder opts) n fld) r |] in listE $ assign <$> fs ) |]@@ -404,7 +405,7 @@ mkField :: DeriveOptions -> TypeName -> Field -> Q VarStrictType mkField opts prefix field = do ftype <- mkFieldTypeName (fldType field)- let fName = (doFieldNameBuilder opts) prefix field+ let fName = mkTextName $ (fieldNameBuilder opts) prefix field pure (fName, defaultStrictness, ftype) genNewtype :: Name -> Q Dec