34 lines
864 B
Haskell
34 lines
864 B
Haskell
{-# LANGUAGE DeriveGeneric #-}
|
|
{- LANGUAGE FlexibleInstances #-}
|
|
module Pokemon (
|
|
T(..)
|
|
) where
|
|
|
|
import Data.Aeson (ToJSON(..), FromJSON(..), genericToEncoding, genericParseJSON, defaultOptions)
|
|
import GHC.Generics (Generic)
|
|
|
|
import qualified Pokemon.Species as Species (Key)
|
|
import Pokemon.Status (Status)
|
|
import qualified Pokemon.Move as Move (Key)
|
|
import Tool.Array (Array)
|
|
|
|
data Gender = M | F | NB deriving (Generic)
|
|
|
|
instance ToJSON Gender where
|
|
toEncoding = genericToEncoding defaultOptions
|
|
instance FromJSON Gender
|
|
|
|
data T = T {
|
|
nick :: Maybe String
|
|
, species :: Species.Key
|
|
, gender :: Gender
|
|
, level :: Int
|
|
, status :: Status
|
|
, moves :: Array Move.Key
|
|
} deriving (Generic)
|
|
|
|
instance ToJSON T where
|
|
toEncoding = genericToEncoding defaultOptions
|
|
instance FromJSON T where
|
|
parseJSON = genericParseJSON defaultOptions
|