jazzy 0.13.5 → 0.14.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (144) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/Tests.yml +52 -0
  3. data/.rubocop.yml +139 -24
  4. data/CHANGELOG.md +105 -0
  5. data/CONTRIBUTING.md +5 -5
  6. data/Dangerfile +11 -8
  7. data/Gemfile +3 -1
  8. data/Gemfile.lock +101 -77
  9. data/README.md +81 -13
  10. data/Rakefile +13 -12
  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/config.rb +125 -72
  17. data/lib/jazzy/doc.rb +3 -1
  18. data/lib/jazzy/doc_builder.rb +79 -84
  19. data/lib/jazzy/docset_builder.rb +3 -1
  20. data/lib/jazzy/documentation_generator.rb +6 -2
  21. data/lib/jazzy/executable.rb +3 -0
  22. data/lib/jazzy/extensions/bitbucket/img/bitbucket.svg +11 -0
  23. data/lib/jazzy/{themes/apple/assets → extensions/github}/img/gh.png +0 -0
  24. data/lib/jazzy/extensions/gitlab/img/gitlab.svg +23 -0
  25. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_AMS-Regular.ttf +0 -0
  26. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_AMS-Regular.woff +0 -0
  27. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  28. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  29. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  30. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  31. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  32. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  33. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  34. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  35. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  36. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  37. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  38. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  39. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  40. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-Bold.ttf +0 -0
  41. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-Bold.woff +0 -0
  42. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-Bold.woff2 +0 -0
  43. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  44. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  45. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  46. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-Italic.ttf +0 -0
  47. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-Italic.woff +0 -0
  48. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-Italic.woff2 +0 -0
  49. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-Regular.ttf +0 -0
  50. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-Regular.woff +0 -0
  51. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Main-Regular.woff2 +0 -0
  52. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  53. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  54. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  55. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Math-Italic.ttf +0 -0
  56. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Math-Italic.woff +0 -0
  57. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Math-Italic.woff2 +0 -0
  58. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  59. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  60. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  61. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  62. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  63. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  64. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  65. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  66. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  67. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Script-Regular.ttf +0 -0
  68. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Script-Regular.woff +0 -0
  69. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Script-Regular.woff2 +0 -0
  70. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size1-Regular.ttf +0 -0
  71. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size1-Regular.woff +0 -0
  72. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  73. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size2-Regular.ttf +0 -0
  74. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size2-Regular.woff +0 -0
  75. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  76. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size3-Regular.ttf +0 -0
  77. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size3-Regular.woff +0 -0
  78. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  79. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size4-Regular.ttf +0 -0
  80. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size4-Regular.woff +0 -0
  81. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  82. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  83. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  84. data/lib/jazzy/extensions/katex/css/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  85. data/lib/jazzy/extensions/katex/css/katex.min.css +1 -1
  86. data/lib/jazzy/extensions/katex/js/katex.min.js +1 -1
  87. data/lib/jazzy/gem_version.rb +3 -1
  88. data/lib/jazzy/highlighter.rb +17 -3
  89. data/lib/jazzy/jazzy_markdown.rb +112 -31
  90. data/lib/jazzy/podspec_documenter.rb +14 -16
  91. data/lib/jazzy/search_builder.rb +4 -3
  92. data/lib/jazzy/source_declaration/access_control_level.rb +7 -5
  93. data/lib/jazzy/source_declaration/type.rb +29 -3
  94. data/lib/jazzy/source_declaration.rb +18 -3
  95. data/lib/jazzy/source_document.rb +8 -5
  96. data/lib/jazzy/source_host.rb +111 -0
  97. data/lib/jazzy/source_mark.rb +8 -6
  98. data/lib/jazzy/source_module.rb +6 -6
  99. data/lib/jazzy/sourcekitten.rb +157 -86
  100. data/lib/jazzy/stats.rb +14 -3
  101. data/lib/jazzy/symbol_graph/constraint.rb +98 -0
  102. data/lib/jazzy/symbol_graph/ext_node.rb +116 -0
  103. data/lib/jazzy/symbol_graph/graph.rb +200 -0
  104. data/lib/jazzy/symbol_graph/relationship.rb +48 -0
  105. data/lib/jazzy/symbol_graph/sym_node.rb +176 -0
  106. data/lib/jazzy/symbol_graph/symbol.rb +248 -0
  107. data/lib/jazzy/symbol_graph.rb +95 -0
  108. data/lib/jazzy/themes/apple/assets/css/highlight.css.scss +63 -59
  109. data/lib/jazzy/themes/apple/assets/css/jazzy.css.scss +26 -2
  110. data/lib/jazzy/themes/apple/assets/js/jazzy.js +4 -0
  111. data/lib/jazzy/themes/apple/assets/js/jazzy.search.js +4 -0
  112. data/lib/jazzy/themes/apple/assets/js/jquery.min.js +2 -2
  113. data/lib/jazzy/themes/apple/assets/js/lunr.min.js +3 -3
  114. data/lib/jazzy/themes/apple/templates/doc.mustache +4 -5
  115. data/lib/jazzy/themes/apple/templates/footer.mustache +1 -1
  116. data/lib/jazzy/themes/apple/templates/header.mustache +6 -6
  117. data/lib/jazzy/themes/apple/templates/task.mustache +6 -11
  118. data/lib/jazzy/themes/fullwidth/assets/css/highlight.css.scss +63 -59
  119. data/lib/jazzy/themes/fullwidth/assets/css/jazzy.css.scss +11 -2
  120. data/lib/jazzy/themes/fullwidth/assets/js/jazzy.js +4 -0
  121. data/lib/jazzy/themes/fullwidth/assets/js/jazzy.search.js +4 -0
  122. data/lib/jazzy/themes/fullwidth/assets/js/jquery.min.js +2 -2
  123. data/lib/jazzy/themes/fullwidth/assets/js/lunr.min.js +3 -3
  124. data/lib/jazzy/themes/fullwidth/templates/doc.mustache +4 -5
  125. data/lib/jazzy/themes/fullwidth/templates/footer.mustache +1 -1
  126. data/lib/jazzy/themes/fullwidth/templates/header.mustache +8 -8
  127. data/lib/jazzy/themes/fullwidth/templates/task.mustache +6 -11
  128. data/lib/jazzy/themes/jony/assets/css/highlight.css.scss +63 -59
  129. data/lib/jazzy/themes/jony/assets/css/jazzy.css.scss +26 -2
  130. data/lib/jazzy/themes/jony/assets/js/jazzy.js +4 -0
  131. data/lib/jazzy/themes/jony/assets/js/jquery.min.js +2 -2
  132. data/lib/jazzy/themes/jony/templates/doc.mustache +4 -5
  133. data/lib/jazzy/themes/jony/templates/footer.mustache +1 -1
  134. data/lib/jazzy/themes/jony/templates/header.mustache +6 -6
  135. data/lib/jazzy/themes/jony/templates/task.mustache +6 -11
  136. data/lib/jazzy.rb +2 -0
  137. data/spec/integration_spec.rb +59 -45
  138. data/spec/spec_helper/pre_flight.rb +2 -0
  139. data/spec/spec_helper.rb +3 -1
  140. metadata +39 -19
  141. data/.circleci/config.yml +0 -83
  142. data/lib/jazzy/themes/fullwidth/assets/img/gh.png +0 -0
  143. data/lib/jazzy/themes/jony/assets/img/gh.png +0 -0
  144. data/spec/sourcekitten_spec.rb +0 -6
