packages feed

json-spec-elm 0.5.0.3 → 0.6.0.0

raw patch · 3 files changed

+36/−15 lines, 3 filesdep ~json-specPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: json-spec

API changes (from Hackage documentation)

+ Data.JsonSpec.Elm: instance Data.JsonSpec.Elm.HasType spec => Data.JsonSpec.Elm.HasType ('Data.JsonSpec.Spec.JsonDict spec)

Files

changelog.md view
@@ -1,5 +1,11 @@ # Changelog +## 0.6.0.0++- Support `JsonDict` from `json-spec` 1.4, generating Elm `Dict`+  encoders and decoders.+- Require `json-spec` >= 1.4.0.0.+ ## 0.5.0.3  - Refresh dependency freeze and allow `containers` 0.8.
json-spec-elm.cabal view
@@ -1,6 +1,6 @@ cabal-version:       3.0 name:                json-spec-elm-version:             0.5.0.3+version:             0.6.0.0 synopsis:            Elm code generate for `json-spec`. description:                               Produce elm types, encoders, and decoders from a@@ -25,7 +25,7 @@     , base                 >= 4.19.2.0 && < 4.23     , containers           >= 0.6.8    && < 0.9     , elm-syntax           >= 0.3.3.0  && < 0.4-    , json-spec            >= 1.3.0.0  && < 1.4+    , json-spec            >= 1.4.0.0  && < 1.5     , text                 >= 2.1.1    && < 2.2  common warnings
src/Data/JsonSpec/Elm.hs view
@@ -101,28 +101,34 @@   Named, ) where - import Bound (Scope(Scope), Var(B), abstract1, closed, toScope)-import Control.Monad.Writer (MonadTrans(lift), MonadWriter(tell),-  Writer, execWriter)-import Data.JsonSpec (FieldSpec(Optional, Required),-  Specification(JsonArray, JsonBool, JsonDateTime, JsonEither, JsonInt,-  JsonLet, JsonNullable, JsonNum, JsonObject, JsonRef, JsonString,-  JsonTag))+import Control.Monad.Writer+  ( MonadTrans(lift), MonadWriter(tell), Writer, execWriter+  )+import Data.JsonSpec+  ( FieldSpec(Optional, Required)+  , Specification+    ( JsonArray, JsonBool, JsonDateTime, JsonDict, JsonEither, JsonInt, JsonLet+    , JsonNullable, JsonNum, JsonObject, JsonRef, JsonString, JsonTag+    )+  ) import Data.Proxy (Proxy(Proxy)) import Data.Set (Set) import Data.String (IsString(fromString)) import Data.Text (Text) import Data.Void (Void, absurd)-import GHC.TypeLits (ErrorMessage((:$$:), (:<>:)), KnownSymbol, Symbol,-  TypeError, symbolVal)+import GHC.TypeLits+  ( ErrorMessage((:$$:), (:<>:)), KnownSymbol, Symbol, TypeError, symbolVal+  ) import Language.Elm.Definition (Definition) import Language.Elm.Expression ((|>), Expression, if_) import Language.Elm.Name (Constructor, Qualified) import Language.Elm.Type (Type)-import Prelude (Applicative(pure), Bool(False, True), Foldable(foldl,-  foldr), Functor(fmap), Maybe(Just, Nothing), Monad((>>)),-  Semigroup((<>)), Show(show), ($), (++), (.), (<$>), Int, error, zip)+import Prelude+  ( Applicative(pure), Bool(False, True), Foldable(foldl, foldr), Functor(fmap)+  , Maybe(Just, Nothing), Monad((>>)), Semigroup((<>)), Show(show), ($), (++)+  , (.), (<$>), Int, error, zip+  ) import qualified Data.Char as Char import qualified Data.Set as Set import qualified Data.Text as Text@@ -133,7 +139,6 @@ import qualified Language.Elm.Pattern as Pat import qualified Language.Elm.Type as Type - {-|   Generate Elm type, encoder, and decoder 'Definition's for all /named/   types in a 'Specification'. Note that this will not produce any types,@@ -356,6 +361,16 @@   encoderOf = do     encoder <- encoderOf @spec     pure $ "Json.Encode.list" `a` encoder+instance (HasType spec) => HasType (JsonDict spec) where+  typeOf = do+    elemType <- typeOf @spec+    pure $ "Dict.Dict" `ta` "String.String" `ta` elemType+  decoderOf = do+    dec <- decoderOf @spec+    pure $ "Json.Decode.dict" `a` dec+  encoderOf = do+    encoder <- encoderOf @spec+    pure $ "Json.Encode.dict" `a` "Basics.identity" `a` encoder instance HasType JsonBool where   typeOf = pure "Basics.Bool"   decoderOf = pure "Json.Decode.bool"