jazzy 0.13.4 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (146) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/Tests.yml +52 -0
  3. data/.rubocop.yml +123 -24
  4. data/CHANGELOG.md +103 -0
  5. data/CONTRIBUTING.md +5 -5
  6. data/Dangerfile +11 -8
  7. data/Gemfile +3 -1
  8. data/Gemfile.lock +91 -69
  9. data/README.md +85 -13
  10. data/Rakefile +19 -13
  11. data/bin/jazzy +3 -2
  12. data/bin/sourcekitten +0 -0
  13. data/jazzy.gemspec +8 -6
  14. data/js/package-lock.json +30 -25
  15. data/js/package.json +3 -3
  16. data/lib/jazzy.rb +2 -0
  17. data/lib/jazzy/config.rb +124 -70
  18. data/lib/jazzy/doc.rb +3 -1
  19. data/lib/jazzy/doc_builder.rb +75 -81
  20. data/lib/jazzy/docset_builder.rb +3 -1
  21. data/lib/jazzy/documentation_generator.rb +6 -2
  22. data/lib/jazzy/executable.rb +3 -0
  23. data/lib/jazzy/extensions/bitbucket/img/bitbucket.svg +11 -0
  24. data/lib/jazzy/{themes/apple/assets → extensions/github}/img/gh.png +0 -0
  25. data/lib/jazzy/extensions/gitlab/img/gitlab.svg +23 -0
  26. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_AMS-Regular.ttf +0 -0
  27. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_AMS-Regular.woff +0 -0
  28. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  29. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  30. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  31. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  32. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  33. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  34. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  35. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  36. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  37. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  38. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  39. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  40. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  41. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-Bold.ttf +0 -0
  42. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-Bold.woff +0 -0
  43. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-Bold.woff2 +0 -0
  44. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  45. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  46. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  47. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-Italic.ttf +0 -0
  48. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-Italic.woff +0 -0
  49. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-Italic.woff2 +0 -0
  50. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-Regular.ttf +0 -0
  51. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-Regular.woff +0 -0
  52. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-Regular.woff2 +0 -0
  53. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  54. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  55. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  56. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Math-Italic.ttf +0 -0
  57. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Math-Italic.woff +0 -0
  58. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Math-Italic.woff2 +0 -0
  59. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  60. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  61. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  62. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  63. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  64. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  65. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  66. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  67. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  68. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Script-Regular.ttf +0 -0
  69. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Script-Regular.woff +0 -0
  70. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Script-Regular.woff2 +0 -0
  71. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size1-Regular.ttf +0 -0
  72. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size1-Regular.woff +0 -0
  73. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  74. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size2-Regular.ttf +0 -0
  75. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size2-Regular.woff +0 -0
  76. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  77. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size3-Regular.ttf +0 -0
  78. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size3-Regular.woff +0 -0
  79. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  80. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size4-Regular.ttf +0 -0
  81. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size4-Regular.woff +0 -0
  82. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  83. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  84. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  85. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  86. data/lib/jazzy/extensions/katex/css/katex.min.css +1 -1
  87. data/lib/jazzy/extensions/katex/js/katex.min.js +1 -1
  88. data/lib/jazzy/gem_version.rb +3 -1
  89. data/lib/jazzy/highlighter.rb +5 -3
  90. data/lib/jazzy/jazzy_markdown.rb +101 -30
  91. data/lib/jazzy/podspec_documenter.rb +14 -16
  92. data/lib/jazzy/search_builder.rb +4 -3
  93. data/lib/jazzy/source_declaration.rb +24 -5
  94. data/lib/jazzy/source_declaration/access_control_level.rb +7 -5
  95. data/lib/jazzy/source_declaration/type.rb +33 -1
  96. data/lib/jazzy/source_document.rb +8 -5
  97. data/lib/jazzy/source_host.rb +111 -0
  98. data/lib/jazzy/source_mark.rb +8 -6
  99. data/lib/jazzy/source_module.rb +6 -6
  100. data/lib/jazzy/sourcekitten.rb +105 -79
  101. data/lib/jazzy/stats.rb +4 -2
  102. data/lib/jazzy/symbol_graph.rb +95 -0
  103. data/lib/jazzy/symbol_graph/constraint.rb +98 -0
  104. data/lib/jazzy/symbol_graph/ext_node.rb +116 -0
  105. data/lib/jazzy/symbol_graph/graph.rb +195 -0
  106. data/lib/jazzy/symbol_graph/relationship.rb +42 -0
  107. data/lib/jazzy/symbol_graph/sym_node.rb +163 -0
  108. data/lib/jazzy/symbol_graph/symbol.rb +222 -0
  109. data/lib/jazzy/themes/apple/assets/css/highlight.css.scss +63 -59
  110. data/lib/jazzy/themes/apple/assets/css/jazzy.css.scss +101 -4
  111. data/lib/jazzy/themes/apple/assets/img/spinner.gif +0 -0
  112. data/lib/jazzy/themes/apple/assets/js/jazzy.js +4 -0
  113. data/lib/jazzy/themes/apple/assets/js/jazzy.search.js +74 -0
  114. data/lib/jazzy/themes/apple/assets/js/jquery.min.js +2 -2
  115. data/lib/jazzy/themes/apple/assets/js/lunr.min.js +6 -0
  116. data/lib/jazzy/themes/apple/assets/js/typeahead.jquery.js +1694 -0
  117. data/lib/jazzy/themes/apple/templates/doc.mustache +35 -0
  118. data/lib/jazzy/themes/apple/templates/footer.mustache +1 -1
  119. data/lib/jazzy/themes/apple/templates/header.mustache +10 -3
  120. data/lib/jazzy/themes/apple/templates/task.mustache +4 -4
  121. data/lib/jazzy/themes/fullwidth/assets/css/highlight.css.scss +63 -59
  122. data/lib/jazzy/themes/fullwidth/assets/css/jazzy.css.scss +11 -2
  123. data/lib/jazzy/themes/fullwidth/assets/js/jazzy.js +4 -0
  124. data/lib/jazzy/themes/fullwidth/assets/js/jazzy.search.js +4 -0
  125. data/lib/jazzy/themes/fullwidth/assets/js/jquery.min.js +2 -2
  126. data/lib/jazzy/themes/fullwidth/assets/js/lunr.min.js +3 -3
  127. data/lib/jazzy/themes/fullwidth/templates/doc.mustache +30 -0
  128. data/lib/jazzy/themes/fullwidth/templates/footer.mustache +1 -1
  129. data/lib/jazzy/themes/fullwidth/templates/header.mustache +5 -5
  130. data/lib/jazzy/themes/fullwidth/templates/task.mustache +4 -4
  131. data/lib/jazzy/themes/jony/assets/css/highlight.css.scss +63 -59
  132. data/lib/jazzy/themes/jony/assets/css/jazzy.css.scss +34 -2
  133. data/lib/jazzy/themes/jony/assets/js/jazzy.js +4 -0
  134. data/lib/jazzy/themes/jony/assets/js/jquery.min.js +2 -2
  135. data/lib/jazzy/themes/jony/templates/doc.mustache +30 -0
  136. data/lib/jazzy/themes/jony/templates/footer.mustache +1 -1
  137. data/lib/jazzy/themes/jony/templates/header.mustache +5 -5
  138. data/lib/jazzy/themes/jony/templates/task.mustache +4 -4
  139. data/spec/integration_spec.rb +54 -42
  140. data/spec/spec_helper.rb +3 -1
  141. data/spec/spec_helper/pre_flight.rb +2 -0
  142. metadata +43 -19
  143. data/.circleci/config.yml +0 -83
  144. data/lib/jazzy/themes/fullwidth/assets/img/gh.png +0 -0
  145. data/lib/jazzy/themes/jony/assets/img/gh.png +0 -0
  146. data/spec/sourcekitten_spec.rb +0 -6
