-- | See:
-- http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html
--
-- You can use the optional Parameters section to pass values into your
-- template when you create a stack. With parameters, you can create templates
-- that are customized each time you create a stack. Each parameter must
-- contain a value when you create a stack. You can specify a default value to
-- make the parameter optional. For more information about creating stacks, see
-- Working with Stacks.

module Stratosphere.Parameter where

import GHC.Exts (IsList(..))
import Stratosphere.NamedItem
import Stratosphere.Prelude
import Stratosphere.Property
import Stratosphere.Value

import qualified Data.Aeson as JSON

data Parameter =
  Parameter
  { Parameter -> Text
name :: Text
  , Parameter -> Text
type' :: Text
    -- ^ The data type for the parameter.
  , Parameter -> Maybe Value
default' :: Maybe JSON.Value
    -- ^ A value of the appropriate type for the template to use if no value is
    -- specified when a stack is created. If you define constraints for the
    -- parameter, you must specify a value that adheres to those constraints.
  , Parameter -> Maybe Bool
noEcho :: Maybe Bool
    -- ^ Whether to mask the parameter value whenever anyone makes a call that
    -- describes the stack. If you set the value to true, the parameter value
    -- is masked with asterisks (*****).
  , Parameter -> Maybe Array
allowedValues :: Maybe JSON.Array
    -- ^ An array containing the list of values allowed for the parameter.
  , Parameter -> Maybe Text
allowedPattern :: Maybe Text
    -- ^ A regular expression that represents the patterns you want to allow
    -- for String types.
  , Parameter -> Maybe Integer
maxLength :: Maybe Integer
    -- ^ An integer value that determines the largest number of characters you
    -- want to allow for String types.
  , Parameter -> Maybe Integer
minLength :: Maybe Integer
    -- ^ An integer value that determines the smallest number of characters you
    -- want to allow for String types.
  , Parameter -> Maybe Integer
maxValue :: Maybe Integer
    -- ^ A numeric value that determines the largest numeric value you want to
    -- allow for Number types.
  , Parameter -> Maybe Integer
minValue :: Maybe Integer
    -- ^ A numeric value that determines the smallest numeric value you want to
    -- allow for Number types.
  , Parameter -> Maybe Text
description :: Maybe Text
    -- ^ A string of up to 4000 characters that describes the parameter.
  , Parameter -> Maybe Text
constraintDescription :: Maybe Text
    -- ^ A string that explains the constraint when the constraint is violated.
  } deriving (Int -> Parameter -> ShowS
[Parameter] -> ShowS
Parameter -> String
(Int -> Parameter -> ShowS)
-> (Parameter -> String)
-> ([Parameter] -> ShowS)
-> Show Parameter
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Parameter -> ShowS
showsPrec :: Int -> Parameter -> ShowS
$cshow :: Parameter -> String
show :: Parameter -> String
$cshowList :: [Parameter] -> ShowS
showList :: [Parameter] -> ShowS
Show, Parameter -> Parameter -> Bool
(Parameter -> Parameter -> Bool)
-> (Parameter -> Parameter -> Bool) -> Eq Parameter
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Parameter -> Parameter -> Bool
== :: Parameter -> Parameter -> Bool
$c/= :: Parameter -> Parameter -> Bool
/= :: Parameter -> Parameter -> Bool
Eq)

instance Property "Name" Parameter where
  type PropertyType "Name" Parameter = Text
  set :: PropertyType "Name" Parameter -> Parameter -> Parameter
set PropertyType "Name" Parameter
newValue Parameter{Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Parameter -> Text
type' :: Parameter -> Text
default' :: Parameter -> Maybe Value
noEcho :: Parameter -> Maybe Bool
allowedValues :: Parameter -> Maybe Array
allowedPattern :: Parameter -> Maybe Text
maxLength :: Parameter -> Maybe Integer
minLength :: Parameter -> Maybe Integer
maxValue :: Parameter -> Maybe Integer
minValue :: Parameter -> Maybe Integer
description :: Parameter -> Maybe Text
constraintDescription :: Parameter -> Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..} = Parameter{name :: Text
name = Text
PropertyType "Name" Parameter
newValue, Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..}

