Class: Graphql::Generators::TypeGeneratorBase
- Inherits:
-
Rails::Generators::NamedBase
- Object
- Rails::Generators::NamedBase
- Graphql::Generators::TypeGeneratorBase
- Includes:
- Core
- Defined in:
- lib/generators/graphql/type_generator.rb
Direct Known Subclasses
EnumGenerator, InputGenerator, InterfaceGenerator, ObjectGenerator, ScalarGenerator, UnionGenerator
Defined Under Namespace
Classes: NormalizedField
Instance Attribute Summary collapse
-
#graphql_type ⇒ Object
Returns the value of attribute graphql_type.
Class Method Summary collapse
-
.normalize_type_expression(type_expression, mode:, null: true) ⇒ (String, Boolean)
Take a type expression in any combination of GraphQL or Ruby styles and return it in a specified output style TODO: nullability / list with
mode: :graphql
doesn't work.
Instance Method Summary collapse
Methods included from Core
#create_dir, #insert_root_type, #module_namespacing_when_supported, #schema_file_path
Instance Attribute Details
#graphql_type ⇒ Object
Returns the value of attribute graphql_type.
28 29 30 |
# File 'lib/generators/graphql/type_generator.rb', line 28 def graphql_type @graphql_type end |
Class Method Details
.normalize_type_expression(type_expression, mode:, null: true) ⇒ (String, Boolean)
Take a type expression in any combination of GraphQL or Ruby styles
and return it in a specified output style
TODO: nullability / list with mode: :graphql
doesn't work
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/generators/graphql/type_generator.rb', line 41 def self.normalize_type_expression(type_expression, mode:, null: true) if type_expression.start_with?("!") normalize_type_expression(type_expression[1..-1], mode: mode, null: false) elsif type_expression.end_with?("!") normalize_type_expression(type_expression[0..-2], mode: mode, null: false) elsif type_expression.start_with?("[") && type_expression.end_with?("]") name, is_null = normalize_type_expression(type_expression[1..-2], mode: mode, null: null) ["[#{name}]", is_null] elsif type_expression.end_with?("Type") normalize_type_expression(type_expression[0..-5], mode: mode, null: null) elsif type_expression.start_with?("Types::") normalize_type_expression(type_expression[7..-1], mode: mode, null: null) elsif type_expression.start_with?("types.") normalize_type_expression(type_expression[6..-1], mode: mode, null: null) else case mode when :ruby case type_expression when "Int" ["Integer", null] when "Integer", "Float", "Boolean", "String", "ID" [type_expression, null] else ["Types::#{type_expression.camelize}Type", null] end when :graphql [type_expression.camelize, null] else raise "Unexpected normalize mode: #{mode}" end end end |
Instance Method Details
#create_type_file ⇒ Object
30 31 32 |
# File 'lib/generators/graphql/type_generator.rb', line 30 def create_type_file template "#{graphql_type}.erb", "#{[:directory]}/types#{subdirectory}/#{type_file_name}.rb" end |