language-elm 0.1.1.3 → 0.2.0.0
raw patch · 6 files changed
+58/−59 lines, 6 filesdep −doctestdep ~basePVP ok
version bump matches the API change (PVP)
Dependencies removed: doctest
Dependency ranges changed: base
API changes (from Hackage documentation)
- Elm.Decleration: Dec :: String -> TypeDec -> [Expr] -> Expr -> Dec
- Elm.Decleration: DecType :: String -> [String] -> [(String, [TypeDec])] -> Dec
- Elm.Decleration: DecTypeAlias :: String -> [String] -> TypeDec -> Dec
- Elm.Decleration: data Dec
- Elm.Decleration: instance Elm.Classes.Generate Elm.Decleration.Dec
+ Elm.Declaration: Dec :: String -> TypeDec -> [Expr] -> Expr -> Dec
+ Elm.Declaration: DecType :: String -> [String] -> [(String, [TypeDec])] -> Dec
+ Elm.Declaration: DecTypeAlias :: String -> [String] -> TypeDec -> Dec
+ Elm.Declaration: data Dec
+ Elm.Declaration: instance Elm.Classes.Generate Elm.Declaration.Dec
Files
- language-elm.cabal +5/−6
- src/Elm.hs +7/−7
- src/Elm/Declaration.hs +44/−0
- src/Elm/Decleration.hs +0/−44
- src/Elm/Program.hs +1/−1
- test/Spec.hs +1/−1
language-elm.cabal view
@@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 5a8ac7a0d3b4256acbac6f6a2752b4d850e3c26442dc066788cbb63c41b5e56e+-- hash: 050e863d71a7e857420f7de3b152deaef3a5bb95ea66f88027aea574e710783e name: language-elm-version: 0.1.1.3+version: 0.2.0.0 synopsis: Generate elm code description: Generate elm code from an ast category: Web@@ -37,7 +37,7 @@ library exposed-modules: Elm- Elm.Decleration+ Elm.Declaration Elm.Expression Elm.Import Elm.Program@@ -50,7 +50,7 @@ src build-depends: MissingH- , base >=4.11 && <5+ , base >=4.11 && <4.12 , mtl , pretty , protolude@@ -68,8 +68,7 @@ test ghc-options: -threaded -rtsopts -with-rtsopts=-N build-depends:- base >=4.11 && <5- , doctest+ base >=4.11 && <4.12 , hspec , language-elm , mtl
src/Elm.hs view
@@ -28,7 +28,7 @@ , ttuple , trecord , trecordParam- -- * Declerations+ -- * Declarations , Dec , decVariable , decFunction@@ -61,7 +61,7 @@ import Control.Monad.Writer import Data.String import Elm.Classes-import qualified Elm.Decleration+import qualified Elm.Declaration import qualified Elm.Expression import Elm.GenError (GenError (WarningList)) import qualified Elm.Import@@ -72,7 +72,7 @@ type Expr = Elm.Expression.Expr type Type = Elm.Type.TypeDec-type Dec = Elm.Decleration.Dec+type Dec = Elm.Declaration.Dec type Import = Elm.Import.Import type ImportExpr = Elm.Import.ImportType type ImportItem = Elm.Import.ImportItem@@ -231,7 +231,7 @@ -> Type -- ^ The variable's type -> Expr -- ^ The variable's value -> Dec-decVariable name type_ expr = Elm.Decleration.Dec name type_ [] expr+decVariable name type_ expr = Elm.Declaration.Dec name type_ [] expr -- | Declare a function decFunction :: String -- ^ The function name@@ -239,21 +239,21 @@ -> [Expr] -- ^ The fuction's paramaters -> Expr -- ^ The function's value -> Dec-decFunction = Elm.Decleration.Dec+decFunction = Elm.Declaration.Dec -- | Declare a type decType :: String -- ^ The type name -> [String] -- ^ The type's type paramaters -> [(String, [Type])] -- ^ The type's constructors -> Dec-decType = Elm.Decleration.DecType+decType = Elm.Declaration.DecType -- | Declare a type alias decTypeAlias :: String -- ^ The type alias' name -> [String] -- ^ The type alias's type paramaters -> Type -- ^ The type alias's type -> Dec-decTypeAlias = Elm.Decleration.DecTypeAlias+decTypeAlias = Elm.Declaration.DecTypeAlias -- | Import an item select :: String -> ImportItem
+ src/Elm/Declaration.hs view
@@ -0,0 +1,44 @@+{-# OPTIONS_HADDOCK prune #-}+{-# OPTIONS_GHC -Wall -Werror #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE Safe #-}++-- | Top level declerations+module Elm.Declaration where++import Elm.Classes+import Elm.Expression+import Elm.Type+import Text.PrettyPrint++-- | Used to declare functions, variables, and types+data Dec+ -- | Declare a function+ = Dec String TypeDec [Expr] Expr+ -- | Declare a type+ | DecType String [String] [(String, [TypeDec])]+ -- | Declare a type alias+ | DecTypeAlias String [String] TypeDec++instance Generate Dec where+ generate dec =+ case dec of+ Dec name type_ params value -> do+ typeDoc <- generate type_+ paramDocs <- mapM generate params+ valueDoc <- generate value+ return $ text name <+> ":" <+> typeDoc $+$ text name <+> hsep paramDocs <+> "=" $+$ nest 4 valueDoc++ DecType name params instances -> do+ let (keys, values) = unzip instances+ let keyDocs = map text keys+ valueDocs <- mapM (mapM generate) values+ let instanceDocs = map (\(key, values') -> key <+> hsep values') $ zip keyDocs valueDocs+ let paramDocs = map text params+ return $ "type" <+> text name <+> hsep paramDocs $+$+ (nest 4 $ "=" <+> head instanceDocs $+$ (vcat . map ((<+>)"|") . tail $ instanceDocs))++ DecTypeAlias name params type_ -> do+ typeDoc <- generate type_+ let paramDocs = map text params+ return $ "type alias" <+> text name <+> hsep paramDocs <+> "=" $+$ nest 4 typeDoc
− src/Elm/Decleration.hs
@@ -1,44 +0,0 @@-{-# OPTIONS_HADDOCK prune #-}-{-# OPTIONS_GHC -Wall -Werror #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE Safe #-}---- | Top level declerations-module Elm.Decleration where--import Elm.Classes-import Elm.Expression-import Elm.Type-import Text.PrettyPrint---- | Used to declare functions, variables, and types-data Dec- -- | Declare a function- = Dec String TypeDec [Expr] Expr- -- | Declare a type- | DecType String [String] [(String, [TypeDec])]- -- | Declare a type alias- | DecTypeAlias String [String] TypeDec--instance Generate Dec where- generate dec =- case dec of- Dec name type_ params value -> do- typeDoc <- generate type_- paramDocs <- mapM generate params- valueDoc <- generate value- return $ text name <+> ":" <+> typeDoc $+$ text name <+> hsep paramDocs <+> "=" $+$ nest 4 valueDoc-- DecType name params instances -> do- let (keys, values) = unzip instances- let keyDocs = map text keys- valueDocs <- mapM (mapM generate) values- let instanceDocs = map (\(key, values') -> key <+> hsep values') $ zip keyDocs valueDocs- let paramDocs = map text params- return $ "type" <+> text name <+> hsep paramDocs $+$- (nest 4 $ "=" <+> head instanceDocs $+$ (vcat . map ((<+>)"|") . tail $ instanceDocs))-- DecTypeAlias name params type_ -> do- typeDoc <- generate type_- let paramDocs = map text params- return $ "type alias" <+> text name <+> hsep paramDocs <+> "=" $+$ nest 4 typeDoc
src/Elm/Program.hs view
@@ -14,7 +14,7 @@ import Data.String import Data.String.Utils import Elm.Classes-import Elm.Decleration+import Elm.Declaration import Elm.GenError import Elm.Import import Text.PrettyPrint
test/Spec.hs view
@@ -2,7 +2,7 @@ import Control.Monad.Writer import Elm.Classes-import Elm.Decleration+import Elm.Declaration import Elm.Expression import Elm.GenError import Elm.Import