lib/graphql-docs/helpers.rb in graphql-docs-0.3.0 vs lib/graphql-docs/helpers.rb in graphql-docs-0.4.0
- old
+ new
@@ -18,9 +18,66 @@
def markdown(string)
GitHub::Markdown.render(string || 'n/a')
end
+ # Do you think I am proud of this? I am not.
+ def format_type(field)
+ type_path = name_slug = nil
+ type_name = ''
+
+ if field['type']['kind'] == 'NON_NULL'
+ type_name << '!'
+
+ if !field['type']['ofType']['ofType'].nil?
+ # we're going to be a list...but what kind?!
+ type_name << '['
+ if !field['type']['ofType']['ofType']['ofType'].nil?
+ # A required list of required items: ![!Blah]
+ if field['type']['ofType']['ofType']['kind'] == 'NON_NULL'
+ type_name << '!'
+ end
+ type_path = field['type']['ofType']['ofType']['ofType']['kind']
+ type_name << field['type']['ofType']['ofType']['ofType']['name']
+ name_slug = field['type']['ofType']['ofType']['ofType']['name']
+ else
+ # A required list of non-required items: ![Blah]
+ type_path = field['type']['ofType']['ofType']['kind']
+ type_name << field['type']['ofType']['ofType']['name']
+ name_slug = field['type']['ofType']['ofType']['name']
+ end
+ type_name << ']'
+ else
+ # Simple non-null item: !Blah
+ type_path = field['type']['ofType']['kind']
+ type_name << field['type']['ofType']['name']
+ name_slug = field['type']['ofType']['name']
+ end
+ elsif field['type']['kind'] == 'LIST'
+ type_name << '['
+ if field['type']['ofType']['kind'] == 'NON_NULL'
+ # Nullable list of non-null items: [!Blah]
+ type_name << '!'
+ type_path = field['type']['ofType']['ofType']['kind']
+ type_name << field['type']['ofType']['ofType']['name']
+ name_slug = field['type']['ofType']['ofType']['name']
+ else
+ # Nullable list of nullable items: [Blah]
+ type_path = field['type']['ofType']['kind']
+ type_name << field['type']['ofType']['name']
+ name_slug = field['type']['ofType']['name']
+ end
+ type_name << ']'
+ else
+ # Simple nullable item: Blah
+ type_path = field['type']['kind']
+ type_name << field['type']['name']
+ name_slug = field['type']['name']
+ end
+
+ [type_path.downcase, type_name, name_slug.downcase]
+ end
+
def graphql_mutation_types
@parsed_schema['mutation_types']
end
def graphql_object_types