docrb-html 0.3.0 → 0.3.2
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 +4 -4
- data/Gemfile.lock +1 -1
- data/assets/class_path_reference.scss +30 -0
- data/assets/markdown.scss +4 -0
- data/assets/reference.scss +5 -0
- data/assets/style.scss +1 -0
- data/lib/docrb-html.rb +18 -6
- data/lib/renderer/component/class_path_reference.rb +9 -0
- data/lib/renderer/component/doc_box.rb +1 -1
- data/lib/renderer/component/reference.rb +1 -1
- data/lib/renderer/helpers.rb +4 -3
- data/lib/renderer/page.rb +9 -1
- data/lib/renderer/version.rb +1 -1
- data/templates/base.erb +4 -7
- data/templates/breadcrumb.erb +3 -3
- data/templates/class_path_reference.erb +9 -0
- data/templates/documentation_block.erb +1 -1
- data/templates/documentation_comment.erb +3 -2
- data/templates/method_argument.erb +6 -1
- data/templates/reference.erb +2 -2
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d537de0bf7498e0737d3e5fa22fdce806a5fc60cd43db277654bf6d29e5f166
|
4
|
+
data.tar.gz: 8ad531ba61d72206428b7c51146407e64b67e31d52831e46871f0511c868aab4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64bed70222a7dca33da8f1d63f744da880bd8a1cd5e94f2a32816f77453b9d0d99c4529104a106b900f081591e4fb1ed2b897279b7bbdc53c0f5d0e28a0ecafc
|
7
|
+
data.tar.gz: 2f4c229846d54b5447283693eadb795d1e2c460959bafe6ebe8614d248b8b0b92ac8d6a923b159ff6e7d3b87f5e5e842aed788cd30aa402768e1a65e57ae6194
|
data/Gemfile.lock
CHANGED
@@ -0,0 +1,30 @@
|
|
1
|
+
.html div.class-path-reference-base {
|
2
|
+
@include mono;
|
3
|
+
display: flex;
|
4
|
+
flex-wrap: wrap;
|
5
|
+
|
6
|
+
span {
|
7
|
+
white-space: unset;
|
8
|
+
|
9
|
+
a {
|
10
|
+
@include mono;
|
11
|
+
}
|
12
|
+
|
13
|
+
&.segment {
|
14
|
+
&:not(:last-child) {
|
15
|
+
::after {
|
16
|
+
content: '::'
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
|
21
|
+
&.class a {
|
22
|
+
color: #FFAB42;
|
23
|
+
}
|
24
|
+
|
25
|
+
&.module a {
|
26
|
+
color: #579AD1;
|
27
|
+
}
|
28
|
+
}
|
29
|
+
}
|
30
|
+
}
|
data/assets/markdown.scss
CHANGED
data/assets/reference.scss
CHANGED
data/assets/style.scss
CHANGED
data/lib/docrb-html.rb
CHANGED
@@ -29,6 +29,8 @@ require_relative "renderer/metadata"
|
|
29
29
|
require_relative "renderer/entities"
|
30
30
|
|
31
31
|
class Renderer
|
32
|
+
attr_reader :spec
|
33
|
+
|
32
34
|
def now = Time.now.strftime("%A, %-d %b %Y %H:%M:%S %Z")
|
33
35
|
|
34
36
|
def output_path(*args) = File.join(@output, *args.map(&:to_s))
|
@@ -55,6 +57,11 @@ class Renderer
|
|
55
57
|
.map { outline(_1) }
|
56
58
|
end
|
57
59
|
|
60
|
+
def make_path(*args)
|
61
|
+
root = spec.fetch(:base_path, "/")
|
62
|
+
File.join(root, *args.flatten.map(&:to_s))
|
63
|
+
end
|
64
|
+
|
58
65
|
def outline(object, level = 0)
|
59
66
|
{
|
60
67
|
level:,
|
@@ -73,16 +80,21 @@ class Renderer
|
|
73
80
|
links: Metadata.project_links(@spec)
|
74
81
|
)
|
75
82
|
|
76
|
-
|
77
|
-
|
83
|
+
readme = if @spec[:readme]
|
84
|
+
Component::Markdown.new(source: Markdown.render(@spec[:readme]))
|
85
|
+
else
|
86
|
+
Component::Markdown.new(source: "<div class=\"html\">" \
|
87
|
+
"<div class=\"faded\">This project does not contain a README.</div></div>")
|
88
|
+
end
|
78
89
|
|
90
|
+
index = Page.new(title: "#{@spec[:name]} - Docrb") do
|
79
91
|
[
|
80
92
|
project_header,
|
81
93
|
Component::TabBar.new(
|
82
94
|
selected_index: 0,
|
83
95
|
items: [
|
84
|
-
{ name: "Readme", href: "/" },
|
85
|
-
{ name: "Components", href: "/components.html" }
|
96
|
+
{ name: "Readme", href: make_path("/") },
|
97
|
+
{ name: "Components", href: make_path("/components.html") }
|
86
98
|
]
|
87
99
|
),
|
88
100
|
readme,
|
@@ -96,8 +108,8 @@ class Renderer
|
|
96
108
|
Component::TabBar.new(
|
97
109
|
selected_index: 1,
|
98
110
|
items: [
|
99
|
-
{ name: "Readme", href: "/" },
|
100
|
-
{ name: "Components", href: "/components.html" }
|
111
|
+
{ name: "Readme", href: make_path("/") },
|
112
|
+
{ name: "Components", href: make_path("/components.html") }
|
101
113
|
]
|
102
114
|
),
|
103
115
|
Component::ComponentList.new(list: make_outline),
|
@@ -12,7 +12,7 @@ class Renderer
|
|
12
12
|
:page_components
|
13
13
|
|
14
14
|
def prepare
|
15
|
-
@has_class_docs = (item.doc && !item.doc.empty?) || false
|
15
|
+
@has_class_docs = (item.doc && !item.doc.empty? && !item.doc[:value].empty?) || false
|
16
16
|
@instance_methods = item.all_instance_methods
|
17
17
|
@class_methods = item.all_class_methods
|
18
18
|
@instance_attributes = item.kind == :class ? item.all_instance_attributes : []
|
data/lib/renderer/helpers.rb
CHANGED
@@ -90,19 +90,20 @@ class Renderer
|
|
90
90
|
parent ||= obj.parent
|
91
91
|
|
92
92
|
case (v = parent.source_of(obj))
|
93
|
-
when :inherited, :included, :extended then
|
93
|
+
when :inherited, :included, :extended then "inherited"
|
94
94
|
when :self then ("override" if obj.try(:overriding))
|
95
95
|
else raise "WTF? Source of #{obj} is #{v.inspect}!"
|
96
96
|
end
|
97
97
|
end
|
98
98
|
|
99
|
+
def make_path(*) = self.class.current_renderer.make_path(*)
|
100
|
+
|
99
101
|
def path_of(object, root: true)
|
100
102
|
return [] if object.nil? && !root
|
101
103
|
return [object.name] + path_of(object.parent, root: false) unless root
|
102
104
|
|
103
105
|
path = ["#{object.name}.html"] + path_of(object.parent, root: false)
|
104
|
-
path
|
105
|
-
path.reverse.join("/")
|
106
|
+
make_path(*path.reverse)
|
106
107
|
end
|
107
108
|
|
108
109
|
def link_for(object)
|
data/lib/renderer/page.rb
CHANGED
@@ -8,9 +8,17 @@ class Renderer
|
|
8
8
|
@title = "#{title} - Docrb"
|
9
9
|
@body = body || -> { "" }
|
10
10
|
@level = level
|
11
|
+
@make_path = -> (path) { Helpers.current_renderer.make_path(path) }
|
11
12
|
end
|
12
13
|
|
13
|
-
def render
|
14
|
+
def render
|
15
|
+
PAGE_BASE.render(Object.new,
|
16
|
+
make_path: @make_path,
|
17
|
+
title: @title,
|
18
|
+
level: @level,
|
19
|
+
body: @body.call
|
20
|
+
)
|
21
|
+
end
|
14
22
|
|
15
23
|
def render_to(path) = File.write(path, render)
|
16
24
|
end
|
data/lib/renderer/version.rb
CHANGED
data/templates/base.erb
CHANGED
@@ -7,12 +7,9 @@
|
|
7
7
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
8
8
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="true" />
|
9
9
|
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@300;400;500&family=Inter:wght@300;400;500&display=swap" rel="stylesheet" />
|
10
|
-
|
11
|
-
<
|
12
|
-
|
13
|
-
<link rel="stylesheet" type="text/css" href="style.css" />
|
14
|
-
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/>
|
15
|
-
<link rel="icon" href="favicon.ico" type="image/x-icon"/>
|
10
|
+
<link rel="stylesheet" type="text/css" href="<%= make_path.call("style.css") %>" />
|
11
|
+
<link rel="shortcut icon" href="<%= make_path.call("favicon.ico") %>" type="image/x-icon"/>
|
12
|
+
<link rel="icon" href="<%= make_path.call("favicon.ico") %>" type="image/x-icon"/>
|
16
13
|
</head>
|
17
14
|
<body>
|
18
15
|
<% if body.is_a? Array %>
|
@@ -20,6 +17,6 @@
|
|
20
17
|
<% else %>
|
21
18
|
<%= body %>
|
22
19
|
<% end %>
|
23
|
-
<script type="text/javascript" src="filtering.js"></script>
|
20
|
+
<script type="text/javascript" src="<%= make_path.call("filtering.js") %>"></script>
|
24
21
|
</body>
|
25
22
|
</html>
|
data/templates/breadcrumb.erb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
<% div("breadcrumb-base", id:) do %>
|
2
2
|
<div class="link">
|
3
|
-
<a href="
|
3
|
+
<a href="<%= make_path %>">
|
4
4
|
<%= svg("home") %>
|
5
5
|
<span class="padded">
|
6
6
|
<%= project_name %>
|
@@ -11,13 +11,13 @@
|
|
11
11
|
<%= svg("breadcrumb_separator") %>
|
12
12
|
<div class="link">
|
13
13
|
<% if i[:parents].empty? && idx == 0 %>
|
14
|
-
<a href="components.html">
|
14
|
+
<a href="<%= make_path("/components.html") %>">
|
15
15
|
<span class="padded">
|
16
16
|
<%= i[:name] %>
|
17
17
|
</span>
|
18
18
|
</a>
|
19
19
|
<% else %>
|
20
|
-
<a href="<%= (i[:parents] + [idx == 0 ? nil : i[:name]]).flatten.compact
|
20
|
+
<a href="<%= make_path((i[:parents] + [idx == 0 ? nil : i[:name]]).flatten.compact) %>.html">
|
21
21
|
<span class="padded">
|
22
22
|
<%= i[:name] %>
|
23
23
|
</span>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<% div("class-path-reference-base", id:) do %>
|
2
|
+
<% if doc[:prefix] %>
|
3
|
+
<span><%= doc[:prefix] %></span>
|
4
|
+
<% end %>
|
5
|
+
<% doc[:segments].each do |segment| %>
|
6
|
+
<span class="segment <%= segment.kind %>"><a class="dashed" href="<%= link_for(segment) %>"><%= segment.name %></a></span>
|
7
|
+
<% end %>
|
8
|
+
<span class="segment <%= doc[:target].kind %>"><a class="dashed" href="<%= link_for(doc[:target]) %>"><%= doc[:target].name %></a></span>
|
9
|
+
<% end %>
|
@@ -8,12 +8,13 @@
|
|
8
8
|
<% elsif doc[:type] == :neutral_identifier || doc[:type] == :unresolved_identifier %>
|
9
9
|
<code><%= doc[:value] %></code>
|
10
10
|
<% elsif doc[:type] == :reference %>
|
11
|
-
<%= reference(object:
|
11
|
+
<%= reference(object: doc) %>
|
12
12
|
<% elsif doc[:type] == :symbol %>
|
13
13
|
<%= symbol(name: doc[:value]) %>
|
14
14
|
<% elsif doc[:type] == :method_ref %>
|
15
15
|
<a class="method-ref dashed" href="<%= link_for(doc[:object]) %>"><%= doc[:value] %></a>
|
16
|
-
|
16
|
+
<% elsif doc[:type] == :class_path_reference %>
|
17
|
+
<%= class_path_reference(doc: doc) %>
|
17
18
|
<% else %>
|
18
19
|
<div class="unknown-object">
|
19
20
|
Unknown object <%= doc[:type] %>
|
@@ -3,7 +3,12 @@
|
|
3
3
|
<span class="rest-arg <%= computed[:rest] %>"></span>
|
4
4
|
<% end %>
|
5
5
|
|
6
|
-
|
6
|
+
<% if computed[:rest] || computed[:block] %>
|
7
|
+
<%= computed[:name].to_s.gsub(/^([*]{1,2}|&)$/, '') %>
|
8
|
+
<% else %>
|
9
|
+
<%= computed[:name] %>
|
10
|
+
<% end %>
|
11
|
+
|
7
12
|
|
8
13
|
<% if computed[:continuation] %>
|
9
14
|
<span class="continuation <%= computed[:continuation] %>"></span>
|
data/templates/reference.erb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
<% div("reference-base", id:) do %>
|
2
2
|
<% if unresolved %>
|
3
|
-
<span><%= value || path.
|
3
|
+
<span class="broken"><%= value || path.join("::") %></span>
|
4
4
|
<% elsif ref_type == :pure %>
|
5
5
|
<a href="<%= link_for(object) %>">
|
6
6
|
<span class="resolved <%= ref_type %>">
|
@@ -8,7 +8,7 @@
|
|
8
8
|
</span>
|
9
9
|
</a>
|
10
10
|
<% else %>
|
11
|
-
<a href="<%= path
|
11
|
+
<a href="<%= make_path(*path) %>.html">
|
12
12
|
<span class="resolved <%= ref_type %>">
|
13
13
|
<span><%= value || path.last %></span>
|
14
14
|
</span>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: docrb-html
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Victor Gama
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-10-
|
11
|
+
date: 2023-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -83,6 +83,7 @@ files:
|
|
83
83
|
- assets/checkbox.scss
|
84
84
|
- assets/class_header.scss
|
85
85
|
- assets/class_mod_name.scss
|
86
|
+
- assets/class_path_reference.scss
|
86
87
|
- assets/component_list.scss
|
87
88
|
- assets/constant_display.scss
|
88
89
|
- assets/container.scss
|
@@ -134,6 +135,7 @@ files:
|
|
134
135
|
- lib/renderer/component/checkbox.rb
|
135
136
|
- lib/renderer/component/class_header.rb
|
136
137
|
- lib/renderer/component/class_mod_name.rb
|
138
|
+
- lib/renderer/component/class_path_reference.rb
|
137
139
|
- lib/renderer/component/component_list.rb
|
138
140
|
- lib/renderer/component/constant_display.rb
|
139
141
|
- lib/renderer/component/doc_box.rb
|
@@ -182,6 +184,7 @@ files:
|
|
182
184
|
- templates/checkbox.erb
|
183
185
|
- templates/class_header.erb
|
184
186
|
- templates/class_mod_name.erb
|
187
|
+
- templates/class_path_reference.erb
|
185
188
|
- templates/component_list.erb
|
186
189
|
- templates/constant_display.erb
|
187
190
|
- templates/doc_box.erb
|