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