data/lib/jazzy/doc.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'date'
2
4
  require 'pathname'
3
5
  require 'mustache'
@@ -18,7 +20,7 @@ module Jazzy
18
20
  date = ENV['JAZZY_FAKE_DATE'] || DateTime.now.strftime('%Y-%m-%d')
19
21
  year = date[0..3]
20
22
  "© #{year} [#{config.author_name}](#{config.author_url}). " \
21
- "All rights reserved. (Last updated: #{date})"
23
+ "All rights reserved. (Last updated: #{date})"
22
24
  )
23
25
  Markdown.render_copyright(copyright).chomp
24
26
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'fileutils'
2
4
  require 'mustache'
3
5
  require 'pathname'
@@ -14,6 +16,7 @@ require 'jazzy/source_declaration'
14
16
  require 'jazzy/source_document'
15
17
  require 'jazzy/source_module'
16
18
  require 'jazzy/sourcekitten'
19
+ require 'jazzy/symbol_graph'
17
20
 
18
21
  module Jazzy
19
22
  # This module handles HTML generation, file writing, asset copying,
@@ -50,8 +53,8 @@ module Jazzy
50
53
 
51
54
  def self.children_for_doc(doc)
52
55
  doc.children
53
- .sort_by { |c| [c.nav_order, c.name, c.usr || ''] }
54
- .flat_map do |child|
56
+ .sort_by { |c| [c.nav_order, c.name, c.usr || ''] }
57
+ .flat_map do |child|
55
58
  # FIXME: include arbitrarily nested extensible types