@@ -0,0 +1,111 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jazzy
4
+ # Deal with different source code repositories
5
+ module SourceHost
6
+ # Factory to create the right source host
7
+ def self.create(options)
8
+ return unless options.source_host_url || options.source_host_files_url
9
+
10
+ case options.source_host
11
+ when :github then GitHub.new
12
+ when :gitlab then GitLab.new
13
+ when :bitbucket then BitBucket.new
14
+ end
15
+ end
16
+
17
+ # Use GitHub as the default behaviour.
18
+ class GitHub
19
+ include Config::Mixin
20
+
21
+ # Human readable name, appears in UI
22
+ def name
23
+ 'GitHub'
24
+ end
25
+
26
+ # Jazzy extension with logo
27
+ def extension
28
+ name.downcase
29
+ end
30
+
31
+ # Logo image filename within extension
32
+ def image
33
+ 'gh.png'
34
+ end
35
+
36
+ # URL to link to from logo
37
+ def url
38
+ config.source_host_url
39
+ end
40
+
41
+ # URL to link to from a SourceDeclaration.
42
+ # Compare using `realpath` because `item.file` comes out of
43
+ # SourceKit/etc.
44
+ def item_url(item)
45
+ return unless files_url && item.file
46
+
47
+ realpath = item.file.realpath
48
+ return unless realpath.to_path.start_with?(local_root_realpath)
49
+
50
+ path = realpath.relative_path_from(local_root_realpath)
51
+ fragment =
52
+ if item.start_line && (item.start_line != item.end_line)
53
+ item_url_multiline_fragment(item.start_line, item.end_line)
54
+ else
55
+ item_url_line_fragment(item.line)
56
+ end
57
+
58
+ "#{files_url}/#{path}##{fragment}"
59
+ end
60
+
61
+ private
62
+
63
+ def files_url
64
+ config.source_host_files_url
65
+ end
66
+
67
+ def local_root_realpath
68
+ @local_root_realpath ||= config.source_directory.realpath.to_path
69
+ end
70
+
71
+ # Source host's line numbering link scheme
72
+ def item_url_line_fragment(line)
73
+ "L#{line}"
74
+ end
75
+
76
+ def item_url_multiline_fragment(start_line, end_line)
77
+ "L#{start_line}-L#{end_line}"
78
+ end
79
+ end
80
+
81
+ # GitLab very similar to GitHub
82
+ class GitLab < GitHub
83
+ def name
84
+ 'GitLab'
85
+ end
86
+
87
+ def image
88
+ 'gitlab.svg'
89
+ end
90
+ end
91
+
92
+ # BitBucket has its own line number system
93
+ class BitBucket < GitHub
94
+ def name
95
+ 'Bitbucket'
96
+ end
97
+
98
+ def image
99
+ 'bitbucket.svg'
100
+ end
101
+
102
+ def item_url_line_fragment(line)
103
+ "lines-#{line}"
104
+ end
105
+
106
+ def item_url_multiline_fragment(start_line, end_line)
107
+ "lines-#{start_line}:#{end_line}"
108
+ end
109
+ end
110
+ end
111
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Jazzy
2
4
  class SourceMark