instance Property "Type" Parameter where
  type PropertyType "Type" Parameter = Text
  set :: PropertyType "Type" Parameter -> Parameter -> Parameter
set PropertyType "Type" Parameter
newValue Parameter{Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Parameter -> Text
type' :: Parameter -> Text
default' :: Parameter -> Maybe Value
noEcho :: Parameter -> Maybe Bool
allowedValues :: Parameter -> Maybe Array
allowedPattern :: Parameter -> Maybe Text
maxLength :: Parameter -> Maybe Integer
minLength :: Parameter -> Maybe Integer
maxValue :: Parameter -> Maybe Integer
minValue :: Parameter -> Maybe Integer
description :: Parameter -> Maybe Text
constraintDescription :: Parameter -> Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..} = Parameter{type' :: Text
type' = Text
PropertyType "Type" Parameter
newValue, Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
name :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..}

instance Property "Default" Parameter where
  type PropertyType "Default" Parameter = JSON.Value
  set :: PropertyType "Default" Parameter -> Parameter -> Parameter
set PropertyType "Default" Parameter
newValue Parameter{Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Parameter -> Text
type' :: Parameter -> Text
default' :: Parameter -> Maybe Value
noEcho :: Parameter -> Maybe Bool
allowedValues :: Parameter -> Maybe Array
allowedPattern :: Parameter -> Maybe Text
maxLength :: Parameter -> Maybe Integer
minLength :: Parameter -> Maybe Integer
maxValue :: Parameter -> Maybe Integer
minValue :: Parameter -> Maybe Integer
description :: Parameter -> Maybe Text
constraintDescription :: Parameter -> Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..} = Parameter{default' :: Maybe Value
default' = Value -> Maybe Value
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Value
PropertyType "Default" Parameter
newValue, Maybe Bool
Maybe Integer
Maybe Text
Maybe Array
Text
name :: Text
type' :: Text
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
name :: Text
type' :: Text
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..}

instance Property "NoEcho" Parameter where
  type PropertyType "NoEcho" Parameter = Bool
  set :: PropertyType "NoEcho" Parameter -> Parameter -> Parameter
set PropertyType "NoEcho" Parameter
newValue Parameter{Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Parameter -> Text
type' :: Parameter -> Text
default' :: Parameter -> Maybe Value
noEcho :: Parameter -> Maybe Bool
allowedValues :: Parameter -> Maybe Array
allowedPattern :: Parameter -> Maybe Text
maxLength :: Parameter -> Maybe Integer
minLength :: Parameter -> Maybe Integer
maxValue :: Parameter -> Maybe Integer
minValue :: Parameter -> Maybe Integer
description :: Parameter -> Maybe Text
constraintDescription :: Parameter -> Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..} = Parameter{noEcho :: Maybe Bool
noEcho = Bool -> Maybe Bool
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
PropertyType "NoEcho" Parameter
newValue, Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Text
type' :: Text
default' :: Maybe Value
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..}

instance Property "AllowedValues" Parameter where
  type PropertyType "AllowedValues" Parameter = JSON.Array
  set :: PropertyType "AllowedValues" Parameter -> Parameter -> Parameter
set PropertyType "AllowedValues" Parameter
newValue Parameter{Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Parameter -> Text
type' :: Parameter -> Text
default' :: Parameter -> Maybe Value
noEcho :: Parameter -> Maybe Bool
allowedValues :: Parameter -> Maybe Array
allowedPattern :: Parameter -> Maybe Text
maxLength :: Parameter -> Maybe Integer
minLength :: Parameter -> Maybe Integer
maxValue :: Parameter -> Maybe Integer
minValue :: Parameter -> Maybe Integer
description :: Parameter -> Maybe Text
constraintDescription :: Parameter -> Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..} = Parameter{allowedValues :: Maybe Array
allowedValues = Array -> Maybe Array
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Array
PropertyType "AllowedValues" Parameter
newValue, Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..}

