\subsection{Cardano.BM.Data.Output}
\label{code:Cardano.BM.Data.Output}
%if style == newcode
\begin{code}
{-# LANGUAGE CPP #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
module Cardano.BM.Data.Output
(
ScribeKind (..)
, ScribeFormat (..)
, ScribeId
, ScribePrivacy (..)
, ScribeDefinition (..)
)
where
import Data.Aeson (FromJSON (..), ToJSON, Value (..), parseJSON, (.:),
(.:?))
import Data.Aeson.Types (typeMismatch)
import Data.Maybe (fromMaybe)
import Data.Text (Text)
import Cardano.BM.Data.Rotation (RotationParameters)
import Cardano.BM.Data.Severity
import GHC.Generics (Generic)
\end{code}
%endif
\subsubsection{ScribeKind}\label{code:ScribeKind}
\label{code:FileSK}\index{ScribeKind!FileSK}
\label{code:StdoutSK}\index{ScribeKind!StdoutSK}
\label{code:StderrSK}\index{ScribeKind!StderrSK}
\label{code:JournalSK}\index{ScribeKind!JournalSK}
\label{code:DevNullSK}\index{ScribeKind!DevNullSK}
\label{code:UserDefinedSK}\index{ScribeKind!UserDefinedSK}
This identifies katip's scribes by type.
\begin{code}
data ScribeKind = FileSK
| StdoutSK
| StderrSK
| JournalSK
| DevNullSK
| UserDefinedSK
deriving ((forall x. ScribeKind -> Rep ScribeKind x)
-> (forall x. Rep ScribeKind x -> ScribeKind) -> Generic ScribeKind
forall x. Rep ScribeKind x -> ScribeKind
forall x. ScribeKind -> Rep ScribeKind x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ScribeKind x -> ScribeKind
$cfrom :: forall x. ScribeKind -> Rep ScribeKind x
Generic, ScribeKind -> ScribeKind -> Bool
(ScribeKind -> ScribeKind -> Bool)
-> (ScribeKind -> ScribeKind -> Bool) -> Eq ScribeKind
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ScribeKind -> ScribeKind -> Bool
$c/= :: ScribeKind -> ScribeKind -> Bool
== :: ScribeKind -> ScribeKind -> Bool
$c== :: ScribeKind -> ScribeKind -> Bool
Eq, Eq ScribeKind
Eq ScribeKind
-> (ScribeKind -> ScribeKind -> Ordering)
-> (ScribeKind -> ScribeKind -> Bool)
-> (ScribeKind -> ScribeKind -> Bool)
-> (ScribeKind -> ScribeKind -> Bool)
-> (ScribeKind -> ScribeKind -> Bool)
-> (ScribeKind -> ScribeKind -> ScribeKind)
-> (ScribeKind -> ScribeKind -> ScribeKind)
-> Ord ScribeKind
ScribeKind -> ScribeKind -> Bool
ScribeKind -> ScribeKind -> Ordering
ScribeKind -> ScribeKind -> ScribeKind
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 :: ScribeKind -> ScribeKind -> ScribeKind
$cmin :: ScribeKind -> ScribeKind -> ScribeKind
max :: ScribeKind -> ScribeKind -> ScribeKind
$cmax :: ScribeKind -> ScribeKind -> ScribeKind
>= :: ScribeKind -> ScribeKind -> Bool
$c>= :: ScribeKind -> ScribeKind -> Bool
> :: ScribeKind -> ScribeKind -> Bool
$c> :: ScribeKind -> ScribeKind -> Bool
<= :: ScribeKind -> ScribeKind -> Bool
$c<= :: ScribeKind -> ScribeKind -> Bool
< :: ScribeKind -> ScribeKind -> Bool
$c< :: ScribeKind -> ScribeKind -> Bool
compare :: ScribeKind -> ScribeKind -> Ordering
$ccompare :: ScribeKind -> ScribeKind -> Ordering
$cp1Ord :: Eq ScribeKind
Ord, Int -> ScribeKind -> ShowS
[ScribeKind] -> ShowS
ScribeKind -> String
(Int -> ScribeKind -> ShowS)
-> (ScribeKind -> String)
-> ([ScribeKind] -> ShowS)
-> Show ScribeKind
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ScribeKind] -> ShowS
$cshowList :: [ScribeKind] -> ShowS
show :: ScribeKind -> String
$cshow :: ScribeKind -> String
showsPrec :: Int -> ScribeKind -> ShowS
$cshowsPrec :: Int -> ScribeKind -> ShowS
Show, ReadPrec [ScribeKind]
ReadPrec ScribeKind
Int -> ReadS ScribeKind
ReadS [ScribeKind]
(Int -> ReadS ScribeKind)
-> ReadS [ScribeKind]
-> ReadPrec ScribeKind
-> ReadPrec [ScribeKind]
-> Read ScribeKind
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ScribeKind]
$creadListPrec :: ReadPrec [ScribeKind]
readPrec :: ReadPrec ScribeKind
$creadPrec :: ReadPrec ScribeKind
readList :: ReadS [ScribeKind]
$creadList :: ReadS [ScribeKind]
readsPrec :: Int -> ReadS ScribeKind
$creadsPrec :: Int -> ReadS ScribeKind
Read, Value -> Parser [ScribeKind]
Value -> Parser ScribeKind
(Value -> Parser ScribeKind)
-> (Value -> Parser [ScribeKind]) -> FromJSON ScribeKind
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [ScribeKind]
$cparseJSONList :: Value -> Parser [ScribeKind]
parseJSON :: Value -> Parser ScribeKind
$cparseJSON :: Value -> Parser ScribeKind
FromJSON, [ScribeKind] -> Encoding
[ScribeKind] -> Value
ScribeKind -> Encoding
ScribeKind -> Value
(ScribeKind -> Value)
-> (ScribeKind -> Encoding)
-> ([ScribeKind] -> Value)
-> ([ScribeKind] -> Encoding)
-> ToJSON ScribeKind
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [ScribeKind] -> Encoding
$ctoEncodingList :: [ScribeKind] -> Encoding
toJSONList :: [ScribeKind] -> Value
$ctoJSONList :: [ScribeKind] -> Value
toEncoding :: ScribeKind -> Encoding
$ctoEncoding :: ScribeKind -> Encoding
toJSON :: ScribeKind -> Value
$ctoJSON :: ScribeKind -> Value
ToJSON)
\end{code}
\subsubsection{ScribeFormat}\label{code:ScribeFormat}
\label{code:ScText}\index{ScribeFormat!ScText}
\label{code:ScJson}\index{ScribeFormat!ScJson}
This defines the scribe's output format.
\begin{code}
data ScribeFormat = ScText
| ScJson
deriving ((forall x. ScribeFormat -> Rep ScribeFormat x)
-> (forall x. Rep ScribeFormat x -> ScribeFormat)
-> Generic ScribeFormat
forall x. Rep ScribeFormat x -> ScribeFormat
forall x. ScribeFormat -> Rep ScribeFormat x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ScribeFormat x -> ScribeFormat
$cfrom :: forall x. ScribeFormat -> Rep ScribeFormat x
Generic, ScribeFormat -> ScribeFormat -> Bool
(ScribeFormat -> ScribeFormat -> Bool)
-> (ScribeFormat -> ScribeFormat -> Bool) -> Eq ScribeFormat
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ScribeFormat -> ScribeFormat -> Bool
$c/= :: ScribeFormat -> ScribeFormat -> Bool
== :: ScribeFormat -> ScribeFormat -> Bool
$c== :: ScribeFormat -> ScribeFormat -> Bool
Eq, Eq ScribeFormat
Eq ScribeFormat
-> (ScribeFormat -> ScribeFormat -> Ordering)
-> (ScribeFormat -> ScribeFormat -> Bool)
-> (ScribeFormat -> ScribeFormat -> Bool)
-> (ScribeFormat -> ScribeFormat -> Bool)
-> (ScribeFormat -> ScribeFormat -> Bool)
-> (ScribeFormat -> ScribeFormat -> ScribeFormat)
-> (ScribeFormat -> ScribeFormat -> ScribeFormat)
-> Ord ScribeFormat
ScribeFormat -> ScribeFormat -> Bool
ScribeFormat -> ScribeFormat -> Ordering
ScribeFormat -> ScribeFormat -> ScribeFormat
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 :: ScribeFormat -> ScribeFormat -> ScribeFormat
$cmin :: ScribeFormat -> ScribeFormat -> ScribeFormat
max :: ScribeFormat -> ScribeFormat -> ScribeFormat
$cmax :: ScribeFormat -> ScribeFormat -> ScribeFormat
>= :: ScribeFormat -> ScribeFormat -> Bool
$c>= :: ScribeFormat -> ScribeFormat -> Bool
> :: ScribeFormat -> ScribeFormat -> Bool
$c> :: ScribeFormat -> ScribeFormat -> Bool
<= :: ScribeFormat -> ScribeFormat -> Bool
$c<= :: ScribeFormat -> ScribeFormat -> Bool
< :: ScribeFormat -> ScribeFormat -> Bool
$c< :: ScribeFormat -> ScribeFormat -> Bool
compare :: ScribeFormat -> ScribeFormat -> Ordering
$ccompare :: ScribeFormat -> ScribeFormat -> Ordering
$cp1Ord :: Eq ScribeFormat
Ord, Int -> ScribeFormat -> ShowS
[ScribeFormat] -> ShowS
ScribeFormat -> String
(Int -> ScribeFormat -> ShowS)
-> (ScribeFormat -> String)
-> ([ScribeFormat] -> ShowS)
-> Show ScribeFormat
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ScribeFormat] -> ShowS
$cshowList :: [ScribeFormat] -> ShowS
show :: ScribeFormat -> String
$cshow :: ScribeFormat -> String
showsPrec :: Int -> ScribeFormat -> ShowS
$cshowsPrec :: Int -> ScribeFormat -> ShowS
Show, ReadPrec [ScribeFormat]
ReadPrec ScribeFormat
Int -> ReadS ScribeFormat
ReadS [ScribeFormat]
(Int -> ReadS ScribeFormat)
-> ReadS [ScribeFormat]
-> ReadPrec ScribeFormat
-> ReadPrec [ScribeFormat]
-> Read ScribeFormat
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ScribeFormat]
$creadListPrec :: ReadPrec [ScribeFormat]
readPrec :: ReadPrec ScribeFormat
$creadPrec :: ReadPrec ScribeFormat
readList :: ReadS [ScribeFormat]
$creadList :: ReadS [ScribeFormat]
readsPrec :: Int -> ReadS ScribeFormat
$creadsPrec :: Int -> ReadS ScribeFormat
Read, Value -> Parser [ScribeFormat]
Value -> Parser ScribeFormat
(Value -> Parser ScribeFormat)
-> (Value -> Parser [ScribeFormat]) -> FromJSON ScribeFormat
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [ScribeFormat]
$cparseJSONList :: Value -> Parser [ScribeFormat]
parseJSON :: Value -> Parser ScribeFormat
$cparseJSON :: Value -> Parser ScribeFormat
FromJSON, [ScribeFormat] -> Encoding
[ScribeFormat] -> Value
ScribeFormat -> Encoding
ScribeFormat -> Value
(ScribeFormat -> Value)
-> (ScribeFormat -> Encoding)
-> ([ScribeFormat] -> Value)
-> ([ScribeFormat] -> Encoding)
-> ToJSON ScribeFormat
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [ScribeFormat] -> Encoding
$ctoEncodingList :: [ScribeFormat] -> Encoding
toJSONList :: [ScribeFormat] -> Value
$ctoJSONList :: [ScribeFormat] -> Value
toEncoding :: ScribeFormat -> Encoding
$ctoEncoding :: ScribeFormat -> Encoding
toJSON :: ScribeFormat -> Value
$ctoJSON :: ScribeFormat -> Value
ToJSON)
\end{code}
\subsubsection{ScribeId}\label{code:ScribeId}\index{ScribeId}
A scribe is identified by |ScribeKind x Filename|
\begin{code}
type ScribeId = Text
\end{code}
\subsubsection{ScribePrivacy}\label{code:ScribePrivacy}\index{ScribePrivacy}
\label{code:ScPublic}\index{ScribePrivacy!ScPublic}
\label{code:ScPrivate}\index{ScribePrivacy!ScPrivate}
This declares if a scribe will be public (and must not contain sensitive data) or
private.
\begin{code}
data ScribePrivacy = ScPublic | ScPrivate
deriving ((forall x. ScribePrivacy -> Rep ScribePrivacy x)
-> (forall x. Rep ScribePrivacy x -> ScribePrivacy)
-> Generic ScribePrivacy
forall x. Rep ScribePrivacy x -> ScribePrivacy
forall x. ScribePrivacy -> Rep ScribePrivacy x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ScribePrivacy x -> ScribePrivacy
$cfrom :: forall x. ScribePrivacy -> Rep ScribePrivacy x
Generic, ScribePrivacy -> ScribePrivacy -> Bool
(ScribePrivacy -> ScribePrivacy -> Bool)
-> (ScribePrivacy -> ScribePrivacy -> Bool) -> Eq ScribePrivacy
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ScribePrivacy -> ScribePrivacy -> Bool
$c/= :: ScribePrivacy -> ScribePrivacy -> Bool
== :: ScribePrivacy -> ScribePrivacy -> Bool
$c== :: ScribePrivacy -> ScribePrivacy -> Bool
Eq, Eq ScribePrivacy
Eq ScribePrivacy
-> (ScribePrivacy -> ScribePrivacy -> Ordering)
-> (ScribePrivacy -> ScribePrivacy -> Bool)
-> (ScribePrivacy -> ScribePrivacy -> Bool)
-> (ScribePrivacy -> ScribePrivacy -> Bool)
-> (ScribePrivacy -> ScribePrivacy -> Bool)
-> (ScribePrivacy -> ScribePrivacy -> ScribePrivacy)
-> (ScribePrivacy -> ScribePrivacy -> ScribePrivacy)
-> Ord ScribePrivacy
ScribePrivacy -> ScribePrivacy -> Bool
ScribePrivacy -> ScribePrivacy -> Ordering
ScribePrivacy -> ScribePrivacy -> ScribePrivacy
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 :: ScribePrivacy -> ScribePrivacy -> ScribePrivacy
$cmin :: ScribePrivacy -> ScribePrivacy -> ScribePrivacy
max :: ScribePrivacy -> ScribePrivacy -> ScribePrivacy
$cmax :: ScribePrivacy -> ScribePrivacy -> ScribePrivacy
>= :: ScribePrivacy -> ScribePrivacy -> Bool
$c>= :: ScribePrivacy -> ScribePrivacy -> Bool
> :: ScribePrivacy -> ScribePrivacy -> Bool
$c> :: ScribePrivacy -> ScribePrivacy -> Bool
<= :: ScribePrivacy -> ScribePrivacy -> Bool
$c<= :: ScribePrivacy -> ScribePrivacy -> Bool
< :: ScribePrivacy -> ScribePrivacy -> Bool
$c< :: ScribePrivacy -> ScribePrivacy -> Bool
compare :: ScribePrivacy -> ScribePrivacy -> Ordering
$ccompare :: ScribePrivacy -> ScribePrivacy -> Ordering
$cp1Ord :: Eq ScribePrivacy
Ord, Int -> ScribePrivacy -> ShowS
[ScribePrivacy] -> ShowS
ScribePrivacy -> String
(Int -> ScribePrivacy -> ShowS)
-> (ScribePrivacy -> String)
-> ([ScribePrivacy] -> ShowS)
-> Show ScribePrivacy
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ScribePrivacy] -> ShowS
$cshowList :: [ScribePrivacy] -> ShowS
show :: ScribePrivacy -> String
$cshow :: ScribePrivacy -> String
showsPrec :: Int -> ScribePrivacy -> ShowS
$cshowsPrec :: Int -> ScribePrivacy -> ShowS
Show, Value -> Parser [ScribePrivacy]
Value -> Parser ScribePrivacy
(Value -> Parser ScribePrivacy)
-> (Value -> Parser [ScribePrivacy]) -> FromJSON ScribePrivacy
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [ScribePrivacy]
$cparseJSONList :: Value -> Parser [ScribePrivacy]
parseJSON :: Value -> Parser ScribePrivacy
$cparseJSON :: Value -> Parser ScribePrivacy
FromJSON, [ScribePrivacy] -> Encoding
[ScribePrivacy] -> Value
ScribePrivacy -> Encoding
ScribePrivacy -> Value
(ScribePrivacy -> Value)
-> (ScribePrivacy -> Encoding)
-> ([ScribePrivacy] -> Value)
-> ([ScribePrivacy] -> Encoding)
-> ToJSON ScribePrivacy
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [ScribePrivacy] -> Encoding
$ctoEncodingList :: [ScribePrivacy] -> Encoding
toJSONList :: [ScribePrivacy] -> Value
$ctoJSONList :: [ScribePrivacy] -> Value
toEncoding :: ScribePrivacy -> Encoding
$ctoEncoding :: ScribePrivacy -> Encoding
toJSON :: ScribePrivacy -> Value
$ctoJSON :: ScribePrivacy -> Value
ToJSON)
\end{code}
\subsubsection{ScribeDefinition}\label{code:ScribeDefinition}\index{ScribeDefinition}
\label{code:scKind}\index{ScribeDefinition!scKind}
\label{code:scName}\index{ScribeDefinition!scName}
\label{code:scPrivacy}\index{ScribeDefinition!scPrivacy}
\label{code:scRotation}\index{ScribeDefinition!scRotation}
This identifies katip's scribes by type.
\begin{code}
data ScribeDefinition = ScribeDefinition
{ ScribeDefinition -> ScribeKind
scKind :: ScribeKind
, ScribeDefinition -> ScribeFormat
scFormat :: ScribeFormat
, ScribeDefinition -> Text
scName :: Text
, ScribeDefinition -> ScribePrivacy
scPrivacy :: ScribePrivacy
, ScribeDefinition -> Maybe RotationParameters
scRotation :: Maybe RotationParameters
, ScribeDefinition -> Severity
scMinSev :: Severity
, ScribeDefinition -> Severity
scMaxSev :: Severity
}
deriving ((forall x. ScribeDefinition -> Rep ScribeDefinition x)
-> (forall x. Rep ScribeDefinition x -> ScribeDefinition)
-> Generic ScribeDefinition
forall x. Rep ScribeDefinition x -> ScribeDefinition
forall x. ScribeDefinition -> Rep ScribeDefinition x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ScribeDefinition x -> ScribeDefinition
$cfrom :: forall x. ScribeDefinition -> Rep ScribeDefinition x
Generic, ScribeDefinition -> ScribeDefinition -> Bool
(ScribeDefinition -> ScribeDefinition -> Bool)
-> (ScribeDefinition -> ScribeDefinition -> Bool)
-> Eq ScribeDefinition
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ScribeDefinition -> ScribeDefinition -> Bool
$c/= :: ScribeDefinition -> ScribeDefinition -> Bool
== :: ScribeDefinition -> ScribeDefinition -> Bool
$c== :: ScribeDefinition -> ScribeDefinition -> Bool
Eq, Eq ScribeDefinition
Eq ScribeDefinition
-> (ScribeDefinition -> ScribeDefinition -> Ordering)
-> (ScribeDefinition -> ScribeDefinition -> Bool)
-> (ScribeDefinition -> ScribeDefinition -> Bool)
-> (ScribeDefinition -> ScribeDefinition -> Bool)
-> (ScribeDefinition -> ScribeDefinition -> Bool)
-> (ScribeDefinition -> ScribeDefinition -> ScribeDefinition)
-> (ScribeDefinition -> ScribeDefinition -> ScribeDefinition)
-> Ord ScribeDefinition
ScribeDefinition -> ScribeDefinition -> Bool
ScribeDefinition -> ScribeDefinition -> Ordering
ScribeDefinition -> ScribeDefinition -> ScribeDefinition
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 :: ScribeDefinition -> ScribeDefinition -> ScribeDefinition
$cmin :: ScribeDefinition -> ScribeDefinition -> ScribeDefinition
max :: ScribeDefinition -> ScribeDefinition -> ScribeDefinition
$cmax :: ScribeDefinition -> ScribeDefinition -> ScribeDefinition
>= :: ScribeDefinition -> ScribeDefinition -> Bool
$c>= :: ScribeDefinition -> ScribeDefinition -> Bool
> :: ScribeDefinition -> ScribeDefinition -> Bool
$c> :: ScribeDefinition -> ScribeDefinition -> Bool
<= :: ScribeDefinition -> ScribeDefinition -> Bool
$c<= :: ScribeDefinition -> ScribeDefinition -> Bool
< :: ScribeDefinition -> ScribeDefinition -> Bool
$c< :: ScribeDefinition -> ScribeDefinition -> Bool
compare :: ScribeDefinition -> ScribeDefinition -> Ordering
$ccompare :: ScribeDefinition -> ScribeDefinition -> Ordering
$cp1Ord :: Eq ScribeDefinition
Ord, Int -> ScribeDefinition -> ShowS
[ScribeDefinition] -> ShowS
ScribeDefinition -> String
(Int -> ScribeDefinition -> ShowS)
-> (ScribeDefinition -> String)
-> ([ScribeDefinition] -> ShowS)
-> Show ScribeDefinition
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ScribeDefinition] -> ShowS
$cshowList :: [ScribeDefinition] -> ShowS
show :: ScribeDefinition -> String
$cshow :: ScribeDefinition -> String
showsPrec :: Int -> ScribeDefinition -> ShowS
$cshowsPrec :: Int -> ScribeDefinition -> ShowS
Show, [ScribeDefinition] -> Encoding
[ScribeDefinition] -> Value
ScribeDefinition -> Encoding
ScribeDefinition -> Value
(ScribeDefinition -> Value)
-> (ScribeDefinition -> Encoding)
-> ([ScribeDefinition] -> Value)
-> ([ScribeDefinition] -> Encoding)
-> ToJSON ScribeDefinition
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [ScribeDefinition] -> Encoding
$ctoEncodingList :: [ScribeDefinition] -> Encoding
toJSONList :: [ScribeDefinition] -> Value
$ctoJSONList :: [ScribeDefinition] -> Value
toEncoding :: ScribeDefinition -> Encoding
$ctoEncoding :: ScribeDefinition -> Encoding
toJSON :: ScribeDefinition -> Value
$ctoJSON :: ScribeDefinition -> Value
ToJSON)
instance FromJSON ScribeDefinition where
parseJSON :: Value -> Parser ScribeDefinition
parseJSON (Object Object
o) = do
ScribeKind
kind <- Object
o Object -> Text -> Parser ScribeKind
forall a. FromJSON a => Object -> Text -> Parser a
.: Text
"scKind"
Text
name <- Object
o Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
.: Text
"scName"
Maybe ScribeFormat
mayFormat <- Object
o Object -> Text -> Parser (Maybe ScribeFormat)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? Text
"scFormat"
Maybe ScribePrivacy
mayPrivacy <- Object
o Object -> Text -> Parser (Maybe ScribePrivacy)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? Text
"scPrivacy"
Maybe RotationParameters
rotation <- Object
o Object -> Text -> Parser (Maybe RotationParameters)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? Text
"scRotation"
Maybe Severity
mayMinSev <- Object
o Object -> Text -> Parser (Maybe Severity)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? Text
"scMinSev"
Maybe Severity
mayMaxSev <- Object
o Object -> Text -> Parser (Maybe Severity)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? Text
"scMaxSev"
ScribeDefinition -> Parser ScribeDefinition
forall (m :: * -> *) a. Monad m => a -> m a
return (ScribeDefinition -> Parser ScribeDefinition)
-> ScribeDefinition -> Parser ScribeDefinition
forall a b. (a -> b) -> a -> b
$ ScribeDefinition :: ScribeKind
-> ScribeFormat
-> Text
-> ScribePrivacy
-> Maybe RotationParameters
-> Severity
-> Severity
-> ScribeDefinition
ScribeDefinition
{ scKind :: ScribeKind
scKind = ScribeKind
kind
, scName :: Text
scName = Text
name
, scFormat :: ScribeFormat
scFormat = ScribeFormat -> Maybe ScribeFormat -> ScribeFormat
forall a. a -> Maybe a -> a
fromMaybe ScribeFormat
ScJson Maybe ScribeFormat
mayFormat
, scPrivacy :: ScribePrivacy
scPrivacy = ScribePrivacy -> Maybe ScribePrivacy -> ScribePrivacy
forall a. a -> Maybe a -> a
fromMaybe ScribePrivacy
ScPublic Maybe ScribePrivacy
mayPrivacy
, scRotation :: Maybe RotationParameters
scRotation = Maybe RotationParameters
rotation
, scMinSev :: Severity
scMinSev = Severity -> Maybe Severity -> Severity
forall a. a -> Maybe a -> a
fromMaybe Severity
forall a. Bounded a => a
minBound Maybe Severity
mayMinSev
, scMaxSev :: Severity
scMaxSev = Severity -> Maybe Severity -> Severity
forall a. a -> Maybe a -> a
fromMaybe Severity
forall a. Bounded a => a
maxBound Maybe Severity
mayMaxSev
}
parseJSON Value
invalid = String -> Value -> Parser ScribeDefinition
forall a. String -> Value -> Parser a
typeMismatch String
"ScribeDefinition" Value
invalid
\end{code}