graphql-docs 1.8.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 664552097194b2af829edfabafa819abd4ce8d82e9c170d6345e3c8dd91028b3
4
- data.tar.gz: 74187b8b707df6c49a4645c26784fde7b0b92c8664b2223a3c093f83ac80a160
3
+ metadata.gz: ea32dc7266ed5483301f965839b71b611f17df3e87cdb1de18ed3ccbd4ff601e
4
+ data.tar.gz: 292fb21272e4293d4ed23ae996281d34522487ab71f47a13ae7943185407f2c1
5
5
  SHA512:
6
- metadata.gz: 3c531188f4244965dae3d0b8561a19813a1e17e75a50d50b4d5635dac9f0f8883772104f713c004aec888d50f757cd53798004a03ef9dbc3f70569323e38174b
7
- data.tar.gz: abfead7c929a259f12abadb2952e31363767f089c5cc6bafd33a19adab0f9be376c5e86a8f5e20a82532b38a5aff6b14736ec64c5527a78a94c8a87876c13e51
6
+ metadata.gz: e3108decb47aeaeddf1fdeef7c0f48cf55c03c0e413fb3354f595284977629704159ccaf0b6b574b5d0845301021fc6211a819138bdf6a63589dccb2e46cabff
7
+ data.tar.gz: 609e77fd5c372af5c23edc1893470ee835cae90f9f0587100542b2d6cd020c155973e78f7e0d59561d384bcced55dbc0bae436512af0fe1615b4ff97183d2ee6
@@ -1,5 +1,5 @@
1
1
  inherit_gem:
2
- rubocop-github:
2
+ rubocop-standard:
3
3
  - config/default.yml
4
4
 
5
5
  Style/StringLiterals:
data/README.md CHANGED
@@ -109,7 +109,7 @@ In your ERB layouts, there are several helper methods you can use. The helper me
109
109
  * `slugify(str)` - This slugifies the given string.
110
110
  * `include(filename, opts)` - This embeds a template from your `includes` folder, passing along the local options provided.
111
111
  * `markdownify(string)` - This converts a string into HTML via CommonMarker.
112
- * `graphql_operation_types`, `graphql_mutation_types`, `graphql_object_types`, `graphql_interface_types`, `graphql_enum_types`, `graphql_union_types`, `graphql_input_object_types`, `graphql_scalar_types` - Collections of the various GraphQL types.
112
+ * `graphql_operation_types`, `graphql_mutation_types`, `graphql_object_types`, `graphql_interface_types`, `graphql_enum_types`, `graphql_union_types`, `graphql_input_object_types`, `graphql_scalar_types`, `graphql_directive_types` - Collections of the various GraphQL types.
113
113
 
114
114
  To call these methods within templates, you must use the dot notation, such as `<%= slugify.(text) %>`.
115
115
 
@@ -127,8 +127,8 @@ The following options are available:
127
127
  | `delete_output` | Deletes `output_dir` before generating content. | `false` |
128
128
  | `pipeline_config` | Defines two sub-keys, `pipeline` and `context`, which are used by `html-pipeline` when rendering your output. | `pipeline` has `ExtendedMarkdownFilter`, `EmojiFilter`, and `TableOfContentsFilter`. `context` has `gfm: false` and `asset_root` set to GitHub's CDN. |
129
129
  | `renderer` | The rendering class to use. | `GraphQLDocs::Renderer`
130
- | `templates` | The templates to use when generating HTML. You may override any of the following keys: `default`, `includes`, `operations`, `objects`, `mutations`, `interfaces`, `enums`, `unions`, `input_objects`, `scalars`. | The defaults are found in _lib/graphql-docs/layouts/_.
131
- | `landing_pages` | The landing page to use when generating HTML for each type. You may override any of the following keys: `index`, `query`, `object`, `mutation`, `interface`, `enum`, `union`, `input_object`, `scalar`. | The defaults are found in _lib/graphql-docs/layouts/_.
130
+ | `templates` | The templates to use when generating HTML. You may override any of the following keys: `default`, `includes`, `operations`, `objects`, `mutations`, `interfaces`, `enums`, `unions`, `input_objects`, `scalars`, `directives`. | The defaults are found in _lib/graphql-docs/layouts/_.
131
+ | `landing_pages` | The landing page to use when generating HTML for each type. You may override any of the following keys: `index`, `query`, `object`, `mutation`, `interface`, `enum`, `union`, `input_object`, `scalar`, `directive`. | The defaults are found in _lib/graphql-docs/landing\_pages/_.
132
132
  | `classes` | Additional class names you can provide to certain elements. | The full list is available in _lib/graphql-docs/configuration.rb_.