instance Property "AllowedPattern" Parameter where
  type PropertyType "AllowedPattern" Parameter = Text
  set :: PropertyType "AllowedPattern" Parameter -> Parameter -> Parameter
set PropertyType "AllowedPattern" Parameter
newValue Parameter{Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Parameter -> Text
type' :: Parameter -> Text
default' :: Parameter -> Maybe Value
noEcho :: Parameter -> Maybe Bool
allowedValues :: Parameter -> Maybe Array
allowedPattern :: Parameter -> Maybe Text
maxLength :: Parameter -> Maybe Integer
minLength :: Parameter -> Maybe Integer
maxValue :: Parameter -> Maybe Integer
minValue :: Parameter -> Maybe Integer
description :: Parameter -> Maybe Text
constraintDescription :: Parameter -> Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..} = Parameter{allowedPattern :: Maybe Text
allowedPattern = Text -> Maybe Text
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
PropertyType "AllowedPattern" Parameter
newValue, Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..}

instance Property "MaxLength" Parameter where
  type PropertyType "MaxLength" Parameter = Integer
  set :: PropertyType "MaxLength" Parameter -> Parameter -> Parameter
set PropertyType "MaxLength" Parameter
newValue Parameter{Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Parameter -> Text
type' :: Parameter -> Text
default' :: Parameter -> Maybe Value
noEcho :: Parameter -> Maybe Bool
allowedValues :: Parameter -> Maybe Array
allowedPattern :: Parameter -> Maybe Text
maxLength :: Parameter -> Maybe Integer
minLength :: Parameter -> Maybe Integer
maxValue :: Parameter -> Maybe Integer
minValue :: Parameter -> Maybe Integer
description :: Parameter -> Maybe Text
constraintDescription :: Parameter -> Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..} = Parameter{maxLength :: Maybe Integer
maxLength = Integer -> Maybe Integer
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Integer
PropertyType "MaxLength" Parameter
newValue, Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..}

instance Property "MinLength" Parameter where
  type PropertyType "MinLength" Parameter = Integer
  set :: PropertyType "MinLength" Parameter -> Parameter -> Parameter
set PropertyType "MinLength" Parameter
newValue Parameter{Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Parameter -> Text
type' :: Parameter -> Text
default' :: Parameter -> Maybe Value
noEcho :: Parameter -> Maybe Bool
allowedValues :: Parameter -> Maybe Array
allowedPattern :: Parameter -> Maybe Text
maxLength :: Parameter -> Maybe Integer
minLength :: Parameter -> Maybe Integer
maxValue :: Parameter -> Maybe Integer
minValue :: Parameter -> Maybe Integer
description :: Parameter -> Maybe Text
constraintDescription :: Parameter -> Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..} = Parameter{minLength :: Maybe Integer
minLength = Integer -> Maybe Integer
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Integer
PropertyType "MinLength" Parameter
newValue, Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..}

instance Property "MaxValue" Parameter where
  type PropertyType "MaxValue" Parameter = Integer
  set :: PropertyType "MaxValue" Parameter -> Parameter -> Parameter
set PropertyType "MaxValue" Parameter
newValue Parameter{Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Parameter -> Text
type' :: Parameter -> Text
default' :: Parameter -> Maybe Value
noEcho :: Parameter -> Maybe Bool
allowedValues :: Parameter -> Maybe Array
allowedPattern :: Parameter -> Maybe Text
maxLength :: Parameter -> Maybe Integer
minLength :: Parameter -> Maybe Integer
maxValue :: Parameter -> Maybe Integer
minValue :: Parameter -> Maybe Integer
description :: Parameter -> Maybe Text
constraintDescription :: Parameter -> Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..} = Parameter{maxValue :: Maybe Integer
maxValue = Integer -> Maybe Integer
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Integer
PropertyType "MaxValue" Parameter
newValue, Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..}

