tinygql 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,45 @@
1
+ module TinyGQL
2
+ module Nodes
3
+ class Node
4
+ include Enumerable
5
+
6
+ <%- nodes.each do |node| -%>
7
+ def <%= node.human_name %>? = false
8
+ <%- end -%>
9
+ def each(&blk)
10
+ yield self
11
+ children.each { _1.each(&blk) }
12
+ end
13
+ end
14
+
15
+ <%- nodes.each do |node| -%>
16
+ class <%= node.name %> < <%= node.parent ? node.parent : "Node" %>
17
+ <%- if node.fields.any? -%>
18
+ attr_reader <%= node.fields.map { ":" + _1.name }.join(", ") %>
19
+
20
+ def initialize <%= node.fields.map(&:name).join(", ") %>
21
+ <%- node.fields.each do |field| -%>
22
+ @<%= field.name %> = <%= field.name %>
23
+ <%- end -%>
24
+ end
25
+ <%- end -%>
26
+
27
+ def accept viz
28
+ viz.handle_<%= node.human_name %> self
29
+ end
30
+
31
+ def fold viz, seed
32
+ viz.handle_<%= node.human_name %> self, seed
33
+ end
34
+
35
+ def <%= node.human_name %>? = true
36
+
37
+ <%- if node.has_children? -%>
38
+ def children
39
+ <%= node.children %>
40
+ end
41
+ <%- end -%>
42
+ end
43
+ <%- end -%>
44
+ end
45
+ end
@@ -0,0 +1,205 @@
1
+ ---
2
+ nodes:
3
+ - name: Document
4
+ fields:
5
+ - definitions: list
6
+
7
+ - name: OperationDefinition
8
+ fields:
9
+ - type: literal
10
+ - name?: literal
11
+ - variable_definitions?: list
12
+ - directives?: list
13
+ - selection_set: list
14
+
15
+ - name: Variable
16
+ fields:
17
+ - name: literal
18
+
19
+ - name: NamedType
20
+ fields:
21
+ - name: literal
22
+
23
+ - name: NotNullType
24
+ fields:
25
+ - type
26
+
27
+ - name: ListType
28
+ fields:
29
+ - type
30
+
31
+ - name: VariableDefinition
32
+ fields:
33
+ - variable
34
+ - type
35
+ - default_value?
36
+
37
+ - name: Value
38
+ fields:
39
+ - value: literal
40
+
41
+ - name: Argument
42
+ fields:
43
+ - name: literal
44
+ - value
45
+
46
+ - name: Field
47
+ fields:
48
+ - aliaz?: literal
49
+ - name: literal
50
+ - arguments?: list
51
+ - directives?: list
52
+ - selection_set?: list
53
+
54
+ - name: ObjectField
55
+ fields:
56
+ - name: literal
57
+ - value
58
+
59
+ - name: IntValue
60
+ parent: Value
61
+
62
+ - name: FloatValue
63
+ parent: Value
64
+
65
+ - name: StringValue
66
+ parent: Value
67
+
68
+ - name: BooleanValue
69
+ parent: Value
70
+
71
+ - name: "NullValue"
72
+ parent: Value
73
+
74
+ - name: EnumValue
75
+ parent: Value
76
+
77
+ - name: ListValue
78
+ parent: Value
79
+
80
+ - name: ObjectValue
81
+ fields:
82
+ - values: list
83
+
84
+ - name: Directive
85
+ fields:
86
+ - name: literal
87
+ - arguments: list
88
+
89
+ - name: TypeCondition
90
+ fields:
91
+ - named_type
92
+
93
+ - name: InlineFragment
94
+ fields:
95
+ - type_condition?
96
+ - directives?: list
97
+ - selection_set: list
98
+
99
+ - name: FragmentSpread
100
+ fields:
101
+ - fragment_name
102
+ - directives?: list
103
+
104
+ - name: FragmentDefinition
105
+ fields:
106
+ - fragment_name
107
+ - type_condition
108
+ - directives?: list
109
+ - selection_set: list
110
+
111
+ - name: RootOperationTypeDefinition
112
+ fields:
113
+ - operation_type
114
+ - named_type
115
+
116
+ - name: SchemaDefinition
117
+ fields:
118
+ - directives?: list
119
+ - root_operation_definitions: list
120
+
121
+ - name: FieldDefinition
122
+ fields:
123
+ - description?: literal
124
+ - name: literal
125
+ - arguments_definition?: list
126
+ - type
127
+ - directives?: list
128
+
129
+ - name: InputValueDefinition
130
+ fields:
131
+ - description?: literal
132
+ - name: literal
133
+ - type
134
+ - default_value?
135
+ - directives?: list
136
+
137
+ - name: ObjectTypeDefinition
138
+ fields:
139
+ - description?: literal
140
+ - name: literal
141
+ - implements_interfaces?: list
142
+ - directives?: list
143
+ - fields_definition?: list
144
+
145
+ - name: InterfaceTypeDefinition
146
+ fields:
147
+ - description?: literal
148
+ - name: literal
149
+ - directives?: list
150
+ - fields_definition?: list
151
+
152
+ - name: UnionTypeDefinition
153
+ fields:
154
+ - description?: literal
155
+ - name: literal
156
+ - directives?: list
157
+ - union_member_types?: list
158
+
159
+ - name: ScalarTypeDefinition
160
+ fields:
161
+ - description?: literal
162
+ - name: literal
163
+ - directives?: list
164
+
165
+ - name: EnumValueDefinition
166
+ fields:
167
+ - description?: literal
168
+ - enum_value
169
+ - directives?: list
170
+
171
+ - name: EnumTypeDefinition
172
+ fields:
173
+ - description?: literal
174
+ - name: literal
175
+ - directives?: list
176
+ - enum_value_definition?: list
177
+
178
+ - name: InputObjectTypeDefinition
179
+ fields:
180
+ - description?: literal
181
+ - name: literal
182
+ - directives?: list
183
+ - input_fields_definition?: list
184
+
185
+ - name: ObjectTypeExtension
186
+ fields:
187
+ - name: literal
188
+ - implements_interfaces?: list
189
+ - directives?: list
190
+ - fields_definition?: list
191
+
192
+ - name: ExecutableDirectiveLocation
193
+ fields:
194
+ - name: literal
195
+
196
+ - name: TypeSystemDirectiveLocation
197
+ fields:
198
+ - name: literal
199
+
200
+ - name: DirectiveDefinition
201
+ fields:
202
+ - description?: literal
203
+ - name: literal
204
+ - arguments_definition?: list
205
+ - directive_locations: list