56
59
  [{ name: child.name, url: child.url }] +
57
60
  Array(child.children.select do |sub_child|
@@ -67,11 +70,12 @@ module Jazzy
67
70
  # @return [SourceModule] the documented source module
68
71
  def self.build(options)
69
72
  if options.sourcekitten_sourcefile_configured
70
- stdout = '[' + options.sourcekitten_sourcefile.map(&:read)
71
- .join(',') + ']'
73
+ stdout = "[#{options.sourcekitten_sourcefile.map(&:read).join(',')}]"
72
74
  elsif options.podspec_configured
73
75
  pod_documenter = PodspecDocumenter.new(options.podspec)
74
76
  stdout = pod_documenter.sourcekitten_output(options)
77
+ elsif options.swift_build_tool == :symbolgraph
78
+ stdout = SymbolGraph.build(options)
75
79
  else
76
80
  stdout = Dir.chdir(options.source_directory) do
77
81
  arguments = SourceKitten.arguments_from_options(options)
@@ -101,6 +105,7 @@ module Jazzy
101
105
  def self.each_doc(output_dir, docs, &block)
102
106
  docs.each do |doc|
103
107
  next unless doc.render_as_page?
108
+
104
109
  # Filepath is relative to documentation root:
105
110
  path = output_dir + doc.filepath
106
111
  block.call(doc, path)
@@ -129,8 +134,8 @@ module Jazzy
129
134
  SearchBuilder.build(source_module, output_dir)
130
135
  end
131
136
 
132
- copy_assets(output_dir)
133
- copy_extensions(output_dir)
137
+ copy_extensions(source_module, output_dir)
138
+ copy_theme_assets(output_dir)
134
139
 
135
140
  DocsetBuilder.new(output_dir, source_module).build!
136
141
 
@@ -167,7 +172,7 @@ module Jazzy
167
172
 
168
173
  def self.relative_path_if_inside(path, base_path)
169
174
  relative = path.relative_path_from(base_path)
170
- if relative.to_path =~ %r{/^..(\/|$)/}
175
+ if relative.to_path =~ %r{/^..(/|$)/}
171
176
  path
172
177
  else
173
178
  relative
@@ -192,7 +197,10 @@ module Jazzy
192
197
 
193
198
  lint_report = {
194
199
  warnings: warnings.sort_by do |w|
195
- [w[:file], w[:line] || 0, w[:symbol], w[:symbol_kind]]
200
+ [w[:file] || Pathname(''),
201
+ w[:line] || 0,
202
+ w[:symbol],
203
+ w[:symbol_kind]]
196
204
  end,
197
205
  source_directory: options.source_directory,
198
206
  }
@@ -200,7 +208,7 @@ module Jazzy
200
208
  end
201
209
  end
202
210
 
203
- def self.copy_assets(destination)
211
+ def self.copy_theme_assets(destination)
204
212
  assets_directory = Config.instance.theme_directory + 'assets'
205
213
  FileUtils.cp_r(assets_directory.children, destination)
206
214
  Pathname.glob(destination + 'css/**/*.scss').each do |scss|
@@ -211,12 +219,15 @@ module Jazzy
211
219
  end
212
220
  end
213
221
 
214
- def self.copy_extensions(destination)
222
+ def self.copy_extensions(source_module, destination)
223
+ if source_host = source_module.host&.extension
224
+ copy_extension(source_host, destination)
225
+ end
215
226
  copy_extension('katex', destination) if Markdown.has_math
216
227
  end
217
228
 
218
229
  def self.copy_extension(name, destination)
219
- ext_directory = Pathname(__FILE__).parent + 'extensions/' + name
230
+ ext_directory = Pathname(__dir__) / 'extensions' / name
220
231
  FileUtils.cp_r(ext_directory.children, destination)
221
232
  end
222
233
 
@@ -225,26 +236,37 @@ module Jazzy
225
236
  SourceKitten.autolink_document(html, doc_model)
226
237
  end
227
238
 
239
+ # Build Mustache document - common fields between page types
240
+ def self.new_document(source_module, doc_model)
241
+ Doc.new.tap do |doc|
242
+ doc[:custom_head] = Config.instance.custom_head
243
+ doc[:disable_search] = Config.instance.disable_search
244
+ doc[:doc_coverage] = source_module.doc_coverage unless
245
+ Config.instance.hide_documentation_coverage
246
+ doc[:structure] = source_module.doc_structure
247
+ doc[:module_name] = source_module.name
248
+ doc[:author_name] = source_module.author_name
249
+ if source_host = source_module.host
250
+ doc[:source_host_name] = source_host.name
251
+ doc[:source_host_url] = source_host.url
252
+ doc[:source_host_image] = source_host.image
253
+ doc[:source_host_item_url] = source_host.item_url(doc_model)
254
+ doc[:github_url] = doc[:source_host_url]
255
+ doc[:github_token_url] = doc[:source_host_item_url]
256
+ end
257
+ doc[:dash_url] = source_module.dash_url
258
+ end
259
+ end
260
+
228
261
  # Build Mustache document from a markdown source file
229
- # @param [Config] options Build options
262
+ # @param [SourceModule] module-wide settings
230
263
  # @param [Hash] doc_model Parsed doc. @see SourceKitten.parse
231
264
  # @param [String] path_to_root
232
- # @param [Array] doc_structure doc structure comprised of section names and
233
- # child names and URLs. @see doc_structure_for_docs
234
265
  def self.document_markdown(source_module, doc_model, path_to_root)
235
- doc = Doc.new # Mustache model instance
266
+ doc = new_document(source_module, doc_model)
236
267
  name = doc_model.name == 'index' ? source_module.name : doc_model.name
237
268
  doc[:name] = name
238
269
  doc[:overview] = render(doc_model, doc_model.content(source_module))
239
- doc[:custom_head] = Config.instance.custom_head
240
- doc[:disable_search] = Config.instance.disable_search
241
- doc[:doc_coverage] = source_module.doc_coverage unless
242
- Config.instance.hide_documentation_coverage
243
- doc[:structure] = source_module.doc_structure
244
- doc[:module_name] = source_module.name
245
- doc[:author_name] = source_module.author_name
246
- doc[:github_url] = source_module.github_url
247
- doc[:dash_url] = source_module.dash_url
248
270
  doc[:path_to_root] = path_to_root
249
271
  doc[:hide_name] = true
250
272
  doc.render.gsub(ELIDED_AUTOLINK_TOKEN, path_to_root)
@@ -318,30 +340,6 @@ module Jazzy
318
340
  end
319
341
  # rubocop:enable Metrics/MethodLength
320
342
 
321
- def self.should_link_to_github(file)
322
- return unless file
323
- file = file.realpath.to_path
324
- source_directory = Config.instance.source_directory.to_path
325
- file.start_with?(source_directory)
326
- end
327
-
328
- # Construct Github token URL
329
- # @param [Hash] item Parsed doc child item
330
- # @param [Config] options Build options
331
- def self.gh_token_url(item, source_module)
332
- return unless github_prefix = source_module.github_file_prefix
333
- return unless should_link_to_github(item.file)
334
- gh_line = if item.start_line && (item.start_line != item.end_line)
335
- "#L#{item.start_line}-L#{item.end_line}"
336
- else
337
- "#L#{item.line}"
338
- end
339
- relative_file_path = item.file.realpath.relative_path_from(
340
- source_module.root_path,
341
- )
342
- "#{github_prefix}/#{relative_file_path}#{gh_line}"
343
- end
344
-
345
343
  # Build mustache item for a top-level doc
346
344
  # @param [Hash] item Parsed doc child item
347
345
  # @param [Config] options Build options
@@ -349,27 +347,29 @@ module Jazzy
349
347
  def self.render_item(item, source_module)
350
348
  # Combine abstract and discussion into abstract
351
349
  abstract = (item.abstract || '') + (item.discussion || '')
350
+ source_host_item_url = source_module.host&.item_url(item)
352
351
  {
353
- name: item.name,
354
- name_html: item.name.gsub(':', ':<wbr>'),
355
- abstract: abstract,
356
- declaration: item.display_declaration,
357
- language: item.display_language,
352
+ name: item.name,
353
+ name_html: item.name.gsub(':', ':<wbr>'),
354
+ abstract: abstract,
355
+ declaration: item.display_declaration,
356
+ language: item.display_language,
358
357
  other_language_declaration: item.display_other_language_declaration,
359
- usr: item.usr,
360
- dash_type: item.type.dash_type,
361
- github_token_url: gh_token_url(item, source_module),
362
- default_impl_abstract: item.default_impl_abstract,
363
- from_protocol_extension: item.from_protocol_extension,
364
- return: item.return,
365
- parameters: (item.parameters if item.parameters.any?),
366
- url: (item.url if item.render_as_page?),
367
- start_line: item.start_line,
368
- end_line: item.end_line,
369
- direct_link: item.omit_content_from_parent?,
370
- deprecation_message: item.deprecation_message,
371
- unavailable_message: item.unavailable_message,
372
- usage_discouraged: item.usage_discouraged?,
358
+ usr: item.usr,
359
+ dash_type: item.type.dash_type,
360
+ source_host_item_url: source_host_item_url,
361
+ github_token_url: source_host_item_url,
362
+ default_impl_abstract: item.default_impl_abstract,
363
+ from_protocol_extension: item.from_protocol_extension,
364
+ return: item.return,
365
+ parameters: (item.parameters if item.parameters.any?),
366
+ url: (item.url if item.render_as_page?),
367
+ start_line: item.start_line,
368
+ end_line: item.end_line,
369
+ direct_link: item.omit_content_from_parent?,
370
+ deprecation_message: item.deprecation_message,
371
+ unavailable_message: item.unavailable_message,
372
+ usage_discouraged: item.usage_discouraged?,
373
373
  }
374
374
  end
375
375
  # rubocop:enable Metrics/MethodLength
@@ -406,12 +406,10 @@ module Jazzy
406
406
  end
407
407
 
408
408
  # rubocop:disable Metrics/MethodLength
409
- # Build Mustache document from single parsed doc
410
- # @param [Config] options Build options
409
+ # Build Mustache document from single parsed decl
410
+ # @param [SourceModule] module-wide settings
411
411
  # @param [Hash] doc_model Parsed doc. @see SourceKitten.parse
412
412
  # @param [String] path_to_root
413
- # @param [Array] doc_structure doc structure comprised of section names and
414
- # child names and URLs. @see doc_structure_for_docs
415
413
  def self.document(source_module, doc_model, path_to_root)
416
414
  if doc_model.type.markdown?
417
415
  return document_markdown(source_module, doc_model, path_to_root)
@@ -423,22 +421,18 @@ module Jazzy
423
421
  overview = render(doc_model, alternative_abstract) + overview
424
422
  end
425
423
 
426
- doc = Doc.new # Mustache model instance
427
- doc[:custom_head] = Config.instance.custom_head
428
- doc[:disable_search] = Config.instance.disable_search
429
- doc[:doc_coverage] = source_module.doc_coverage unless
430
- Config.instance.hide_documentation_coverage
424
+ doc = new_document(source_module, doc_model)
431
425
  doc[:name] = doc_model.name
432
426
  doc[:kind] = doc_model.type.name
433
427
  doc[:dash_type] = doc_model.type.dash_type
434
428
  doc[:declaration] = doc_model.display_declaration
429
+ doc[:language] = doc_model.display_language
430
+ doc[:other_language_declaration] =
431
+ doc_model.display_other_language_declaration
435
432
  doc[:overview] = overview
436
- doc[:structure] = source_module.doc_structure
433
+ doc[:parameters] = doc_model.parameters
434
+ doc[:return] = doc_model.return
437
435
  doc[:tasks] = render_tasks(source_module, doc_model.children)
438
- doc[:module_name] = source_module.name
439
- doc[:author_name] = source_module.author_name
440
- doc[:github_url] = source_module.github_url
441
- doc[:dash_url] = source_module.dash_url
442
436
  doc[:path_to_root] = path_to_root
443
437
  doc[:deprecation_message] = doc_model.deprecation_message
444
438
  doc[:unavailable_message] = doc_model.unavailable_message
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'mustache'
2
4
  require 'sqlite3'
3
5
 
@@ -89,7 +91,7 @@ module Jazzy
89
91
  (output_dir + "#{source_module.name}.xml").open('w') do |xml|
90
92
  url = URI.join(config.root_url, "docsets/#{source_module.name}.tgz")
91
93
  xml << "<entry><version>#{config.version}</version><url>#{url}" \
92
- "</url></entry>\n"
94
+ "</url></entry>\n"
93
95
  end
94
96
  end
95
97
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'pathname'
2
4
 
3
5
  require 'jazzy/jazzy_markdown'
@@ -12,19 +14,21 @@ module Jazzy
12
14
  SourceDocument.new.tap do |sd|
13
15
  sd.name = File.basename(file_path, '.md')
14
16
  sd.overview = overview Pathname(file_path)
15
- sd.usr = 'documentation.' + sd.name
17
+ sd.usr = "documentation.#{sd.name}"
16
18
  end
17
19
  end
18
20
  end
19
21
 
20
22
  def self.overview(file_path)
21
- return '' unless file_path && file_path.exist?
23
+ return '' unless file_path&.exist?
24
+
22
25
  file_path.read
23
26
  end
24
27
 
25
28
  def self.documentation_entries
26
29
  return [] unless
27
30
  config.documentation_glob_configured && config.documentation_glob
31
+
28
32
  config.documentation_glob.select { |e| File.file? e }
29
33
  end
30
34
  end
@@ -1,7 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Jazzy
2
4
  module Executable
3
5
  class IO < Array
4
6
  def initialize(io = nil)
7
+ super()
5
8
  @io = io
6
9
  end
7
10
 
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg fill="none" version="1.1" viewBox="0 0 24 21.58" xmlns="http://www.w3.org/2000/svg">
3
+ <path d="m22.95 7.2332h-7.1932l-1.1989 7.0734h-4.9953l-5.8745 6.9934s0.27972 0.2398 0.67935 0.2398h15.665c0.3597 0 0.6794-0.2797 0.7593-0.6394z" fill="url(#paint0_linear)"/>
4
+ <path d="m0.77041 0c-0.47956 0-0.83918 0.43959-0.75926 0.87918l3.237 19.822c0.03996 0.2398 0.15986 0.4796 0.35968 0.6394 0 0 0.27972 0.2398 0.67935 0.2398l6.0743-7.2732h-0.8392l-1.3188-7.0734h14.746l1.039-6.3541c0.08-0.47955-0.2797-0.87918-0.7593-0.87918z" fill="#fff"/>
5
+ <defs>
6
+ <linearGradient id="paint0_linear" x1="27.898" x2="16.618" y1="15.387" y2="23.023" gradientTransform="translate(-4 -5)" gradientUnits="userSpaceOnUse">
7
+ <stop stop-color="#fff" stop-opacity=".4" offset=".071833"/>
8
+ <stop stop-color="#fff" offset="1"/>
9
+ </linearGradient>
10
+ </defs>
11
+ </svg>
@@ -0,0 +1,23 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ height="313.44601"
4
+ width="338.96616"
5
+ xml:space="preserve"
6
+ viewBox="0 0 338.96616 313.44601"
7
+ y="0px"
8
+ x="0px"
9
+ version="1.1">
10
+ <style
11
+ id="style10"
12
+ type="text/css">
13
+ .st2{fill:#FFFFFF;}
14
+ </style>
15
+ <g
16
+ transform="translate(-123.54995,-122.776)"
17
+ id="logo_art">
18
+ <path
19
+ id="path12"
20
+ d="m 461.514,298.355 -18.049,-55.587 c 0.008,0.025 0.011,0.051 0.019,0.076 -0.009,-0.029 -0.014,-0.058 -0.022,-0.087 -10e-4,-0.002 -10e-4,-0.003 -10e-4,-0.005 0,-0.001 0,-0.002 0,-0.002 l -35.83,-110.31 c -1.96,-5.811 -7.353,-9.711 -13.536,-9.663 -6.201,0.032 -11.446,3.857 -13.364,9.748 L 346.721,237.23 H 239.408 L 205.334,132.518 c -1.916,-5.886 -7.162,-9.71 -13.362,-9.742 -0.025,0 -0.049,0 -0.075,0 -6.105,0 -11.509,3.876 -13.49,9.752 l -35.732,110.211 -0.005,0.014 c 0,0.001 0,0.002 0,0.003 -0.009,0.028 -0.013,0.056 -0.022,0.084 0.008,-0.025 0.011,-0.051 0.019,-0.076 l -18.115,55.591 c -2.725,8.392 0.232,17.512 7.36,22.697 L 288.328,434.7 c 0.023,0.017 0.049,0.027 0.072,0.044 0.067,0.048 0.132,0.097 0.2,0.142 -0.064,-0.043 -0.124,-0.09 -0.187,-0.134 0,0 0,-0.001 -0.001,-0.001 0.01,0.008 0.022,0.013 0.033,0.02 0.009,0.006 0.018,0.01 0.027,0.016 0.001,0.001 0.002,0.002 0.004,0.003 0.242,0.168 0.493,0.322 0.753,0.463 0.036,0.02 0.068,0.045 0.104,0.064 10e-4,0 10e-4,10e-4 0.002,10e-4 0.022,0.011 0.042,0.025 0.064,0.036 0.017,0.008 0.035,0.013 0.051,0.021 0.012,0.006 0.025,0.01 0.037,0.015 0.029,0.014 0.061,0.023 0.09,0.038 0.136,0.065 0.279,0.118 0.419,0.175 0.131,0.054 0.258,0.117 0.392,0.164 0.006,0.002 0.011,0.005 0.017,0.007 0.022,0.008 0.042,0.019 0.065,0.027 0.028,0.01 0.055,0.021 0.083,0.03 0.011,0.003 0.022,0.005 0.033,0.008 0.035,0.011 0.073,0.016 0.108,0.026 0.013,0.004 0.028,0.006 0.042,0.01 0.188,0.057 0.383,0.098 0.577,0.141 0.076,0.017 0.149,0.041 0.226,0.055 0.011,0.002 0.021,0.006 0.033,0.008 0.025,0.005 0.048,0.014 0.074,0.018 0.041,0.007 0.081,0.02 0.123,0.026 0.033,0.005 0.067,0.003 0.1,0.008 0.006,0.001 0.011,0 0.017,0.001 0.002,0 0.003,0 0.005,0 0.369,0.053 0.743,0.09 1.124,0.09 0.002,0 0.004,0 0.007,0 v 0 c 0.001,0 0.002,0 0.002,0 0,0 10e-4,0 10e-4,0 0.001,0 0.002,0 0.003,0 0.382,0 0.756,-0.037 1.126,-0.09 10e-4,0 0.003,0 0.004,0 0.006,-0.001 0.012,0 0.018,-0.001 0.033,-0.005 0.068,-0.003 0.101,-0.008 0.042,-0.007 0.082,-0.019 0.124,-0.026 0.025,-0.004 0.048,-0.013 0.073,-0.018 0.011,-0.002 0.021,-0.006 0.032,-0.008 0.078,-0.015 0.153,-0.039 0.231,-0.056 0.191,-0.042 0.383,-0.083 0.57,-0.139 0.013,-0.004 0.026,-0.005 0.039,-0.009 0.037,-0.011 0.075,-0.016 0.112,-0.027 0.011,-0.004 0.023,-0.005 0.034,-0.008 0.029,-0.009 0.057,-0.021 0.085,-0.031 0.022,-0.008 0.042,-0.019 0.064,-0.027 0.006,-0.002 0.011,-0.005 0.017,-0.007 0.142,-0.05 0.276,-0.116 0.415,-0.173 0.129,-0.054 0.261,-0.102 0.387,-0.162 0.031,-0.015 0.064,-0.024 0.094,-0.039 0.012,-0.006 0.026,-0.01 0.038,-0.016 0.017,-0.008 0.035,-0.013 0.052,-0.022 0.023,-0.012 0.045,-0.026 0.067,-0.037 0,0 10e-4,0 10e-4,-10e-4 0.037,-0.019 0.07,-0.046 0.107,-0.066 0.258,-0.14 0.508,-0.293 0.749,-0.46 0.019,-0.013 0.041,-0.023 0.061,-0.037 0.005,-0.004 0.011,-0.006 0.016,-0.01 0.023,-0.017 0.05,-0.028 0.073,-0.045 l 156.44,-113.65 c 7.124,-5.182 10.081,-14.302 7.356,-22.694 z m -67.32,-155.581 30.68,94.456 h -61.36 z m 25.307,110.428 -12.519,16.041 -92.334,118.307 43.677,-134.348 z M 285.428,430.707 c 0,0 0,0 0,0 0.008,0.024 0.021,0.046 0.029,0.071 -0.008,-0.025 -0.021,-0.047 -0.029,-0.071 z M 271.42,387.558 166.624,253.202 v 0 h 61.18 z m -79.545,-244.785 30.737,94.457 h -61.36 z m -50.571,165.36 c -1.516,-1.103 -2.144,-3.05 -1.563,-4.838 l 13.466,-41.325 98.67,126.502 z m 146.749,126.356 c -0.031,-0.025 -0.061,-0.052 -0.091,-0.078 -0.006,-0.005 -0.012,-0.012 -0.019,-0.017 -0.06,-0.05 -0.119,-0.101 -0.177,-0.153 -0.114,-0.099 -0.226,-0.2 -0.333,-0.306 0.009,0.008 0.019,0.015 0.028,0.023 0.012,0.011 0.025,0.02 0.037,0.031 0.229,0.219 0.47,0.425 0.722,0.615 0.003,0.002 0.005,0.005 0.008,0.007 0.012,0.009 0.022,0.02 0.034,0.03 -0.069,-0.05 -0.141,-0.098 -0.209,-0.152 z m 4.975,-32.097 -25.665,-79.059 -22.766,-70.131 h 96.933 z m 5.253,31.849 c -0.06,0.052 -0.118,0.104 -0.179,0.154 -0.007,0.006 -0.014,0.013 -0.021,0.019 -0.031,0.025 -0.06,0.052 -0.09,0.077 -0.066,0.053 -0.138,0.101 -0.207,0.152 0.012,-0.009 0.022,-0.021 0.035,-0.029 0.002,-0.002 0.004,-0.004 0.006,-0.006 0.252,-0.19 0.492,-0.394 0.719,-0.613 0.009,-0.009 0.02,-0.016 0.029,-0.024 0.012,-0.011 0.025,-0.02 0.036,-0.031 -0.106,0.103 -0.217,0.203 -0.328,0.301 z M 444.766,308.13 334.209,388.447 432.912,261.98 l 13.412,41.307 c 0.582,1.796 -0.045,3.743 -1.558,4.843 z"
21
+ class="st2" />
22
+ </g>
23
+ </svg>