instance Property "MinValue" Parameter where
  type PropertyType "MinValue" Parameter = Integer
  set :: PropertyType "MinValue" Parameter -> Parameter -> Parameter
set PropertyType "MinValue" Parameter
newValue Parameter{Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Parameter -> Text
type' :: Parameter -> Text
default' :: Parameter -> Maybe Value
noEcho :: Parameter -> Maybe Bool
allowedValues :: Parameter -> Maybe Array
allowedPattern :: Parameter -> Maybe Text
maxLength :: Parameter -> Maybe Integer
minLength :: Parameter -> Maybe Integer
maxValue :: Parameter -> Maybe Integer
minValue :: Parameter -> Maybe Integer
description :: Parameter -> Maybe Text
constraintDescription :: Parameter -> Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..} = Parameter{minValue :: Maybe Integer
minValue = Integer -> Maybe Integer
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Integer
PropertyType "MinValue" Parameter
newValue, Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..}

instance Property "Description" Parameter where
  type PropertyType "Description" Parameter = Text
  set :: PropertyType "Description" Parameter -> Parameter -> Parameter
set PropertyType "Description" Parameter
newValue Parameter{Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Parameter -> Text
type' :: Parameter -> Text
default' :: Parameter -> Maybe Value
noEcho :: Parameter -> Maybe Bool
allowedValues :: Parameter -> Maybe Array
allowedPattern :: Parameter -> Maybe Text
maxLength :: Parameter -> Maybe Integer
minLength :: Parameter -> Maybe Integer
maxValue :: Parameter -> Maybe Integer
minValue :: Parameter -> Maybe Integer
description :: Parameter -> Maybe Text
constraintDescription :: Parameter -> Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..} = Parameter{description :: Maybe Text
description = Text -> Maybe Text
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
PropertyType "Description" Parameter
newValue, Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
constraintDescription :: Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
constraintDescription :: Maybe Text
..}

instance Property "ConstraintDescription" Parameter where
  type PropertyType "ConstraintDescription" Parameter = Text
  set :: PropertyType "ConstraintDescription" Parameter
-> Parameter -> Parameter
set PropertyType "ConstraintDescription" Parameter
newValue Parameter{Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Parameter -> Text
type' :: Parameter -> Text
default' :: Parameter -> Maybe Value
noEcho :: Parameter -> Maybe Bool
allowedValues :: Parameter -> Maybe Array
allowedPattern :: Parameter -> Maybe Text
maxLength :: Parameter -> Maybe Integer
minLength :: Parameter -> Maybe Integer
maxValue :: Parameter -> Maybe Integer
minValue :: Parameter -> Maybe Integer
description :: Parameter -> Maybe Text
constraintDescription :: Parameter -> Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..} = Parameter{constraintDescription :: Maybe Text
constraintDescription = Text -> Maybe Text
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
PropertyType "ConstraintDescription" Parameter
newValue, Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
..}

instance ToRef Parameter b where
  toRef :: Parameter -> Value b
toRef Parameter{Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Parameter -> Text
type' :: Parameter -> Text
default' :: Parameter -> Maybe Value
noEcho :: Parameter -> Maybe Bool
allowedValues :: Parameter -> Maybe Array
allowedPattern :: Parameter -> Maybe Text
maxLength :: Parameter -> Maybe Integer
minLength :: Parameter -> Maybe Integer
maxValue :: Parameter -> Maybe Integer
minValue :: Parameter -> Maybe Integer
description :: Parameter -> Maybe Text
constraintDescription :: Parameter -> Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..} = Text -> Value b
forall a. Text -> Value a
Ref Text
name

