diff options
| author | Danny Navarro <j@dannynavarro.net> | 2015-09-13 13:49:11 +0200 |
|---|---|---|
| committer | Danny Navarro <j@dannynavarro.net> | 2015-09-13 13:49:11 +0200 |
| commit | 44a2ff4765f6cb9bd317a237b9125d3a9e0c796f (patch) | |
| tree | ae91ae81dd2b098f49f9e704f4de8b0d6c935edb /Data | |
| parent | 97b99eb4482e8b3c7c482ca5e01878150f85cb6c (diff) | |
| download | graphql-44a2ff4765f6cb9bd317a237b9125d3a9e0c796f.tar.gz | |
Minor adjustments in AST for easier parsing
Also `Maybe` wrappers removed. I don't think there needs to be a special
case for empty values vs no values at all.
Diffstat (limited to 'Data')
| -rw-r--r-- | Data/GraphQL/AST.hs | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/Data/GraphQL/AST.hs b/Data/GraphQL/AST.hs index fa3ab69..1625f12 100644 --- a/Data/GraphQL/AST.hs +++ b/Data/GraphQL/AST.hs @@ -16,12 +16,13 @@ data Definition = DefinitionOperation OperationDefinition deriving (Eq,Show) data OperationDefinition = - Query Name (Maybe [VariableDefinition]) (Maybe [Directive]) SelectionSet - | Mutation Name (Maybe [VariableDefinition]) (Maybe [Directive]) SelectionSet - | Subscription Name (Maybe [VariableDefinition]) (Maybe [Directive]) SelectionSet + Query Name [VariableDefinition] [Directive] SelectionSet + | Mutation Name [VariableDefinition] [Directive] SelectionSet + -- Not official yet + -- -- | Subscription Name [VariableDefinition] [Directive] SelectionSet deriving (Eq,Show) -data VariableDefinition = VariableDefinition Variable Type (Maybe DefaultValue) +data VariableDefinition = VariableDefinition Variable Type DefaultValue deriving (Eq,Show) newtype Variable = Variable Name deriving (Eq,Show) @@ -33,9 +34,9 @@ data Selection = SelectionField Field | SelectionInlineFragment InlineFragment deriving (Eq,Show) -data Field = Field (Maybe Alias) Name (Maybe [Argument]) - (Maybe [Directive]) - (Maybe SelectionSet) +data Field = Field Alias Name [Argument] + [Directive] + SelectionSet deriving (Eq,Show) type Alias = Name @@ -44,15 +45,15 @@ data Argument = Argument Name Value deriving (Eq,Show) -- * Fragments -data FragmentSpread = FragmentSpread Name (Maybe [Directive]) +data FragmentSpread = FragmentSpread Name [Directive] deriving (Eq,Show) data InlineFragment = - InlineFragment TypeCondition (Maybe [Directive]) SelectionSet + InlineFragment TypeCondition [Directive] SelectionSet deriving (Eq,Show) data FragmentDefinition = - FragmentDefinition Name TypeCondition (Maybe [Directive]) SelectionSet + FragmentDefinition Name TypeCondition [Directive] SelectionSet deriving (Eq,Show) type TypeCondition = NamedType @@ -60,10 +61,10 @@ type TypeCondition = NamedType -- * Values data Value = ValueVariable Variable - | ValueInt Int - | ValueFloat Float - | ValueString Text + | ValueInt Int -- TODO: Should this be `Integer`? + | ValueFloat Double -- TODO: Should this be `Scientific`? | ValueBoolean Bool + | ValueString Text | ValueEnum Name | ValueList ListValue | ValueObject ObjectValue @@ -79,7 +80,7 @@ type DefaultValue = Value -- * Directives -data Directive = Directive Name (Maybe [Argument]) deriving (Eq,Show) +data Directive = Directive Name [Argument] deriving (Eq,Show) -- * Type Reference @@ -107,15 +108,17 @@ data TypeDefinition = TypeDefinitionObject ObjectTypeDefinition | TypeDefinitionTypeExtension TypeExtensionDefinition deriving (Eq,Show) -data ObjectTypeDefinition = ObjectTypeDefinition Name (Maybe Interfaces) [FieldDefinition] +data ObjectTypeDefinition = ObjectTypeDefinition Name Interfaces [FieldDefinition] deriving (Eq,Show) type Interfaces = [NamedType] -data FieldDefinition = FieldDefinition Name [InputValueDefinition] +data FieldDefinition = FieldDefinition Name ArgumentsDefinition Type deriving (Eq,Show) -data InputValueDefinition = InputValueDefinition Name Type (Maybe DefaultValue) +type ArgumentsDefinition = [InputValueDefinition] + +data InputValueDefinition = InputValueDefinition Name Type DefaultValue deriving (Eq,Show) data InterfaceTypeDefinition = InterfaceTypeDefinition Name [FieldDefinition] |
