docrb-html 0.3.0 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|