parameterToJSON :: Parameter -> JSON.Value
parameterToJSON :: Parameter -> Value
parameterToJSON Parameter{Maybe Bool
Maybe Integer
Maybe Value
Maybe Text
Maybe Array
Text
name :: Parameter -> Text
type' :: Parameter -> Text
default' :: Parameter -> Maybe Value
noEcho :: Parameter -> Maybe Bool
allowedValues :: Parameter -> Maybe Array
allowedPattern :: Parameter -> Maybe Text
maxLength :: Parameter -> Maybe Integer
minLength :: Parameter -> Maybe Integer
maxValue :: Parameter -> Maybe Integer
minValue :: Parameter -> Maybe Integer
description :: Parameter -> Maybe Text
constraintDescription :: Parameter -> Maybe Text
name :: Text
type' :: Text
default' :: Maybe Value
noEcho :: Maybe Bool
allowedValues :: Maybe Array
allowedPattern :: Maybe Text
maxLength :: Maybe Integer
minLength :: Maybe Integer
maxValue :: Maybe Integer
minValue :: Maybe Integer
description :: Maybe Text
constraintDescription :: Maybe Text
..}
  = [Pair] -> Value
JSON.object ([Pair] -> Value) -> [Pair] -> Value
forall a b. (a -> b) -> a -> b
$ [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
catMaybes
  [ Pair -> Maybe Pair
forall a. a -> Maybe a
Just (Key
"Type" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text
type')
  , Key -> Maybe Text -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
maybeField Key
"AllowedPattern"        Maybe Text
allowedPattern
  , Key -> Maybe Array -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
maybeField Key
"AllowedValues"         Maybe Array
allowedValues
  , Key -> Maybe Text -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
maybeField Key
"ConstraintDescription" Maybe Text
constraintDescription
  , Key -> Maybe Value -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
maybeField Key
"Default"               Maybe Value
default'
  , Key -> Maybe Text -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
maybeField Key
"Description"           Maybe Text
description
  , Key -> Maybe Integer -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
maybeField Key
"MaxLength"             Maybe Integer
maxLength
  , Key -> Maybe Integer -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
maybeField Key
"MaxValue"              Maybe Integer
maxValue
  , Key -> Maybe Integer -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
maybeField Key
"MinLength"             Maybe Integer
minLength
  , Key -> Maybe Integer -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
maybeField Key
"MinValue"              Maybe Integer
minValue
  , Key -> Maybe Bool -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
maybeField Key
"NoEcho"                Maybe Bool
noEcho
  ]

-- | Constructor for 'Parameter' with required arguments.
mkParameter
  :: Text -- ^ Name
  -> Text -- ^ Type
  -> Parameter
mkParameter :: Text -> Text -> Parameter
mkParameter Text
name Text
type' =
  Parameter
  { allowedPattern :: Maybe Text
allowedPattern        = Maybe Text
forall a. Maybe a
Nothing
  , allowedValues :: Maybe Array
allowedValues         = Maybe Array
forall a. Maybe a
Nothing
  , constraintDescription :: Maybe Text
constraintDescription = Maybe Text
forall a. Maybe a
Nothing
  , default' :: Maybe Value
default'              = Maybe Value
forall a. Maybe a
Nothing
  , description :: Maybe Text
description           = Maybe Text
forall a. Maybe a
Nothing
  , maxLength :: Maybe Integer
maxLength             = Maybe Integer
forall a. Maybe a
Nothing
  , maxValue :: Maybe Integer
maxValue              = Maybe Integer
forall a. Maybe a
Nothing
  , minValue :: Maybe Integer
minValue              = Maybe Integer
forall a. Maybe a
Nothing
  , minLength :: Maybe Integer
minLength             = Maybe Integer
forall a. Maybe a
Nothing
  , noEcho :: Maybe Bool
noEcho                = Maybe Bool
forall a. Maybe a
Nothing
  , Text
name :: Text
type' :: Text
name :: Text
type' :: Text
..
  }

-- | Wrapper around a list of 'Parameters's to we can modify the aeson
-- instances.
newtype Parameters = Parameters { Parameters -> [Parameter]
parameterList :: [Parameter] }
  deriving stock (Int -> Parameters -> ShowS
[Parameters] -> ShowS
Parameters -> String
(Int -> Parameters -> ShowS)
-> (Parameters -> String)
-> ([Parameters] -> ShowS)
-> Show Parameters
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Parameters -> ShowS
showsPrec :: Int -> Parameters -> ShowS
$cshow :: Parameters -> String
show :: Parameters -> String
$cshowList :: [Parameters] -> ShowS
showList :: [Parameters] -> ShowS
Show, Parameters -> Parameters -> Bool
(Parameters -> Parameters -> Bool)
-> (Parameters -> Parameters -> Bool) -> Eq Parameters
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Parameters -> Parameters -> Bool
== :: Parameters -> Parameters -> Bool
$c/= :: Parameters -> Parameters -> Bool
/= :: Parameters -> Parameters -> Bool
Eq)
  deriving newtype (Semigroup Parameters
Parameters
Semigroup Parameters =>
Parameters
-> (Parameters -> Parameters -> Parameters)
-> ([Parameters] -> Parameters)
-> Monoid Parameters
[Parameters] -> Parameters
Parameters -> Parameters -> Parameters
forall a.
Semigroup a =>
a -> (a -> a -> a) -> ([a] -> a) -> Monoid a
$cmempty :: Parameters
mempty :: Parameters
$cmappend :: Parameters -> Parameters -> Parameters
mappend :: Parameters -> Parameters -> Parameters
$cmconcat :: [Parameters] -> Parameters
mconcat :: [Parameters] -> Parameters
Monoid, (Element Parameters -> Element Parameters)
-> Parameters -> Parameters
((Element Parameters -> Element Parameters)
 -> Parameters -> Parameters)
-> MonoFunctor Parameters
forall mono.
((Element mono -> Element mono) -> mono -> mono)
-> MonoFunctor mono
$comap :: (Element Parameters -> Element Parameters)
-> Parameters -> Parameters
omap :: (Element Parameters -> Element Parameters)
-> Parameters -> Parameters
MonoFunctor, NonEmpty Parameters -> Parameters
Parameters -> Parameters -> Parameters
(Parameters -> Parameters -> Parameters)
-> (NonEmpty Parameters -> Parameters)
-> (forall b. Integral b => b -> Parameters -> Parameters)
-> Semigroup Parameters
forall b. Integral b => b -> Parameters -> Parameters
forall a.
(a -> a -> a)
-> (NonEmpty a -> a)
-> (forall b. Integral b => b -> a -> a)
-> Semigroup a
$c<> :: Parameters -> Parameters -> Parameters
<> :: Parameters -> Parameters -> Parameters
$csconcat :: NonEmpty Parameters -> Parameters
sconcat :: NonEmpty Parameters -> Parameters
$cstimes :: forall b. Integral b => b -> Parameters -> Parameters
stimes :: forall b. Integral b => b -> Parameters -> Parameters
Semigroup)

type instance Element Parameters = Parameter

instance IsList Parameters where
  type Item Parameters = Parameter
  fromList :: [Item Parameters] -> Parameters
fromList = [Item Parameters] -> Parameters
[Parameter] -> Parameters
Parameters
  toList :: Parameters -> [Item Parameters]
toList = (.parameterList)

instance NamedItem Parameter where
  itemName :: Parameter -> Text
itemName = (.name)
  nameToJSON :: Parameter -> Value
nameToJSON = Parameter -> Value
parameterToJSON

instance JSON.ToJSON Parameters where
  toJSON :: Parameters -> Value
toJSON = [Parameter] -> Value
forall a. NamedItem a => [a] -> Value
namedItemToJSON ([Parameter] -> Value)
-> (Parameters -> [Parameter]) -> Parameters -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (.parameterList)