Class: GraphQLDocs::Generator
- Inherits:
-
Object
- Object
- GraphQLDocs::Generator
show all
- Includes:
- Helpers
- Defined in:
- lib/graphql-docs/generator.rb
Constant Summary
Constants included
from Helpers
Helpers::SLUGIFY_PRETTY_REGEXP
Instance Attribute Summary collapse
Attributes included from Helpers
#templates
Instance Method Summary
collapse
Methods included from Helpers
#format_type, #graphql_enum_types, #graphql_input_object_types, #graphql_interface_types, #graphql_mutation_types, #graphql_object_types, #graphql_scalar_types, #graphql_union_types, #include, #markdown, #slugify
Constructor Details
#initialize(parsed_schema, options) ⇒ Generator
Returns a new instance of Generator.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# File 'lib/graphql-docs/generator.rb', line 10
def initialize(parsed_schema, options)
@parsed_schema = parsed_schema
@options = options
@renderer = @options[:renderer].new(@options, @parsed_schema)
@graphql_object_template = ERB.new(File.read(@options[:templates][:objects]))
@graphql_mutations_template = ERB.new(File.read(@options[:templates][:mutations]))
@graphql_interfaces_template = ERB.new(File.read(@options[:templates][:interfaces]))
@graphql_enums_template = ERB.new(File.read(@options[:templates][:enums]))
@graphql_unions_template = ERB.new(File.read(@options[:templates][:unions]))
@graphql_input_objects_template = ERB.new(File.read(@options[:templates][:input_objects]))
@graphql_scalars_template = ERB.new(File.read(@options[:templates][:scalars]))
end
|
Instance Attribute Details
#parsed_schema ⇒ Object
Returns the value of attribute parsed_schema.
8
9
10
|
# File 'lib/graphql-docs/generator.rb', line 8
def parsed_schema
@parsed_schema
end
|
Instance Method Details
#create_graphql_enum_pages ⇒ Object
86
87
88
89
90
91
92
93
|
# File 'lib/graphql-docs/generator.rb', line 86
def create_graphql_enum_pages
graphql_enum_types.each do |enum_type|
opts = default_generator_options({ type: enum_type })
contents = @graphql_enums_template.result(OpenStruct.new(opts).instance_eval { binding })
write_file('enum', enum_type['name'], contents)
end
end
|
#create_graphql_input_object_pages ⇒ Object
104
105
106
107
108
109
110
111
|
# File 'lib/graphql-docs/generator.rb', line 104
def create_graphql_input_object_pages
graphql_input_object_types.each do |input_object_type|
opts = default_generator_options({ type: input_object_type })
contents = @graphql_input_objects_template.result(OpenStruct.new(opts).instance_eval { binding })
write_file('input_object', input_object_type['name'], contents)
end
end
|
#create_graphql_interface_pages ⇒ Object
77
78
79
80
81
82
83
84
|
# File 'lib/graphql-docs/generator.rb', line 77
def create_graphql_interface_pages
graphql_interface_types.each do |interface_type|
opts = default_generator_options({ type: interface_type })
contents = @graphql_interfaces_template.result(OpenStruct.new(opts).instance_eval { binding })
write_file('interface', interface_type['name'], contents)
end
end
|
#create_graphql_mutation_pages ⇒ Object
63
64
65
66
67
68
69
70
71
72
73
74
75
|
# File 'lib/graphql-docs/generator.rb', line 63
def create_graphql_mutation_pages
graphql_mutation_types.each do |mutation|
input_name = mutation['args'].first['type']['ofType']['name']
return_name = mutation['type']['name']
input = graphql_input_object_types.find { |t| t['name'] == input_name }
payload = graphql_object_types.find { |t| t['name'] == return_name }
opts = default_generator_options({ type: mutation, input_fields: input, return_fields: payload })
contents = @graphql_mutations_template.result(OpenStruct.new(opts).instance_eval { binding })
write_file('mutation', mutation['name'], contents)
end
end
|
#create_graphql_object_pages ⇒ Object
54
55
56
57
58
59
60
61
|
# File 'lib/graphql-docs/generator.rb', line 54
def create_graphql_object_pages
graphql_object_types.each do |object_type|
next if object_type['name'].start_with?('__')
opts = default_generator_options(type: object_type)
contents = @graphql_object_template.result(OpenStruct.new(opts).instance_eval { binding })
write_file('object', object_type['name'], contents)
end
end
|
#create_graphql_scalar_pages ⇒ Object
113
114
115
116
117
118
119
120
|
# File 'lib/graphql-docs/generator.rb', line 113
def create_graphql_scalar_pages
graphql_scalar_types.each do |scalar_type|
opts = default_generator_options({ type: scalar_type })
contents = @graphql_scalars_template.result(OpenStruct.new(opts).instance_eval { binding })
write_file('scalar', scalar_type['name'], contents)
end
end
|
#create_graphql_union_pages ⇒ Object
95
96
97
98
99
100
101
102
|
# File 'lib/graphql-docs/generator.rb', line 95
def create_graphql_union_pages
graphql_union_types.each do |union_type|
opts = default_generator_options({ type: union_type })
contents = @graphql_unions_template.result(OpenStruct.new(opts).instance_eval { binding })
write_file('union', union_type['name'], contents)
end
end
|
#generate ⇒ Object
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/graphql-docs/generator.rb', line 25
def generate
FileUtils.rm_rf(@options[:output_dir]) if @options[:delete_output]
create_graphql_object_pages
create_graphql_mutation_pages
create_graphql_interface_pages
create_graphql_enum_pages
create_graphql_union_pages
create_graphql_input_object_pages
create_graphql_scalar_pages
unless @options[:templates][:index].nil?
write_file('static', 'index', File.read(@options[:templates][:index]))
end
if @options[:use_default_styles]
assets_dir = File.join(File.dirname(__FILE__), 'layouts', 'assets')
FileUtils.mkdir_p(File.join(@options[:output_dir], 'assets'))
sass = File.join(assets_dir, 'css', 'screen.scss')
system `sass --sourcemap=none #{sass}:#{@options[:output_dir]}/assets/style.css`
FileUtils.cp_r(File.join(assets_dir, 'images'), File.join(@options[:output_dir], 'assets'))
FileUtils.cp_r(File.join(assets_dir, 'webfonts'), File.join(@options[:output_dir], 'assets'))
end
true
end
|