133
133
  | `notices` | A proc used to add notices to schema members. See *Customizing Notices* section below. | `nil` |
134
134
 
@@ -153,7 +153,7 @@ A `notice` has the following options:
153
153
  Example of a `notices` proc that adds a notice to the `TeamDiscussion` type:
154
154
 
155
155
  ```ruby
156
- options[:notice] = (schema_member_path) -> {
156
+ options[:notices] = ->(schema_member_path) {
157
157
  notices = []
158
158
 
159
159
  if schema_member_path == "TeamDiscussion"
@@ -38,6 +38,7 @@ Gem::Specification.new do |spec|
38
38
  spec.add_development_dependency 'pry-byebug', '~> 3.6'
39
39
  spec.add_development_dependency 'rake'
40
40
  spec.add_development_dependency 'rubocop'
41
- spec.add_development_dependency 'rubocop-github'
41
+ spec.add_development_dependency 'rubocop-performance'
42
+ spec.add_development_dependency 'rubocop-standard'
42
43
  spec.add_development_dependency 'webmock', '~> 2.3'
43
44
  end
@@ -37,6 +37,7 @@ module GraphQLDocs
37
37
  unions: "#{File.dirname(__FILE__)}/layouts/graphql_unions.html",
38
38
  input_objects: "#{File.dirname(__FILE__)}/layouts/graphql_input_objects.html",
39
39
  scalars: "#{File.dirname(__FILE__)}/layouts/graphql_scalars.html",
40
+ directives: "#{File.dirname(__FILE__)}/layouts/graphql_directives.html",
40
41
  },
41
42
 
42
43
  landing_pages: {
@@ -49,6 +50,7 @@ module GraphQLDocs
49
50
  union: "#{File.dirname(__FILE__)}/landing_pages/union.md",
50
51
  input_object: "#{File.dirname(__FILE__)}/landing_pages/input_object.md",
51
52
  scalar: "#{File.dirname(__FILE__)}/landing_pages/scalar.md",
53
+ directive: "#{File.dirname(__FILE__)}/landing_pages/directive.md",
52
54
 
53
55
  variables: {} # only used for ERB landing pages
54
56
  },
@@ -14,14 +14,14 @@ module GraphQLDocs
14
14
 
15
15
  @renderer = @options[:renderer].new(@parsed_schema, @options)
16
16
 
17
- %i(operations objects mutations interfaces enums unions input_objects scalars).each do |sym|
17
+ %i(operations objects mutations interfaces enums unions input_objects scalars directives).each do |sym|
18
18
  if !File.exist?(@options[:templates][sym])
19
19
  raise IOError, "`#{sym}` template #{@options[:templates][sym]} was not found"
20
20
  end
21
21
  instance_variable_set("@graphql_#{sym}_template", ERB.new(File.read(@options[:templates][sym])))
22
22
  end
23
23
 
24
- %i(index object query mutation interface enum union input_object scalar).each do |sym|
24
+ %i(index object query mutation interface enum union input_object scalar directive).each do |sym|
25
25
  if @options[:landing_pages][sym].nil?
26
26
  instance_variable_set("@#{sym}_landing_page", nil)
27
27
  elsif !File.exist?(@options[:landing_pages][sym])
@@ -58,6 +58,7 @@ module GraphQLDocs
58
58
  create_graphql_union_pages
59
59
  create_graphql_input_object_pages
60
60
  create_graphql_scalar_pages
61
+ create_graphql_directive_pages
61
62
 
