-- | Internal module defining top-level attributes needed for a 'Variable'.

{-# LANGUAGE DeriveGeneric #-}
module Variable.Attributes where

import           Data.Aeson   (ToJSON)
import           Data.Text    (Text)
import           GHC.Generics (Generic)

-- | Internal. Variable-level attributes. This will not be constructed directly
-- but instead as part of the smart constructors of 'Variable'. Only 'varName'
-- is user-supplied, and 'varType' is automatically produced. This is only the
-- minimal layer of attributes needed, and more can and will be produced to
-- construct 'VariableWrapped'.
data VarAttrs
  = MkVarAttrs
      { VarAttrs -> Text
varType :: Text
      , VarAttrs -> Text
varName :: Text
      }
  deriving (VarAttrs -> VarAttrs -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: VarAttrs -> VarAttrs -> Bool
$c/= :: VarAttrs -> VarAttrs -> Bool
== :: VarAttrs -> VarAttrs -> Bool
$c== :: VarAttrs -> VarAttrs -> Bool
Eq, forall x. Rep VarAttrs x -> VarAttrs
forall x. VarAttrs -> Rep VarAttrs x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep VarAttrs x -> VarAttrs
$cfrom :: forall x. VarAttrs -> Rep VarAttrs x
Generic, Eq VarAttrs
VarAttrs -> VarAttrs -> Bool
VarAttrs -> VarAttrs -> Ordering
VarAttrs -> VarAttrs -> VarAttrs
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: VarAttrs -> VarAttrs -> VarAttrs
$cmin :: VarAttrs -> VarAttrs -> VarAttrs
max :: VarAttrs -> VarAttrs -> VarAttrs
$cmax :: VarAttrs -> VarAttrs -> VarAttrs
>= :: VarAttrs -> VarAttrs -> Bool
$c>= :: VarAttrs -> VarAttrs -> Bool
> :: VarAttrs -> VarAttrs -> Bool
$c> :: VarAttrs -> VarAttrs -> Bool
<= :: VarAttrs -> VarAttrs -> Bool
$c<= :: VarAttrs -> VarAttrs -> Bool
< :: VarAttrs -> VarAttrs -> Bool
$c< :: VarAttrs -> VarAttrs -> Bool
compare :: VarAttrs -> VarAttrs -> Ordering
$ccompare :: VarAttrs -> VarAttrs -> Ordering
Ord, Int -> VarAttrs -> ShowS
[VarAttrs] -> ShowS
VarAttrs -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [VarAttrs] -> ShowS
$cshowList :: [VarAttrs] -> ShowS
show :: VarAttrs -> String
$cshow :: VarAttrs -> String
showsPrec :: Int -> VarAttrs -> ShowS
$cshowsPrec :: Int -> VarAttrs -> ShowS
Show)

instance ToJSON VarAttrs