init nix-features
This commit is contained in:
parent
d04ddd4c32
commit
b929e21f82
14 changed files with 1646 additions and 61 deletions
98
src/ElmskellTypes.hs
Normal file
98
src/ElmskellTypes.hs
Normal file
|
@ -0,0 +1,98 @@
|
|||
{-# LANGUAGE DataKinds #-}
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE DerivingStrategies #-}
|
||||
{-# LANGUAGE DerivingVia #-}
|
||||
{-# LANGUAGE TypeApplications #-}
|
||||
|
||||
module ElmskellTypes (generateElmskellTypes) where
|
||||
|
||||
import Data.Aeson (ToJSON (..), FromJSON (..))
|
||||
import Elm
|
||||
import GHC.Generics
|
||||
|
||||
data Command
|
||||
= ClearCommand
|
||||
| ColorsCommand
|
||||
| CookiesCommand
|
||||
| DebugCommand
|
||||
| FontCommand
|
||||
| HelloCommand
|
||||
| HelpCommand
|
||||
| PromptCommand
|
||||
| ThemeCommand
|
||||
| TodoCommand
|
||||
deriving (Generic)
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet Command
|
||||
|
||||
data CookiesKept = CookiesKept
|
||||
{ cookiesKeptKeepFont :: Bool
|
||||
, cookiesKeptKeepPrompt :: Bool
|
||||
, cookiesKeptKeepTheme :: Bool
|
||||
} deriving (Generic)
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet CookiesKept
|
||||
|
||||
data CoreColor
|
||||
= Red
|
||||
| Green
|
||||
| Yellow
|
||||
| Blue
|
||||
| Magenta
|
||||
| Cyan
|
||||
| BrightRed
|
||||
| BrightGreen
|
||||
| BrightYellow
|
||||
| BrightBlue
|
||||
| BrightMagenta
|
||||
| BrightCyan
|
||||
deriving (Generic)
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet CoreColor
|
||||
|
||||
data Font = Font
|
||||
{ fontFontSize :: Float
|
||||
} deriving (Generic)
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet Font
|
||||
|
||||
data Input = Input
|
||||
{ inputCommand :: Command
|
||||
, inputArgs :: [String]
|
||||
}
|
||||
deriving (Generic)
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet Input
|
||||
|
||||
data Prompt = Prompt
|
||||
{ promptPrompt :: String
|
||||
} deriving (Generic)
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet Prompt
|
||||
|
||||
data Theme
|
||||
= Pit
|
||||
| Dim
|
||||
| Sky
|
||||
| Sun
|
||||
deriving (Generic)
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet Theme
|
||||
|
||||
data ThemeColor
|
||||
= Background
|
||||
| Foreground
|
||||
| Cursor
|
||||
| Black
|
||||
| White
|
||||
| BrightBlack
|
||||
| BrightWhite
|
||||
deriving (Generic)
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet ThemeColor
|
||||
|
||||
type Types =
|
||||
'[Command
|
||||
, CookiesKept
|
||||
, CoreColor
|
||||
, Font
|
||||
, Input
|
||||
, Prompt
|
||||
, Theme
|
||||
, ThemeColor
|
||||
]
|
||||
|
||||
generateElmskellTypes :: IO ()
|
||||
generateElmskellTypes = generateElm @Types $ defaultSettings "frontend/src" ["ElmskellTypes", "Generated"]
|
Loading…
Add table
Add a link
Reference in a new issue