{-# OPTIONS_GHC -Wno-orphans #-}
module Miso.GraphQL.Printer where
import Data.Bool (bool)
import Data.Foldable (Foldable (toList))
import Data.List.NonEmpty (NonEmpty)
import Data.Maybe (catMaybes)
import Miso.GraphQL.AST
import Miso.Prelude hiding (enclosed, lex, unwords)
import Miso.String (ToMisoString, intercalate, unwords)
withDesc :: Maybe Description -> MisoString -> MisoString
withDesc :: Maybe Description -> MisoString -> MisoString
withDesc Maybe Description
Nothing = MisoString -> MisoString
forall a. a -> a
id
withDesc (Just Description
desc) = ((Description -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Description
desc MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> MisoString
"\n") MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<>)
enclosed :: MisoString -> MisoString -> MisoString -> MisoString
enclosed :: MisoString -> MisoString -> MisoString -> MisoString
enclosed MisoString
a MisoString
b MisoString
c = MisoString
a MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> MisoString
c MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> MisoString
b
unwords' :: (Foldable f, ToMisoString a) => f a -> MisoString
unwords' :: forall (f :: * -> *) a.
(Foldable f, ToMisoString a) =>
f a -> MisoString
unwords' f a
xs = [MisoString] -> MisoString
unwords ([MisoString] -> MisoString) -> [MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ a -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (a -> MisoString) -> [a] -> [MisoString]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> f a -> [a]
forall a. f a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList f a
xs
instance ToMisoString Document where
toMisoString :: Document -> MisoString
toMisoString (Document NonEmpty Definition
definitions) = NonEmpty Definition -> MisoString
forall (f :: * -> *) a.
(Foldable f, ToMisoString a) =>
f a -> MisoString
unwords' NonEmpty Definition
definitions
instance ToMisoString Definition where
toMisoString :: Definition -> MisoString
toMisoString (DefinitionExecutable ExecutableDefinition
s) = ExecutableDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString ExecutableDefinition
s
toMisoString (DefinitionTypeSystem TypeSystemDefinition
s) = TypeSystemDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString TypeSystemDefinition
s
toMisoString (ExtensionTypeSystem TypeSystemExtension
s) = TypeSystemExtension -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString TypeSystemExtension
s
instance ToMisoString ExecutableDefinition where
toMisoString :: ExecutableDefinition -> MisoString
toMisoString (DefinitionOperation OperationDefinition
s) = OperationDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString OperationDefinition
s
toMisoString (DefinitionFragment FragmentDefinition
s) = FragmentDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString FragmentDefinition
s
instance ToMisoString OperationDefinition where
toMisoString :: OperationDefinition -> MisoString
toMisoString (AnonymousQuery SelectionSet
selectionSet) = SelectionSet -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString SelectionSet
selectionSet
toMisoString (OperationDefinition Maybe Description
desc OperationType
ot Maybe Name
name Maybe VariablesDefinition
vars Maybe Directives
dirs SelectionSet
selectionSet) =
Maybe Description -> MisoString -> MisoString
withDesc Maybe Description
desc
(MisoString -> MisoString)
-> ([Maybe MisoString] -> MisoString)
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [MisoString] -> MisoString
unwords
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ OperationType -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString OperationType
ot
, Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Name -> MisoString) -> Maybe Name -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Name
name
, VariablesDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (VariablesDefinition -> MisoString)
-> Maybe VariablesDefinition -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe VariablesDefinition
vars
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Directives -> MisoString) -> Maybe Directives -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Directives
dirs
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ SelectionSet -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString SelectionSet
selectionSet
]
instance ToMisoString OperationType where
toMisoString :: OperationType -> MisoString
toMisoString OperationType
Query = MisoString
"query"
toMisoString OperationType
Mutation = MisoString
"mutation"
toMisoString OperationType
Subscription = MisoString
"subscription"
instance ToMisoString (NonEmpty Selection) where
toMisoString :: SelectionSet -> MisoString
toMisoString = MisoString -> MisoString -> MisoString -> MisoString
enclosed MisoString
"{" MisoString
"}" (MisoString -> MisoString)
-> (SelectionSet -> MisoString) -> SelectionSet -> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. SelectionSet -> MisoString
forall (f :: * -> *) a.
(Foldable f, ToMisoString a) =>
f a -> MisoString
unwords'
instance ToMisoString Selection where
toMisoString :: Selection -> MisoString
toMisoString (SelectionField Field
field) = Field -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Field
field
toMisoString (SelectionFragmentSpread FragmentSpread
fragmentSpread) = FragmentSpread -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString FragmentSpread
fragmentSpread
toMisoString (SelectionInlineFragment InlineFragment
inlineFragment) = InlineFragment -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString InlineFragment
inlineFragment
instance ToMisoString Field where
toMisoString :: Field -> MisoString
toMisoString (Field Maybe Alias
alias Name
name Maybe Arguments
args Maybe Directives
dirs Maybe SelectionSet
selectionSet) =
[MisoString] -> MisoString
forall a. Monoid a => [a] -> a
mconcat
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ Alias -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Alias -> MisoString) -> Maybe Alias -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Alias
alias
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name
, Arguments -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Arguments -> MisoString) -> Maybe Arguments -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Arguments
args
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Directives -> MisoString) -> Maybe Directives -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Directives
dirs
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ Maybe SelectionSet -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Maybe SelectionSet
selectionSet
]
instance ToMisoString Alias where
toMisoString :: Alias -> MisoString
toMisoString (Alias Name
name) = Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> MisoString
":"
instance ToMisoString Arguments where
toMisoString :: Arguments -> MisoString
toMisoString = MisoString -> MisoString -> MisoString -> MisoString
enclosed MisoString
"(" MisoString
")" (MisoString -> MisoString)
-> (Arguments -> MisoString) -> Arguments -> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Arguments -> MisoString
forall (f :: * -> *) a.
(Foldable f, ToMisoString a) =>
f a -> MisoString
unwords'
instance ToMisoString Argument where
toMisoString :: Argument -> MisoString
toMisoString (Argument Name
name Value
value) = Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> MisoString
":" MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> Value -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Value
value
instance ToMisoString FragmentSpread where
toMisoString :: FragmentSpread -> MisoString
toMisoString (FragmentSpread FragmentName
fragmentName Maybe Directives
directives) =
[MisoString] -> MisoString
unwords [MisoString
"...", FragmentName -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString FragmentName
fragmentName, MisoString
-> (Directives -> MisoString) -> Maybe Directives -> MisoString
forall b a. b -> (a -> b) -> Maybe a -> b
maybe MisoString
"" Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Maybe Directives
directives]
instance ToMisoString InlineFragment where
toMisoString :: InlineFragment -> MisoString
toMisoString (InlineFragment Maybe TypeCondition
typeCondition Maybe Directives
directives SelectionSet
selectionSet) =
[MisoString] -> MisoString
unwords
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"..."
, TypeCondition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (TypeCondition -> MisoString)
-> Maybe TypeCondition -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe TypeCondition
typeCondition
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Directives -> MisoString) -> Maybe Directives -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Directives
directives
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ SelectionSet -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString SelectionSet
selectionSet
]
instance ToMisoString FragmentDefinition where
toMisoString :: FragmentDefinition -> MisoString
toMisoString (FragmentDefinition Maybe Description
desc FragmentName
fragmentName TypeCondition
typeCondition Maybe Directives
directives SelectionSet
selectionSet) =
Maybe Description -> MisoString -> MisoString
withDesc Maybe Description
desc
(MisoString -> MisoString)
-> ([Maybe MisoString] -> MisoString)
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [MisoString] -> MisoString
unwords
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"fragment"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ FragmentName -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString FragmentName
fragmentName
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ TypeCondition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString TypeCondition
typeCondition
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Directives -> MisoString) -> Maybe Directives -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Directives
directives
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ SelectionSet -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString SelectionSet
selectionSet
]
instance ToMisoString FragmentName where
toMisoString :: FragmentName -> MisoString
toMisoString (FragmentName Name
name) = Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name
instance ToMisoString TypeCondition where
toMisoString :: TypeCondition -> MisoString
toMisoString (TypeCondition NamedType
namedType) = MisoString
"on " MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> NamedType -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString NamedType
namedType
instance ToMisoString Value where
toMisoString :: Value -> MisoString
toMisoString (ValueVariable Variable
variable) = Variable -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Variable
variable
toMisoString (ValueInt Int
i) = String -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (String -> MisoString) -> (Int -> String) -> Int -> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Int -> String
forall a. Show a => a -> String
show (Int -> MisoString) -> Int -> MisoString
forall a b. (a -> b) -> a -> b
$ Int
i
toMisoString (ValueFloat Double
f) = String -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (String -> MisoString)
-> (Double -> String) -> Double -> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Double -> String
forall a. Show a => a -> String
show (Double -> MisoString) -> Double -> MisoString
forall a b. (a -> b) -> a -> b
$ Double
f
toMisoString (ValueString StringValue
s) = StringValue -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString StringValue
s
toMisoString (ValueBoolean Bool
True) = MisoString
"true"
toMisoString (ValueBoolean Bool
False) = MisoString
"false"
toMisoString Value
ValueNull = MisoString
"null"
toMisoString (ValueEnum EnumValue
enumValue) = EnumValue -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString EnumValue
enumValue
toMisoString (ValueList [Value]
listValue) = [Value] -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString [Value]
listValue
toMisoString (ValueObject [ObjectField]
objectValue) = [ObjectField] -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString [ObjectField]
objectValue
instance ToMisoString StringValue where
toMisoString :: StringValue -> MisoString
toMisoString (BlockString MisoString
s) = MisoString
"\"\"\"" MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> MisoString
s MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> MisoString
"\"\"\""
toMisoString (SingleLineString MisoString
s) = MisoString
"\"" MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> MisoString
s MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> MisoString
"\""
instance ToMisoString [Value] where
toMisoString :: [Value] -> MisoString
toMisoString = MisoString -> MisoString -> MisoString -> MisoString
enclosed MisoString
"[" MisoString
"]" (MisoString -> MisoString)
-> ([Value] -> MisoString) -> [Value] -> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Value] -> MisoString
forall (f :: * -> *) a.
(Foldable f, ToMisoString a) =>
f a -> MisoString
unwords'
instance ToMisoString [ObjectField] where
toMisoString :: [ObjectField] -> MisoString
toMisoString = MisoString -> MisoString -> MisoString -> MisoString
enclosed MisoString
"{" MisoString
"}" (MisoString -> MisoString)
-> ([ObjectField] -> MisoString) -> [ObjectField] -> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [ObjectField] -> MisoString
forall (f :: * -> *) a.
(Foldable f, ToMisoString a) =>
f a -> MisoString
unwords'
instance ToMisoString EnumValue where
toMisoString :: EnumValue -> MisoString
toMisoString (EnumValue Name
name) = Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name
instance ToMisoString ObjectField where
toMisoString :: ObjectField -> MisoString
toMisoString (ObjectField Name
name Value
value) =
Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> MisoString
":" MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> Value -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Value
value
instance ToMisoString VariablesDefinition where
toMisoString :: VariablesDefinition -> MisoString
toMisoString = MisoString -> MisoString -> MisoString -> MisoString
enclosed MisoString
"(" MisoString
")" (MisoString -> MisoString)
-> (VariablesDefinition -> MisoString)
-> VariablesDefinition
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. VariablesDefinition -> MisoString
forall (f :: * -> *) a.
(Foldable f, ToMisoString a) =>
f a -> MisoString
unwords'
instance ToMisoString VariableDefinition where
toMisoString :: VariableDefinition -> MisoString
toMisoString (VariableDefinition Maybe Description
desc Variable
variable Type
type' Maybe DefaultValue
defaultValue Maybe Directives
directives) =
Maybe Description -> MisoString -> MisoString
withDesc Maybe Description
desc
(MisoString -> MisoString)
-> ([Maybe MisoString] -> MisoString)
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [MisoString] -> MisoString
unwords
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ Variable -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Variable
variable
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
":"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ Type -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Type
type'
, DefaultValue -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (DefaultValue -> MisoString)
-> Maybe DefaultValue -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe DefaultValue
defaultValue
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Directives -> MisoString) -> Maybe Directives -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Directives
directives
]
instance ToMisoString Variable where
toMisoString :: Variable -> MisoString
toMisoString (Variable Name
name) = MisoString
"$" MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name
instance ToMisoString DefaultValue where
toMisoString :: DefaultValue -> MisoString
toMisoString (DefaultValue Value
value) = MisoString
"=" MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> Value -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Value
value
instance ToMisoString Type where
toMisoString :: Type -> MisoString
toMisoString (TypeNonNull NonNullType
s) = NonNullType -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString NonNullType
s
toMisoString (TypeList ListType
listType) = ListType -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString ListType
listType
toMisoString (TypeNamed NamedType
namedType) = NamedType -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString NamedType
namedType
instance ToMisoString NamedType where
toMisoString :: NamedType -> MisoString
toMisoString (NamedType Name
name) = Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name
instance ToMisoString ListType where
toMisoString :: ListType -> MisoString
toMisoString (ListType Type
type') = MisoString -> MisoString -> MisoString -> MisoString
enclosed MisoString
"[" MisoString
"]" (MisoString -> MisoString) -> MisoString -> MisoString
forall a b. (a -> b) -> a -> b
$ Type -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Type
type'
instance ToMisoString NonNullType where
toMisoString :: NonNullType -> MisoString
toMisoString (NonNullTypeNamed NamedType
namedType) = NamedType -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString NamedType
namedType MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> MisoString
"!"
toMisoString (NonNullTypeList ListType
listType) = ListType -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString ListType
listType MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> MisoString
"!"
instance ToMisoString Directives where
toMisoString :: Directives -> MisoString
toMisoString = Directives -> MisoString
forall (f :: * -> *) a.
(Foldable f, ToMisoString a) =>
f a -> MisoString
unwords'
instance ToMisoString Directive where
toMisoString :: Directive -> MisoString
toMisoString (Directive Name
name Maybe Arguments
arguments) =
[MisoString] -> MisoString
forall a. Monoid a => [a] -> a
mconcat
[ MisoString
"@"
, Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name
, MisoString
-> (Arguments -> MisoString) -> Maybe Arguments -> MisoString
forall b a. b -> (a -> b) -> Maybe a -> b
maybe MisoString
"" Arguments -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Maybe Arguments
arguments
]
instance ToMisoString TypeSystemDefinition where
toMisoString :: TypeSystemDefinition -> MisoString
toMisoString (DefinitionSchema SchemaDefinition
schemaDefinition) = SchemaDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString SchemaDefinition
schemaDefinition
toMisoString (DefinitionType TypeDefinition
typeDefinition) = TypeDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString TypeDefinition
typeDefinition
toMisoString (DefinitionDirective DirectiveDefinition
directiveDefinition) = DirectiveDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString DirectiveDefinition
directiveDefinition
instance ToMisoString TypeSystemExtension where
toMisoString :: TypeSystemExtension -> MisoString
toMisoString (ExtensionSchema SchemaExtension
schemaExtension) = SchemaExtension -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString SchemaExtension
schemaExtension
toMisoString (ExtensionType TypeExtension
typeExtension) = TypeExtension -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString TypeExtension
typeExtension
instance ToMisoString SchemaDefinition where
toMisoString :: SchemaDefinition -> MisoString
toMisoString (SchemaDefinition Maybe Description
desc Maybe Directives
directives RootOperationTypeDefinitions
rootOperationTypeDefinitions) =
Maybe Description -> MisoString -> MisoString
withDesc Maybe Description
desc
(MisoString -> MisoString)
-> ([Maybe MisoString] -> MisoString)
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [MisoString] -> MisoString
unwords
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"schema"
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Directives -> MisoString) -> Maybe Directives -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Directives
directives
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ RootOperationTypeDefinitions -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString RootOperationTypeDefinitions
rootOperationTypeDefinitions
]
instance ToMisoString SchemaExtension where
toMisoString :: SchemaExtension -> MisoString
toMisoString (SchemaExtension Maybe Directives
directives Maybe RootOperationTypeDefinitions
rootOperationTypeDefinitions) =
[MisoString] -> MisoString
unwords
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"extend"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"schema"
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Directives -> MisoString) -> Maybe Directives -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Directives
directives
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ Maybe RootOperationTypeDefinitions -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Maybe RootOperationTypeDefinitions
rootOperationTypeDefinitions
]
instance ToMisoString RootOperationTypeDefinitions where
toMisoString :: RootOperationTypeDefinitions -> MisoString
toMisoString = MisoString -> MisoString -> MisoString -> MisoString
enclosed MisoString
"{" MisoString
"}" (MisoString -> MisoString)
-> (RootOperationTypeDefinitions -> MisoString)
-> RootOperationTypeDefinitions
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. RootOperationTypeDefinitions -> MisoString
forall (f :: * -> *) a.
(Foldable f, ToMisoString a) =>
f a -> MisoString
unwords'
instance ToMisoString RootOperationTypeDefinition where
toMisoString :: RootOperationTypeDefinition -> MisoString
toMisoString (RootOperationTypeDefinition OperationType
operationType NamedType
namedType) =
OperationType -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString OperationType
operationType MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> MisoString
":" MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> NamedType -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString NamedType
namedType
instance ToMisoString Description where
toMisoString :: Description -> MisoString
toMisoString (Description StringValue
stringValue) = StringValue -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString StringValue
stringValue
instance ToMisoString TypeDefinition where
toMisoString :: TypeDefinition -> MisoString
toMisoString (DefinitionScalarType ScalarTypeDefinition
scalarTypeDefinition) = ScalarTypeDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString ScalarTypeDefinition
scalarTypeDefinition
toMisoString (DefinitionObjectType ObjectTypeDefinition
objectTypeDefinition) = ObjectTypeDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString ObjectTypeDefinition
objectTypeDefinition
toMisoString (DefinitionInterfaceType InterfaceTypeDefinition
interfaceTypeDefinition) = InterfaceTypeDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString InterfaceTypeDefinition
interfaceTypeDefinition
toMisoString (DefinitionUnionType UnionTypeDefinition
unionTypeDefinition) = UnionTypeDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString UnionTypeDefinition
unionTypeDefinition
toMisoString (DefinitionEnumType EnumTypeDefinition
enumTypeDefinition) = EnumTypeDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString EnumTypeDefinition
enumTypeDefinition
toMisoString (DefinitionInputObjectType InputObjectTypeDefinition
inputObjectTypeDefinition) = InputObjectTypeDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString InputObjectTypeDefinition
inputObjectTypeDefinition
instance ToMisoString TypeExtension where
toMisoString :: TypeExtension -> MisoString
toMisoString (ExtensionScalarType ScalarTypeExtension
scalarTypeExtension) = ScalarTypeExtension -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString ScalarTypeExtension
scalarTypeExtension
toMisoString (ExtensionObjectType ObjectTypeExtension
objectTypeExtension) = ObjectTypeExtension -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString ObjectTypeExtension
objectTypeExtension
toMisoString (ExtensionInterfaceType InterfaceTypeExtension
interfaceTypeExtension) = InterfaceTypeExtension -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString InterfaceTypeExtension
interfaceTypeExtension
toMisoString (ExtensionUnionType UnionTypeExtension
unionTypeExtension) = UnionTypeExtension -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString UnionTypeExtension
unionTypeExtension
toMisoString (ExtensionEnumType EnumTypeExtension
enumTypeExtension) = EnumTypeExtension -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString EnumTypeExtension
enumTypeExtension
toMisoString (ExtensionInputObjectType InputObjectTypeExtension
inputObjectTypeExtension) = InputObjectTypeExtension -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString InputObjectTypeExtension
inputObjectTypeExtension
instance ToMisoString ScalarTypeDefinition where
toMisoString :: ScalarTypeDefinition -> MisoString
toMisoString (ScalarTypeDefinition Maybe Description
desc Name
name Maybe Directives
directives) =
Maybe Description -> MisoString -> MisoString
withDesc Maybe Description
desc
(MisoString -> MisoString)
-> ([Maybe MisoString] -> MisoString)
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [MisoString] -> MisoString
unwords
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"scalar"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Directives -> MisoString) -> Maybe Directives -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Directives
directives
]
instance ToMisoString ScalarTypeExtension where
toMisoString :: ScalarTypeExtension -> MisoString
toMisoString (ScalarTypeExtension Name
name Directives
directives) =
[MisoString] -> MisoString
unwords
[ MisoString
"extend"
, MisoString
"scalar"
, Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Directives
directives
]
instance ToMisoString ObjectTypeDefinition where
toMisoString :: ObjectTypeDefinition -> MisoString
toMisoString (ObjectTypeDefinition Maybe Description
desc Name
name Maybe ImplementsInterfaces
implementsInterfaces Maybe Directives
directives Maybe FieldsDefinition
fieldsDefinition) =
Maybe Description -> MisoString -> MisoString
withDesc Maybe Description
desc
(MisoString -> MisoString)
-> ([Maybe MisoString] -> MisoString)
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [MisoString] -> MisoString
unwords
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"type"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name
, ImplementsInterfaces -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (ImplementsInterfaces -> MisoString)
-> Maybe ImplementsInterfaces -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ImplementsInterfaces
implementsInterfaces
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Directives -> MisoString) -> Maybe Directives -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Directives
directives
, FieldsDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (FieldsDefinition -> MisoString)
-> Maybe FieldsDefinition -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe FieldsDefinition
fieldsDefinition
]
instance ToMisoString ObjectTypeExtension where
toMisoString :: ObjectTypeExtension -> MisoString
toMisoString (ObjectTypeExtension Name
name Maybe ImplementsInterfaces
implementsInterfaces Maybe Directives
directives Maybe FieldsDefinition
fieldsDefinition) =
[MisoString] -> MisoString
unwords
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"extend"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"type"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name
, ImplementsInterfaces -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (ImplementsInterfaces -> MisoString)
-> Maybe ImplementsInterfaces -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ImplementsInterfaces
implementsInterfaces
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Directives -> MisoString) -> Maybe Directives -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Directives
directives
, FieldsDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (FieldsDefinition -> MisoString)
-> Maybe FieldsDefinition -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe FieldsDefinition
fieldsDefinition
]
instance ToMisoString ImplementsInterfaces where
toMisoString :: ImplementsInterfaces -> MisoString
toMisoString (ImplementsInterfaces NonEmpty NamedType
types) =
MisoString
"implements " MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> MisoString -> [MisoString] -> MisoString
intercalate MisoString
" & " (NamedType -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (NamedType -> MisoString) -> [NamedType] -> [MisoString]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> NonEmpty NamedType -> [NamedType]
forall a. NonEmpty a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList NonEmpty NamedType
types)
instance ToMisoString FieldsDefinition where
toMisoString :: FieldsDefinition -> MisoString
toMisoString (FieldsDefinition NonEmpty FieldDefinition
fields) = MisoString -> MisoString -> MisoString -> MisoString
enclosed MisoString
"{" MisoString
"}" (MisoString -> MisoString) -> MisoString -> MisoString
forall a b. (a -> b) -> a -> b
$ NonEmpty FieldDefinition -> MisoString
forall (f :: * -> *) a.
(Foldable f, ToMisoString a) =>
f a -> MisoString
unwords' NonEmpty FieldDefinition
fields
instance ToMisoString FieldDefinition where
toMisoString :: FieldDefinition -> MisoString
toMisoString (FieldDefinition Maybe Description
desc Name
name Maybe ArgumentsDefinition
argumentsDefinition Type
type' Maybe Directives
directives) =
Maybe Description -> MisoString -> MisoString
withDesc Maybe Description
desc
(MisoString -> MisoString)
-> ([Maybe MisoString] -> MisoString)
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [MisoString] -> MisoString
unwords
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name
, ArgumentsDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (ArgumentsDefinition -> MisoString)
-> Maybe ArgumentsDefinition -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ArgumentsDefinition
argumentsDefinition
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
":"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ Type -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Type
type'
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Directives -> MisoString) -> Maybe Directives -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Directives
directives
]
instance ToMisoString ArgumentsDefinition where
toMisoString :: ArgumentsDefinition -> MisoString
toMisoString (ArgumentsDefinition NonEmpty InputValueDefinition
args) = MisoString -> MisoString -> MisoString -> MisoString
enclosed MisoString
"(" MisoString
")" (MisoString -> MisoString) -> MisoString -> MisoString
forall a b. (a -> b) -> a -> b
$ NonEmpty InputValueDefinition -> MisoString
forall (f :: * -> *) a.
(Foldable f, ToMisoString a) =>
f a -> MisoString
unwords' NonEmpty InputValueDefinition
args
instance ToMisoString InputValueDefinition where
toMisoString :: InputValueDefinition -> MisoString
toMisoString (InputValueDefinition Maybe Description
desc Name
name Type
type' Maybe DefaultValue
defaultValue Maybe Directives
directives) =
Maybe Description -> MisoString -> MisoString
withDesc Maybe Description
desc
(MisoString -> MisoString)
-> ([Maybe MisoString] -> MisoString)
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [MisoString] -> MisoString
unwords
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
":"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ Type -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Type
type'
, DefaultValue -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (DefaultValue -> MisoString)
-> Maybe DefaultValue -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe DefaultValue
defaultValue
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Directives -> MisoString) -> Maybe Directives -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Directives
directives
]
instance ToMisoString InterfaceTypeDefinition where
toMisoString :: InterfaceTypeDefinition -> MisoString
toMisoString
( InterfaceTypeDefinition
Maybe Description
desc
Name
name
Maybe ImplementsInterfaces
implementsInterfaces
Maybe Directives
directives
Maybe FieldsDefinition
fieldsDefinition
) =
Maybe Description -> MisoString -> MisoString
withDesc Maybe Description
desc
(MisoString -> MisoString)
-> ([Maybe MisoString] -> MisoString)
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [MisoString] -> MisoString
unwords
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"interface"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name
, ImplementsInterfaces -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (ImplementsInterfaces -> MisoString)
-> Maybe ImplementsInterfaces -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ImplementsInterfaces
implementsInterfaces
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Directives -> MisoString) -> Maybe Directives -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Directives
directives
, FieldsDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (FieldsDefinition -> MisoString)
-> Maybe FieldsDefinition -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe FieldsDefinition
fieldsDefinition
]
instance ToMisoString InterfaceTypeExtension where
toMisoString :: InterfaceTypeExtension -> MisoString
toMisoString (InterfaceTypeExtension Name
name Maybe ImplementsInterfaces
implementsInterfaces Maybe Directives
directives Maybe FieldsDefinition
fieldsDefinition) =
[MisoString] -> MisoString
unwords
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"extend"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"interface"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name
, ImplementsInterfaces -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (ImplementsInterfaces -> MisoString)
-> Maybe ImplementsInterfaces -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ImplementsInterfaces
implementsInterfaces
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Directives -> MisoString) -> Maybe Directives -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Directives
directives
, FieldsDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (FieldsDefinition -> MisoString)
-> Maybe FieldsDefinition -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe FieldsDefinition
fieldsDefinition
]
instance ToMisoString UnionTypeDefinition where
toMisoString :: UnionTypeDefinition -> MisoString
toMisoString (UnionTypeDefinition Maybe Description
desc Name
name Maybe Directives
directives Maybe UnionMemberTypes
unionMemberTypes) =
Maybe Description -> MisoString -> MisoString
withDesc Maybe Description
desc
(MisoString -> MisoString)
-> ([Maybe MisoString] -> MisoString)
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [MisoString] -> MisoString
unwords
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"union"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Directives -> MisoString) -> Maybe Directives -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Directives
directives
, UnionMemberTypes -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (UnionMemberTypes -> MisoString)
-> Maybe UnionMemberTypes -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe UnionMemberTypes
unionMemberTypes
]
instance ToMisoString UnionMemberTypes where
toMisoString :: UnionMemberTypes -> MisoString
toMisoString (UnionMemberTypes NonEmpty NamedType
types) = MisoString -> [MisoString] -> MisoString
intercalate MisoString
" | " ([MisoString] -> MisoString) -> [MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ NamedType -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (NamedType -> MisoString) -> [NamedType] -> [MisoString]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> NonEmpty NamedType -> [NamedType]
forall a. NonEmpty a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList NonEmpty NamedType
types
instance ToMisoString UnionTypeExtension where
toMisoString :: UnionTypeExtension -> MisoString
toMisoString (UnionTypeExtension Name
name Maybe Directives
directives Maybe UnionMemberTypes
unionMemberTypes) =
[MisoString] -> MisoString
unwords
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"extend"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"union"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Directives -> MisoString) -> Maybe Directives -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Directives
directives
, UnionMemberTypes -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (UnionMemberTypes -> MisoString)
-> Maybe UnionMemberTypes -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe UnionMemberTypes
unionMemberTypes
]
instance ToMisoString EnumTypeDefinition where
toMisoString :: EnumTypeDefinition -> MisoString
toMisoString (EnumTypeDefinition Maybe Description
desc Name
name Maybe Directives
directives Maybe EnumValuesDefinition
enumValuesDefinition) =
Maybe Description -> MisoString -> MisoString
withDesc Maybe Description
desc
(MisoString -> MisoString)
-> ([Maybe MisoString] -> MisoString)
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [MisoString] -> MisoString
unwords
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"enum"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Directives -> MisoString) -> Maybe Directives -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Directives
directives
, EnumValuesDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (EnumValuesDefinition -> MisoString)
-> Maybe EnumValuesDefinition -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe EnumValuesDefinition
enumValuesDefinition
]
instance ToMisoString EnumValuesDefinition where
toMisoString :: EnumValuesDefinition -> MisoString
toMisoString (EnumValuesDefinition NonEmpty EnumValueDefinition
values) = MisoString -> MisoString -> MisoString -> MisoString
enclosed MisoString
"{" MisoString
"}" (MisoString -> MisoString) -> MisoString -> MisoString
forall a b. (a -> b) -> a -> b
$ NonEmpty EnumValueDefinition -> MisoString
forall (f :: * -> *) a.
(Foldable f, ToMisoString a) =>
f a -> MisoString
unwords' NonEmpty EnumValueDefinition
values
instance ToMisoString EnumValueDefinition where
toMisoString :: EnumValueDefinition -> MisoString
toMisoString (EnumValueDefinition Maybe Description
desc EnumValue
enumValue Maybe Directives
directives) =
Maybe Description -> MisoString -> MisoString
withDesc Maybe Description
desc
(MisoString -> MisoString)
-> ([Maybe MisoString] -> MisoString)
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [MisoString] -> MisoString
unwords
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ EnumValue -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString EnumValue
enumValue
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Directives -> MisoString) -> Maybe Directives -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Directives
directives
]
instance ToMisoString EnumTypeExtension where
toMisoString :: EnumTypeExtension -> MisoString
toMisoString (EnumTypeExtension Name
name Maybe Directives
directives Maybe EnumValuesDefinition
enumValuesDefinition) =
[MisoString] -> MisoString
unwords
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"extend"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"enum"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Directives -> MisoString) -> Maybe Directives -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Directives
directives
, EnumValuesDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (EnumValuesDefinition -> MisoString)
-> Maybe EnumValuesDefinition -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe EnumValuesDefinition
enumValuesDefinition
]
instance ToMisoString InputObjectTypeDefinition where
toMisoString :: InputObjectTypeDefinition -> MisoString
toMisoString (InputObjectTypeDefinition Maybe Description
desc Name
name Maybe Directives
directives Maybe InputFieldsDefinition
inputFieldsDefinition) =
Maybe Description -> MisoString -> MisoString
withDesc Maybe Description
desc
(MisoString -> MisoString)
-> ([Maybe MisoString] -> MisoString)
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [MisoString] -> MisoString
unwords
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"input"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Directives -> MisoString) -> Maybe Directives -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Directives
directives
, InputFieldsDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (InputFieldsDefinition -> MisoString)
-> Maybe InputFieldsDefinition -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe InputFieldsDefinition
inputFieldsDefinition
]
instance ToMisoString InputFieldsDefinition where
toMisoString :: InputFieldsDefinition -> MisoString
toMisoString (InputFieldsDefinition NonEmpty InputValueDefinition
fields) = MisoString -> MisoString -> MisoString -> MisoString
enclosed MisoString
"{" MisoString
"}" (MisoString -> MisoString) -> MisoString -> MisoString
forall a b. (a -> b) -> a -> b
$ NonEmpty InputValueDefinition -> MisoString
forall (f :: * -> *) a.
(Foldable f, ToMisoString a) =>
f a -> MisoString
unwords' NonEmpty InputValueDefinition
fields
instance ToMisoString InputObjectTypeExtension where
toMisoString :: InputObjectTypeExtension -> MisoString
toMisoString (InputObjectTypeExtension Name
name Maybe Directives
directives Maybe InputFieldsDefinition
inputFieldsDefinition) =
[MisoString] -> MisoString
unwords
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"extend"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"input"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name
, Directives -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (Directives -> MisoString) -> Maybe Directives -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Directives
directives
, InputFieldsDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (InputFieldsDefinition -> MisoString)
-> Maybe InputFieldsDefinition -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe InputFieldsDefinition
inputFieldsDefinition
]
instance ToMisoString DirectiveDefinition where
toMisoString :: DirectiveDefinition -> MisoString
toMisoString (DirectiveDefinition Maybe Description
desc Name
name Maybe ArgumentsDefinition
argumentsDefinition Bool
repeatable DirectiveLocations
directiveLocations) =
Maybe Description -> MisoString -> MisoString
withDesc Maybe Description
desc
(MisoString -> MisoString)
-> ([Maybe MisoString] -> MisoString)
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [MisoString] -> MisoString
unwords
([MisoString] -> MisoString)
-> ([Maybe MisoString] -> [MisoString])
-> [Maybe MisoString]
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Maybe MisoString] -> [MisoString]
forall a. [Maybe a] -> [a]
catMaybes
([Maybe MisoString] -> MisoString)
-> [Maybe MisoString] -> MisoString
forall a b. (a -> b) -> a -> b
$ [ MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"directive"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ MisoString
"@" MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> Name -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString Name
name
, ArgumentsDefinition -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString (ArgumentsDefinition -> MisoString)
-> Maybe ArgumentsDefinition -> Maybe MisoString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ArgumentsDefinition
argumentsDefinition
, Maybe MisoString -> Maybe MisoString -> Bool -> Maybe MisoString
forall a. a -> a -> Bool -> a
bool Maybe MisoString
forall a. Maybe a
Nothing (MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"repeatable") Bool
repeatable
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just MisoString
"on"
, MisoString -> Maybe MisoString
forall a. a -> Maybe a
Just (MisoString -> Maybe MisoString) -> MisoString -> Maybe MisoString
forall a b. (a -> b) -> a -> b
$ DirectiveLocations -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString DirectiveLocations
directiveLocations
]
instance ToMisoString DirectiveLocations where
toMisoString :: DirectiveLocations -> MisoString
toMisoString = MisoString -> [MisoString] -> MisoString
intercalate MisoString
" | " ([MisoString] -> MisoString)
-> (DirectiveLocations -> [MisoString])
-> DirectiveLocations
-> MisoString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (DirectiveLocation -> MisoString)
-> [DirectiveLocation] -> [MisoString]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DirectiveLocation -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString ([DirectiveLocation] -> [MisoString])
-> (DirectiveLocations -> [DirectiveLocation])
-> DirectiveLocations
-> [MisoString]
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. DirectiveLocations -> [DirectiveLocation]
forall a. NonEmpty a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList
instance ToMisoString DirectiveLocation where
toMisoString :: DirectiveLocation -> MisoString
toMisoString (LocationExecutableDirective ExecutableDirectiveLocation
executableDirectiveLocation) = ExecutableDirectiveLocation -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString ExecutableDirectiveLocation
executableDirectiveLocation
toMisoString (LocationTypeSystemDirective TypeSystemDirectiveLocation
typeSystemDirectiveLocation) = TypeSystemDirectiveLocation -> MisoString
forall str. ToMisoString str => str -> MisoString
toMisoString TypeSystemDirectiveLocation
typeSystemDirectiveLocation
instance ToMisoString ExecutableDirectiveLocation where
toMisoString :: ExecutableDirectiveLocation -> MisoString
toMisoString ExecutableDirectiveLocation
QUERY = MisoString
"QUERY"
toMisoString ExecutableDirectiveLocation
MUTATION = MisoString
"MUTATION"
toMisoString ExecutableDirectiveLocation
SUBSCRIPTION = MisoString
"SUBSCRIPTION"
toMisoString ExecutableDirectiveLocation
FIELD = MisoString
"FIELD"
toMisoString ExecutableDirectiveLocation
FRAGMENT_DEFINITION = MisoString
"FRAGMENT_DEFINITION"
toMisoString ExecutableDirectiveLocation
FRAGMENT_SPREAD = MisoString
"FRAGMENT_SPREAD"
toMisoString ExecutableDirectiveLocation
INLINE_FRAGMENT = MisoString
"INLINE_FRAGMENT"
toMisoString ExecutableDirectiveLocation
VARIABLE_DEFINITION = MisoString
"VARIABLE_DEFINITION"
instance ToMisoString TypeSystemDirectiveLocation where
toMisoString :: TypeSystemDirectiveLocation -> MisoString
toMisoString TypeSystemDirectiveLocation
SCHEMA = MisoString
"SCHEMA"
toMisoString TypeSystemDirectiveLocation
SCALAR = MisoString
"SCALAR"
toMisoString TypeSystemDirectiveLocation
OBJECT = MisoString
"OBJECT"
toMisoString TypeSystemDirectiveLocation
FIELD_DEFINITION = MisoString
"FIELD_DEFINITION"
toMisoString TypeSystemDirectiveLocation
ARGUMENT_DEFINITION = MisoString
"ARGUMENT_DEFINITION"
toMisoString TypeSystemDirectiveLocation
INTERFACE = MisoString
"INTERFACE"
toMisoString TypeSystemDirectiveLocation
UNION = MisoString
"UNION"
toMisoString TypeSystemDirectiveLocation
ENUM = MisoString
"ENUM"
toMisoString TypeSystemDirectiveLocation
ENUM_VALUE = MisoString
"ENUM_VALUE"
toMisoString TypeSystemDirectiveLocation
INPUT_OBJECT = MisoString
"INPUT_OBJECT"
toMisoString TypeSystemDirectiveLocation
INPUT_FIELD_DEFINITION = MisoString
"INPUT_FIELD_DEFINITION"