62
63
  unless @graphql_index_landing_page.nil?
63
64
  write_file('static', 'index', @graphql_index_landing_page, trim: false)
@@ -95,6 +96,10 @@ module GraphQLDocs
95
96
  write_file('static', 'scalar', @graphql_scalar_landing_page, trim: false)
96
97
  end
97
98
 
99
+ unless @graphql_directive_landing_page.nil?
100
+ write_file('static', 'directive', @graphql_directive_landing_page, trim: false)
101
+ end
102
+
98
103
  if @options[:use_default_styles]
99
104
  assets_dir = File.join(File.dirname(__FILE__), 'layouts', 'assets')
100
105
  FileUtils.mkdir_p(File.join(@options[:output_dir], 'assets'))
@@ -196,6 +201,15 @@ module GraphQLDocs
196
201
  end
197
202
  end
198
203
 
204
+ def create_graphql_directive_pages
205
+ graphql_directive_types.each do |directive_type|
206
+ opts = default_generator_options(type: directive_type)
207
+
208
+ contents = @graphql_directives_template.result(OpenStruct.new(opts).instance_eval { binding })
209
+ write_file('directive', directive_type[:name], contents)
210
+ end
211
+ end
212
+
199
213
  private
200
214
 
201
215
  def default_generator_options(opts = {})
@@ -62,6 +62,10 @@ module GraphQLDocs
62
62
  @parsed_schema[:scalar_types] || []
63
63
  end
64
64
 
65
+ def graphql_directive_types
66
+ @parsed_schema[:directive_types] || []
67
+ end
68
+
65
69
  def split_into_metadata_and_contents(contents, parse: true)
66
70
  opts = {}
67
71
  pieces = yaml_split(contents)
@@ -0,0 +1,9 @@
1
+ ---
2
+ title: Directives
3
+ ---
4
+
5
+ # Directives
6
+
7
+ Directives provide a way to describe alternate runtime execution and type validation behavior in a GraphQL document.
8
+
9
+ For more information, see [the GraphQL spec](https://graphql.github.io/graphql-spec/draft/#sec-Language.Directives).
@@ -0,0 +1,15 @@
1
+ <h1><%= type[:name] %></h1>
2
+
3
+ <%= include.('notices.html', notices: type[:notices]) %>
4
+
5
+ <%= type[:description] %>
6
+
7
+ <%= include.('locations.html', locations: type[:locations]) %>
8
+
9
+ <% unless type[:arguments].empty? %>
10
+
11
+ <h2>Arguments</h2>
12
+
13
+ <%= include.('arguments.html', arguments: type[:arguments]) %>
14
+
15
+ <% end %>
@@ -0,0 +1,9 @@
1
+ <h2 id="locations">Locations</h2>
2
+
3
+ <ul>
4
+
5
+ <% locations.each do |location| %>
6
+ <li><%= location %></li>
7
+ <% end %>
8
+
9
+ </ul>
@@ -119,4 +119,18 @@
119
119
  <% end %>
120
120
  </ul>
121
121
  </li>
122
+
123
+ <li>
124
+ <p><a href="<%= base_url %>/directive">Directives</a></p>
125
+ <ul class="menu-root">
126
+ <% graphql_directive_types.().each do |type| %>
127
+ <% @name = type[:name] %>
128
+ <li>
129
+ <a href="<%= base_url %>/directive/<%= @name.downcase %>/" class="sidebar-link<% if title == @name %> current<% end %>">
130
+ <%= @name %>
131
+ </a>
132
+ </li>
133
+ <% end %>
134
+ </ul>
135
+ </li>
122
136
  </ul>
@@ -1,4 +1,4 @@
1
- <h3 id="fields">Values</h3>
1
+ <h3 id="values">Values</h3>
2
2
 
3
3
  <% values.each do |value| %>
4
4
 
@@ -27,6 +27,7 @@ module GraphQLDocs
27
27
  union_types: [],
28
28
  input_object_types: [],
29
29
  scalar_types: [],
30
+ directive_types: [],
30
31
  }
31
32
  end
