summaryrefslogtreecommitdiff
path: root/src/Language/GraphQL/AST/Encoder.hs
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2022-12-27 10:37:34 +0100
committerEugen Wissner <belka@caraus.de>2022-12-27 10:38:08 +0100
commita96d4e6ef3b1020d239f0061af5861aadeb278fc (patch)
treeae822d7ca7f3eb03a42ef23d000d9ba7da6d0913 /src/Language/GraphQL/AST/Encoder.hs
parent3ce6e7da461030d7d6f4b356096492c072ce16e2 (diff)
downloadgraphql-a96d4e6ef3b1020d239f0061af5861aadeb278fc.tar.gz
Add Semigroup and Monoid instances for Description
Diffstat (limited to 'src/Language/GraphQL/AST/Encoder.hs')
-rw-r--r--src/Language/GraphQL/AST/Encoder.hs17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/Language/GraphQL/AST/Encoder.hs b/src/Language/GraphQL/AST/Encoder.hs
index a58a161..d19b9e6 100644
--- a/src/Language/GraphQL/AST/Encoder.hs
+++ b/src/Language/GraphQL/AST/Encoder.hs
@@ -72,7 +72,8 @@ typeSystemDefinition formatter = \case
$ optempty (directives formatter) operationDirectives
<> "schema "
<> bracesList formatter operationTypeDefinition (NonEmpty.toList operationTypeDefinitions')
- _ -> "" -- TODO: TypeDefinition and DerictiveDefinition missing.
+ Full.TypeDefinition typeDefinition' -> typeDefinition formatter typeDefinition'
+ _ -> "" -- TODO: DerictiveDefinition missing.
where
operationTypeDefinition (Full.OperationTypeDefinition operationType' namedType')
= indentLine (incrementIndent formatter)
@@ -80,6 +81,20 @@ typeSystemDefinition formatter = \case
<> colon formatter
<> Lazy.Text.fromStrict namedType'
+typeDefinition :: Formatter -> Full.TypeDefinition -> Lazy.Text.Text
+typeDefinition formatter = \case
+ Full.ScalarTypeDefinition description' name' directives'
+ -> optempty (description formatter) description'
+ <> "scalar "
+ <> Lazy.Text.fromStrict name'
+ <> optempty (directives formatter) directives'
+ _typeDefinition' -> "" -- TODO: Types missing.
+
+description :: Formatter -> Full.Description -> Lazy.Text.Text
+description _formatter (Full.Description Nothing) = ""
+description formatter (Full.Description (Just description')) =
+ stringValue formatter description'
+
-- | Converts a t'Full.ExecutableDefinition' into a string.
definition :: Formatter -> Full.ExecutableDefinition -> Lazy.Text
definition formatter x