3
5
  attr_accessor :name
@@ -8,24 +10,24 @@ module Jazzy
8
10
  return unless mark_string
9
11
 
10
12
  # Format: 'MARK: - NAME -' with dashes optional
11
- mark_string.sub!(/^MARK: /, '')
13
+ mark_content = mark_string.sub(/^MARK: /, '')
12
14
 
13
- if mark_string.empty?
15
+ if mark_content.empty?
14
16
  # Empty
15
17
  return
16
- elsif mark_string == '-'
18
+ elsif mark_content == '-'
17
19
  # Separator
18
20
  self.has_start_dash = true
19
21
  return
20
22
  end
21
23
 
22
- self.has_start_dash = mark_string.start_with?('- ')
23
- self.has_end_dash = mark_string.end_with?(' -')
24
+ self.has_start_dash = mark_content.start_with?('- ')
25
+ self.has_end_dash = mark_content.end_with?(' -')
24
26
 
25
27
  start_index = has_start_dash ? 2 : 0
26
28
  end_index = has_end_dash ? -3 : -1
27
29
 
28
- self.name = mark_string[start_index..end_index]
30
+ self.name = mark_content[start_index..end_index]
29
31
  end
30
32
 
31
33
  def self.new_generic_requirements(requirements)
@@ -1,32 +1,32 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'uri'
2
4
 
3
5
  require 'jazzy/config'
4
6
  require 'jazzy/source_declaration'
7
+ require 'jazzy/source_host'
5
8
 
6
9
  module Jazzy
7
10
  class SourceModule
8
11
  attr_accessor :name
9
- attr_accessor :root_path
10
12
  attr_accessor :docs
11
13
  attr_accessor :doc_coverage
12
14
  attr_accessor :doc_structure
13
15
  attr_accessor :author_name
14
- attr_accessor :github_url
15
- attr_accessor :github_file_prefix
16
16
  attr_accessor :author_url
17
17
  attr_accessor :dash_url
18
+ attr_accessor :host
18
19
 
19
20
  def initialize(options, docs, doc_structure, doc_coverage)
20
21
  self.docs = docs
21
- self.root_path = options.source_directory
22
22
  self.doc_structure = doc_structure
23
23
  self.doc_coverage = doc_coverage
24
24
  self.name = options.module_name
25
25
  self.author_name = options.author_name
26
- self.github_url = options.github_url
27
- self.github_file_prefix = options.github_file_prefix
28
26
  self.author_url = options.author_url
27
+ self.host = SourceHost.create(options)
29
28
  return unless options.dash_url
29
+
30
30
  self.dash_url =
31
31
  "dash-feed://#{ERB::Util.url_encode(options.dash_url.to_s)}"
32
32
  end