32
33
 
@@ -133,13 +134,20 @@ module GraphQLDocs
133
134
  end
134
135
  end
135
136
 
136
- @processed_schema[:mutation_types].sort_by! { |o| o[:name] }
137
- @processed_schema[:object_types].sort_by! { |o| o[:name] }
138
- @processed_schema[:interface_types].sort_by! { |o| o[:name] }
139
- @processed_schema[:enum_types].sort_by! { |o| o[:name] }
140
- @processed_schema[:union_types].sort_by! { |o| o[:name] }
141
- @processed_schema[:input_object_types].sort_by! { |o| o[:name] }
142
- @processed_schema[:scalar_types].sort_by! { |o| o[:name] }
137
+ @schema.directives.each_value do |directive|
138
+ data = {}
139
+ data[:notices] = @options[:notices].call(directive.name)
140
+
141
+ data[:name] = directive.name
142
+ data[:description] = directive.description
143
+ data[:locations] = directive.locations
144
+
145
+ data[:arguments], _ = fetch_fields(directive.arguments, directive.name)
146
+
147
+ @processed_schema[:directive_types] << data
148
+ end
149
+
150
+ sort_by_name!
143
151
 
144
152
  @processed_schema[:interface_types].each do |interface|
145
153
  interface[:implemented_by] = []
@@ -229,5 +237,12 @@ module GraphQLDocs
229
237
  def argument?(field)
230
238
  field.is_a?(::GraphQL::Argument)
231
239
  end
240
+
241
+ def sort_by_name!
242
+ @processed_schema.each_pair do |key, value|
243
+ next if key == :operation_types || key == :root_types
244
+ value.sort_by! { |o| o[:name] }
245
+ end
246
+ end
232
247
  end
233
248
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module GraphQLDocs
3
- VERSION = '1.8.0'.freeze
3
+ VERSION = '1.9.0'.freeze
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphql-docs
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Garen Torikian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-04 00:00:00.000000000 Z
11
+ date: 2019-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: graphql
@@ -207,7 +207,21 @@ dependencies:
207
207
  - !ruby/object:Gem::Version
208
208
  version: '0'
209
209
  - !ruby/object:Gem::Dependency
210
- name: rubocop-github
210
+ name: rubocop-performance
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: rubocop-standard
211
225
  requirement: !ruby/object:Gem::Requirement
212
226
  requirements:
213
227
  - - ">="
@@ -253,6 +267,7 @@ files:
253
267
  - lib/graphql-docs/configuration.rb
254
268
  - lib/graphql-docs/generator.rb
255
269
  - lib/graphql-docs/helpers.rb
270
+ - lib/graphql-docs/landing_pages/directive.md
256
271
  - lib/graphql-docs/landing_pages/enum.md
257
272
  - lib/graphql-docs/landing_pages/index.md
258
273
  - lib/graphql-docs/landing_pages/input_object.md
@@ -296,6 +311,7 @@ files:
296
311
  - lib/graphql-docs/layouts/assets/webfonts/2C4B9D_E_0.woff
297
312
  - lib/graphql-docs/layouts/assets/webfonts/2C4B9D_E_0.woff2
298
313
  - lib/graphql-docs/layouts/default.html
314
+ - lib/graphql-docs/layouts/graphql_directives.html
299
315
  - lib/graphql-docs/layouts/graphql_enums.html
300
316
  - lib/graphql-docs/layouts/graphql_input_objects.html
301
317
  - lib/graphql-docs/layouts/graphql_interfaces.html
@@ -309,6 +325,7 @@ files:
309
325
  - lib/graphql-docs/layouts/includes/deprecations.html
310
326
  - lib/graphql-docs/layouts/includes/fields.html
311
327
  - lib/graphql-docs/layouts/includes/input_fields.html
328
+ - lib/graphql-docs/layouts/includes/locations.html
312
329
  - lib/graphql-docs/layouts/includes/notices.html
313
330
  - lib/graphql-docs/layouts/includes/possible_types.html
314
331
  - lib/graphql-docs/layouts/includes/sidebar.html