{-# OPTIONS_GHC -Wno-orphans #-}

module Data.OpenApi.Compare.Validate.Header
  (
  )
where

import Data.Foldable
import Data.Functor
import Data.Maybe
import Data.OpenApi
import Data.OpenApi.Compare.Behavior
import Data.OpenApi.Compare.References ()
import Data.OpenApi.Compare.Subtree
import Data.OpenApi.Compare.Validate.Schema ()
import Text.Pandoc.Builder

instance Subtree Header where
  type SubtreeLevel Header = 'HeaderLevel
  type CheckEnv Header = '[ProdCons (Traced (Definitions Schema))]
  checkStructuralCompatibility :: HList (CheckEnv Header)
-> ProdCons (Traced Header) -> StructuralCompatFormula ()
checkStructuralCompatibility HList (CheckEnv Header)
env ProdCons (Traced Header)
pc = do
    ProdCons (EnvT (Trace Header) Identity (Maybe Bool))
-> StructuralCompatFormula ()
forall a (w :: * -> *).
(Eq a, Comonad w) =>
ProdCons (w a) -> StructuralCompatFormula ()
structuralEq (ProdCons (EnvT (Trace Header) Identity (Maybe Bool))
 -> StructuralCompatFormula ())
-> ProdCons (EnvT (Trace Header) Identity (Maybe Bool))
-> StructuralCompatFormula ()
forall a b. (a -> b) -> a -> b
$ (Header -> Maybe Bool)
-> Traced Header -> EnvT (Trace Header) Identity (Maybe Bool)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Header -> Maybe Bool
_headerRequired (Traced Header -> EnvT (Trace Header) Identity (Maybe Bool))
-> ProdCons (Traced Header)
-> ProdCons (EnvT (Trace Header) Identity (Maybe Bool))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ProdCons (Traced Header)
pc
    ProdCons (EnvT (Trace Header) Identity (Maybe Bool))
-> StructuralCompatFormula ()
forall a (w :: * -> *).
(Eq a, Comonad w) =>
ProdCons (w a) -> StructuralCompatFormula ()
structuralEq (ProdCons (EnvT (Trace Header) Identity (Maybe Bool))
 -> StructuralCompatFormula ())
-> ProdCons (EnvT (Trace Header) Identity (Maybe Bool))
-> StructuralCompatFormula ()
forall a b. (a -> b) -> a -> b
$ (Header -> Maybe Bool)
-> Traced Header -> EnvT (Trace Header) Identity (Maybe Bool)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Header -> Maybe Bool
_headerAllowEmptyValue (Traced Header -> EnvT (Trace Header) Identity (Maybe Bool))
-> ProdCons (Traced Header)
-> ProdCons (EnvT (Trace Header) Identity (Maybe Bool))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ProdCons (Traced Header)
pc
    ProdCons (EnvT (Trace Header) Identity (Maybe Bool))
-> StructuralCompatFormula ()
forall a (w :: * -> *).
(Eq a, Comonad w) =>
ProdCons (w a) -> StructuralCompatFormula ()
structuralEq (ProdCons (EnvT (Trace Header) Identity (Maybe Bool))
 -> StructuralCompatFormula ())
-> ProdCons (EnvT (Trace Header) Identity (Maybe Bool))
-> StructuralCompatFormula ()
forall a b. (a -> b) -> a -> b
$ (Header -> Maybe Bool)
-> Traced Header -> EnvT (Trace Header) Identity (Maybe Bool)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Header -> Maybe Bool
_headerExplode (Traced Header -> EnvT (Trace Header) Identity (Maybe Bool))
-> ProdCons (Traced Header)
-> ProdCons (EnvT (Trace Header) Identity (Maybe Bool))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ProdCons (Traced Header)
pc
    HList '[ProdCons (Traced (Definitions Schema))]
-> ProdCons (Maybe (Traced (Referenced Schema)))
-> StructuralCompatFormula ()
forall a (xs :: [*]).
(Subtree a, ReassembleHList xs (CheckEnv a)) =>
HList xs
-> ProdCons (Maybe (Traced a)) -> StructuralCompatFormula ()
structuralMaybe HList '[ProdCons (Traced (Definitions Schema))]
HList (CheckEnv Header)
env (ProdCons (Maybe (Traced (Referenced Schema)))
 -> StructuralCompatFormula ())
-> ProdCons (Maybe (Traced (Referenced Schema)))
-> StructuralCompatFormula ()
forall a b. (a -> b) -> a -> b
$ Traced Header -> Maybe (Traced (Referenced Schema))
tracedSchema (Traced Header -> Maybe (Traced (Referenced Schema)))
-> ProdCons (Traced Header)
-> ProdCons (Maybe (Traced (Referenced Schema)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ProdCons (Traced Header)
pc
    pure ()
  checkSemanticCompatibility :: HList (CheckEnv Header)
-> Behavior (SubtreeLevel Header)
-> ProdCons (Traced Header)
-> SemanticCompatFormula ()
checkSemanticCompatibility HList (CheckEnv Header)
env Behavior (SubtreeLevel Header)
beh (ProdCons Traced Header
p Traced Header
c) = do
    if (Bool -> Maybe Bool -> Bool
forall a. a -> Maybe a -> a
fromMaybe Bool
False (Maybe Bool -> Bool) -> Maybe Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Header -> Maybe Bool
_headerRequired (Header -> Maybe Bool) -> Header -> Maybe Bool
forall a b. (a -> b) -> a -> b
$ Traced Header -> Header
forall (w :: * -> *) a. Comonad w => w a -> a
extract Traced Header
c) Bool -> Bool -> Bool
&& Bool -> Bool
not (Bool -> Maybe Bool -> Bool
forall a. a -> Maybe a -> a
fromMaybe Bool
False (Maybe Bool -> Bool) -> Maybe Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Header -> Maybe Bool
_headerRequired (Header -> Maybe Bool) -> Header -> Maybe Bool
forall a b. (a -> b) -> a -> b
$ Traced Header -> Header
forall (w :: * -> *) a. Comonad w => w a -> a
extract Traced Header
p)
      then Paths Behave 'APILevel 'HeaderLevel
-> Issue 'HeaderLevel -> SemanticCompatFormula ()
forall (l :: BehaviorLevel)
       (q :: BehaviorLevel -> BehaviorLevel -> *) (r :: BehaviorLevel) a.
Issuable l =>
Paths q r l -> Issue l -> CompatFormula' q AnIssue r a
issueAt Paths Behave 'APILevel 'HeaderLevel
Behavior (SubtreeLevel Header)
beh Issue 'HeaderLevel
RequiredHeaderMissing
      else () -> SemanticCompatFormula ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
    if Bool -> Bool
not (Bool -> Maybe Bool -> Bool
forall a. a -> Maybe a -> a
fromMaybe Bool
False (Maybe Bool -> Bool) -> Maybe Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Header -> Maybe Bool
_headerAllowEmptyValue (Header -> Maybe Bool) -> Header -> Maybe Bool
forall a b. (a -> b) -> a -> b
$ Traced Header -> Header
forall (w :: * -> *) a. Comonad w => w a -> a
extract Traced Header
c) Bool -> Bool -> Bool
&& (Bool -> Maybe Bool -> Bool
forall a. a -> Maybe a -> a
fromMaybe Bool
False (Maybe Bool -> Bool) -> Maybe Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Header -> Maybe Bool
_headerAllowEmptyValue (Header -> Maybe Bool) -> Header -> Maybe Bool
forall a b. (a -> b) -> a -> b
$ Traced Header -> Header
forall (w :: * -> *) a. Comonad w => w a -> a
extract Traced Header
p)
      then Paths Behave 'APILevel 'HeaderLevel
-> Issue 'HeaderLevel -> SemanticCompatFormula ()
forall (l :: BehaviorLevel)
       (q :: BehaviorLevel -> BehaviorLevel -> *) (r :: BehaviorLevel) a.
Issuable l =>
Paths q r l -> Issue l -> CompatFormula' q AnIssue r a
issueAt Paths Behave 'APILevel 'HeaderLevel
Behavior (SubtreeLevel Header)
beh Issue 'HeaderLevel
NonEmptyHeaderRequired
      else () -> SemanticCompatFormula ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
    Maybe (Traced (Referenced Schema))
-> (Traced (Referenced Schema) -> SemanticCompatFormula ())
-> SemanticCompatFormula ()
forall (t :: * -> *) (f :: * -> *) a b.
(Foldable t, Applicative f) =>
t a -> (a -> f b) -> f ()
for_ (Traced Header -> Maybe (Traced (Referenced Schema))
tracedSchema Traced Header
c) ((Traced (Referenced Schema) -> SemanticCompatFormula ())
 -> SemanticCompatFormula ())
-> (Traced (Referenced Schema) -> SemanticCompatFormula ())
-> SemanticCompatFormula ()
forall a b. (a -> b) -> a -> b
$ \Traced (Referenced Schema)
consRef ->
      case Traced Header -> Maybe (Traced (Referenced Schema))
tracedSchema Traced Header
p of
        Maybe (Traced (Referenced Schema))
Nothing -> Paths Behave 'APILevel 'HeaderLevel
-> Issue 'HeaderLevel -> SemanticCompatFormula ()
forall (l :: BehaviorLevel)
       (q :: BehaviorLevel -> BehaviorLevel -> *) (r :: BehaviorLevel) a.
Issuable l =>
Paths q r l -> Issue l -> CompatFormula' q AnIssue r a
issueAt Paths Behave 'APILevel 'HeaderLevel
Behavior (SubtreeLevel Header)
beh Issue 'HeaderLevel
HeaderSchemaRequired
        Just Traced (Referenced Schema)
prodRef -> Behavior (SubtreeLevel (Referenced Schema))
-> HList '[ProdCons (Traced (Definitions Schema))]
-> ProdCons (Traced (Referenced Schema))
-> SemanticCompatFormula ()
forall t (xs :: [*]).
(ReassembleHList xs (CheckEnv t), Subtree t) =>
Behavior (SubtreeLevel t)
-> HList xs -> ProdCons (Traced t) -> SemanticCompatFormula ()
checkCompatibility (Paths Behave 'APILevel 'HeaderLevel
Behavior (SubtreeLevel Header)
beh Paths Behave 'APILevel 'HeaderLevel
-> Paths Behave 'HeaderLevel 'SchemaLevel
-> Paths Behave 'APILevel 'SchemaLevel
forall k (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> Behave 'HeaderLevel 'SchemaLevel
-> Paths Behave 'HeaderLevel 'SchemaLevel
forall k (q :: k -> k -> *) (a :: k) (b :: k).
NiceQuiver q a b =>
q a b -> Paths q a b
step Behave 'HeaderLevel 'SchemaLevel
InSchema) HList '[ProdCons (Traced (Definitions Schema))]
HList (CheckEnv Header)
env (Traced (Referenced Schema)
-> Traced (Referenced Schema)
-> ProdCons (Traced (Referenced Schema))
forall a. a -> a -> ProdCons a
ProdCons Traced (Referenced Schema)
prodRef Traced (Referenced Schema)
consRef)
    pure ()

instance Steppable Header (Referenced Schema) where
  data Step Header (Referenced Schema) = HeaderSchema
    deriving stock (Step Header (Referenced Schema)
-> Step Header (Referenced Schema) -> Bool
(Step Header (Referenced Schema)
 -> Step Header (Referenced Schema) -> Bool)
-> (Step Header (Referenced Schema)
    -> Step Header (Referenced Schema) -> Bool)
-> Eq (Step Header (Referenced Schema))
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Step Header (Referenced Schema)
-> Step Header (Referenced Schema) -> Bool
$c/= :: Step Header (Referenced Schema)
-> Step Header (Referenced Schema) -> Bool
== :: Step Header (Referenced Schema)
-> Step Header (Referenced Schema) -> Bool
$c== :: Step Header (Referenced Schema)
-> Step Header (Referenced Schema) -> Bool
Eq, Eq (Step Header (Referenced Schema))
Eq (Step Header (Referenced Schema))
-> (Step Header (Referenced Schema)
    -> Step Header (Referenced Schema) -> Ordering)
-> (Step Header (Referenced Schema)
    -> Step Header (Referenced Schema) -> Bool)
-> (Step Header (Referenced Schema)
    -> Step Header (Referenced Schema) -> Bool)
-> (Step Header (Referenced Schema)
    -> Step Header (Referenced Schema) -> Bool)
-> (Step Header (Referenced Schema)
    -> Step Header (Referenced Schema) -> Bool)
-> (Step Header (Referenced Schema)
    -> Step Header (Referenced Schema)
    -> Step Header (Referenced Schema))
-> (Step Header (Referenced Schema)
    -> Step Header (Referenced Schema)
    -> Step Header (Referenced Schema))
-> Ord (Step Header (Referenced Schema))
Step Header (Referenced Schema)
-> Step Header (Referenced Schema) -> Bool
Step Header (Referenced Schema)
-> Step Header (Referenced Schema) -> Ordering
Step Header (Referenced Schema)
-> Step Header (Referenced Schema)
-> Step Header (Referenced Schema)
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 :: Step Header (Referenced Schema)
-> Step Header (Referenced Schema)
-> Step Header (Referenced Schema)
$cmin :: Step Header (Referenced Schema)
-> Step Header (Referenced Schema)
-> Step Header (Referenced Schema)
max :: Step Header (Referenced Schema)
-> Step Header (Referenced Schema)
-> Step Header (Referenced Schema)
$cmax :: Step Header (Referenced Schema)
-> Step Header (Referenced Schema)
-> Step Header (Referenced Schema)
>= :: Step Header (Referenced Schema)
-> Step Header (Referenced Schema) -> Bool
$c>= :: Step Header (Referenced Schema)
-> Step Header (Referenced Schema) -> Bool
> :: Step Header (Referenced Schema)
-> Step Header (Referenced Schema) -> Bool
$c> :: Step Header (Referenced Schema)
-> Step Header (Referenced Schema) -> Bool
<= :: Step Header (Referenced Schema)
-> Step Header (Referenced Schema) -> Bool
$c<= :: Step Header (Referenced Schema)
-> Step Header (Referenced Schema) -> Bool
< :: Step Header (Referenced Schema)
-> Step Header (Referenced Schema) -> Bool
$c< :: Step Header (Referenced Schema)
-> Step Header (Referenced Schema) -> Bool
compare :: Step Header (Referenced Schema)
-> Step Header (Referenced Schema) -> Ordering
$ccompare :: Step Header (Referenced Schema)
-> Step Header (Referenced Schema) -> Ordering
$cp1Ord :: Eq (Step Header (Referenced Schema))
Ord, Int -> Step Header (Referenced Schema) -> ShowS
[Step Header (Referenced Schema)] -> ShowS
Step Header (Referenced Schema) -> String
(Int -> Step Header (Referenced Schema) -> ShowS)
-> (Step Header (Referenced Schema) -> String)
-> ([Step Header (Referenced Schema)] -> ShowS)
-> Show (Step Header (Referenced Schema))
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Step Header (Referenced Schema)] -> ShowS
$cshowList :: [Step Header (Referenced Schema)] -> ShowS
show :: Step Header (Referenced Schema) -> String
$cshow :: Step Header (Referenced Schema) -> String
showsPrec :: Int -> Step Header (Referenced Schema) -> ShowS
$cshowsPrec :: Int -> Step Header (Referenced Schema) -> ShowS
Show)

tracedSchema :: Traced Header -> Maybe (Traced (Referenced Schema))
tracedSchema :: Traced Header -> Maybe (Traced (Referenced Schema))
tracedSchema Traced Header
hdr = Header -> Maybe (Referenced Schema)
_headerSchema (Traced Header -> Header
forall (w :: * -> *) a. Comonad w => w a -> a
extract Traced Header
hdr) Maybe (Referenced Schema)
-> (Referenced Schema -> Traced (Referenced Schema))
-> Maybe (Traced (Referenced Schema))
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> Trace (Referenced Schema)
-> Referenced Schema -> Traced (Referenced Schema)
forall a. Trace a -> a -> Traced a
traced (Traced Header -> Trace Header
forall e (w :: * -> *) a. ComonadEnv e w => w a -> e
ask Traced Header
hdr Trace Header
-> Paths Step Header (Referenced Schema)
-> Trace (Referenced Schema)
forall k (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> Step Header (Referenced Schema)
-> Paths Step Header (Referenced Schema)
forall k (q :: k -> k -> *) (a :: k) (b :: k).
NiceQuiver q a b =>
q a b -> Paths q a b
step Step Header (Referenced Schema)
HeaderSchema)

instance Issuable 'HeaderLevel where
  data Issue 'HeaderLevel
    = RequiredHeaderMissing
    | NonEmptyHeaderRequired
    | HeaderSchemaRequired
    deriving stock (Issue 'HeaderLevel -> Issue 'HeaderLevel -> Bool
(Issue 'HeaderLevel -> Issue 'HeaderLevel -> Bool)
-> (Issue 'HeaderLevel -> Issue 'HeaderLevel -> Bool)
-> Eq (Issue 'HeaderLevel)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Issue 'HeaderLevel -> Issue 'HeaderLevel -> Bool
$c/= :: Issue 'HeaderLevel -> Issue 'HeaderLevel -> Bool
== :: Issue 'HeaderLevel -> Issue 'HeaderLevel -> Bool
$c== :: Issue 'HeaderLevel -> Issue 'HeaderLevel -> Bool
Eq, Eq (Issue 'HeaderLevel)
Eq (Issue 'HeaderLevel)
-> (Issue 'HeaderLevel -> Issue 'HeaderLevel -> Ordering)
-> (Issue 'HeaderLevel -> Issue 'HeaderLevel -> Bool)
-> (Issue 'HeaderLevel -> Issue 'HeaderLevel -> Bool)
-> (Issue 'HeaderLevel -> Issue 'HeaderLevel -> Bool)
-> (Issue 'HeaderLevel -> Issue 'HeaderLevel -> Bool)
-> (Issue 'HeaderLevel -> Issue 'HeaderLevel -> Issue 'HeaderLevel)
-> (Issue 'HeaderLevel -> Issue 'HeaderLevel -> Issue 'HeaderLevel)
-> Ord (Issue 'HeaderLevel)
Issue 'HeaderLevel -> Issue 'HeaderLevel -> Bool
Issue 'HeaderLevel -> Issue 'HeaderLevel -> Ordering
Issue 'HeaderLevel -> Issue 'HeaderLevel -> Issue 'HeaderLevel
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 :: Issue 'HeaderLevel -> Issue 'HeaderLevel -> Issue 'HeaderLevel
$cmin :: Issue 'HeaderLevel -> Issue 'HeaderLevel -> Issue 'HeaderLevel
max :: Issue 'HeaderLevel -> Issue 'HeaderLevel -> Issue 'HeaderLevel
$cmax :: Issue 'HeaderLevel -> Issue 'HeaderLevel -> Issue 'HeaderLevel
>= :: Issue 'HeaderLevel -> Issue 'HeaderLevel -> Bool
$c>= :: Issue 'HeaderLevel -> Issue 'HeaderLevel -> Bool
> :: Issue 'HeaderLevel -> Issue 'HeaderLevel -> Bool
$c> :: Issue 'HeaderLevel -> Issue 'HeaderLevel -> Bool
<= :: Issue 'HeaderLevel -> Issue 'HeaderLevel -> Bool
$c<= :: Issue 'HeaderLevel -> Issue 'HeaderLevel -> Bool
< :: Issue 'HeaderLevel -> Issue 'HeaderLevel -> Bool
$c< :: Issue 'HeaderLevel -> Issue 'HeaderLevel -> Bool
compare :: Issue 'HeaderLevel -> Issue 'HeaderLevel -> Ordering
$ccompare :: Issue 'HeaderLevel -> Issue 'HeaderLevel -> Ordering
$cp1Ord :: Eq (Issue 'HeaderLevel)
Ord, Int -> Issue 'HeaderLevel -> ShowS
[Issue 'HeaderLevel] -> ShowS
Issue 'HeaderLevel -> String
(Int -> Issue 'HeaderLevel -> ShowS)
-> (Issue 'HeaderLevel -> String)
-> ([Issue 'HeaderLevel] -> ShowS)
-> Show (Issue 'HeaderLevel)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Issue 'HeaderLevel] -> ShowS
$cshowList :: [Issue 'HeaderLevel] -> ShowS
show :: Issue 'HeaderLevel -> String
$cshow :: Issue 'HeaderLevel -> String
showsPrec :: Int -> Issue 'HeaderLevel -> ShowS
$cshowsPrec :: Int -> Issue 'HeaderLevel -> ShowS
Show)
  issueKind :: Issue 'HeaderLevel -> IssueKind
issueKind = \case
    Issue 'HeaderLevel
HeaderSchemaRequired -> IssueKind
ProbablyIssue -- catch-all schema?
    Issue 'HeaderLevel
_ -> IssueKind
CertainIssue
  describeIssue :: Orientation -> Issue 'HeaderLevel -> Blocks
describeIssue Orientation
Forward Issue 'HeaderLevel
RequiredHeaderMissing = Inlines -> Blocks
para Inlines
"Header has become required."
  describeIssue Orientation
Backward Issue 'HeaderLevel
RequiredHeaderMissing = Inlines -> Blocks
para Inlines
"Header is no longer required."
  describeIssue Orientation
Forward Issue 'HeaderLevel
NonEmptyHeaderRequired = Inlines -> Blocks
para Inlines
"The header does not allow empty values anymore."
  describeIssue Orientation
Backward Issue 'HeaderLevel
NonEmptyHeaderRequired = Inlines -> Blocks
para Inlines
"The header now allows empty values."
  describeIssue Orientation
_ Issue 'HeaderLevel
HeaderSchemaRequired = Inlines -> Blocks
para Inlines
"Expected header schema, but it is not present."

instance Behavable 'HeaderLevel 'SchemaLevel where
  data Behave 'HeaderLevel 'SchemaLevel
    = InSchema
    deriving stock (Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel -> Bool
(Behave 'HeaderLevel 'SchemaLevel
 -> Behave 'HeaderLevel 'SchemaLevel -> Bool)
-> (Behave 'HeaderLevel 'SchemaLevel
    -> Behave 'HeaderLevel 'SchemaLevel -> Bool)
-> Eq (Behave 'HeaderLevel 'SchemaLevel)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel -> Bool
$c/= :: Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel -> Bool
== :: Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel -> Bool
$c== :: Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel -> Bool
Eq, Eq (Behave 'HeaderLevel 'SchemaLevel)
Eq (Behave 'HeaderLevel 'SchemaLevel)
-> (Behave 'HeaderLevel 'SchemaLevel
    -> Behave 'HeaderLevel 'SchemaLevel -> Ordering)
-> (Behave 'HeaderLevel 'SchemaLevel
    -> Behave 'HeaderLevel 'SchemaLevel -> Bool)
-> (Behave 'HeaderLevel 'SchemaLevel
    -> Behave 'HeaderLevel 'SchemaLevel -> Bool)
-> (Behave 'HeaderLevel 'SchemaLevel
    -> Behave 'HeaderLevel 'SchemaLevel -> Bool)
-> (Behave 'HeaderLevel 'SchemaLevel
    -> Behave 'HeaderLevel 'SchemaLevel -> Bool)
-> (Behave 'HeaderLevel 'SchemaLevel
    -> Behave 'HeaderLevel 'SchemaLevel
    -> Behave 'HeaderLevel 'SchemaLevel)
-> (Behave 'HeaderLevel 'SchemaLevel
    -> Behave 'HeaderLevel 'SchemaLevel
    -> Behave 'HeaderLevel 'SchemaLevel)
-> Ord (Behave 'HeaderLevel 'SchemaLevel)
Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel -> Bool
Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel -> Ordering
Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel
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 :: Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel
$cmin :: Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel
max :: Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel
$cmax :: Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel
>= :: Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel -> Bool
$c>= :: Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel -> Bool
> :: Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel -> Bool
$c> :: Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel -> Bool
<= :: Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel -> Bool
$c<= :: Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel -> Bool
< :: Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel -> Bool
$c< :: Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel -> Bool
compare :: Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel -> Ordering
$ccompare :: Behave 'HeaderLevel 'SchemaLevel
-> Behave 'HeaderLevel 'SchemaLevel -> Ordering
$cp1Ord :: Eq (Behave 'HeaderLevel 'SchemaLevel)
Ord, Int -> Behave 'HeaderLevel 'SchemaLevel -> ShowS
[Behave 'HeaderLevel 'SchemaLevel] -> ShowS
Behave 'HeaderLevel 'SchemaLevel -> String
(Int -> Behave 'HeaderLevel 'SchemaLevel -> ShowS)
-> (Behave 'HeaderLevel 'SchemaLevel -> String)
-> ([Behave 'HeaderLevel 'SchemaLevel] -> ShowS)
-> Show (Behave 'HeaderLevel 'SchemaLevel)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Behave 'HeaderLevel 'SchemaLevel] -> ShowS
$cshowList :: [Behave 'HeaderLevel 'SchemaLevel] -> ShowS
show :: Behave 'HeaderLevel 'SchemaLevel -> String
$cshow :: Behave 'HeaderLevel 'SchemaLevel -> String
showsPrec :: Int -> Behave 'HeaderLevel 'SchemaLevel -> ShowS
$cshowsPrec :: Int -> Behave 'HeaderLevel 'SchemaLevel -> ShowS
Show)
  describeBehavior :: Behave 'HeaderLevel 'SchemaLevel -> Inlines
describeBehavior Behave 'HeaderLevel 'SchemaLevel
InSchema = Inlines
"JSON Schema"