docrb-html 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.editorconfig +21 -0
- data/.gitignore +2 -0
- data/.rubocop.yml +52 -0
- data/Gemfile +7 -0
- data/Gemfile.lock +37 -0
- data/assets/breadcrumb.scss +25 -0
- data/assets/checkbox.scss +34 -0
- data/assets/class_header.scss +75 -0
- data/assets/class_mod_name.scss +8 -0
- data/assets/component_list.scss +4 -0
- data/assets/container.scss +9 -0
- data/assets/doc_box.scss +79 -0
- data/assets/documentation_block.scss +5 -0
- data/assets/favicon.ico +0 -0
- data/assets/fonts.scss +105 -0
- data/assets/footer.scss +15 -0
- data/assets/images/balance.svg +9 -0
- data/assets/images/breadcrumb_separator.svg +1 -0
- data/assets/images/checkbox-off.svg +1 -0
- data/assets/images/checkbox-on.svg +1 -0
- data/assets/images/chevron.svg +1 -0
- data/assets/images/docrb-label.svg +20 -0
- data/assets/images/github.svg +11 -0
- data/assets/images/home.svg +1 -0
- data/assets/images/inherited.svg +1 -0
- data/assets/images/override.svg +1 -0
- data/assets/images/questionmark.svg +1 -0
- data/assets/images/rubygems.svg +9 -0
- data/assets/images/user.svg +12 -0
- data/assets/js/filtering.js +66 -0
- data/assets/links.scss +16 -0
- data/assets/markdown.scss +41 -0
- data/assets/method_argument.scss +75 -0
- data/assets/method_display.scss +27 -0
- data/assets/method_list.scss +51 -0
- data/assets/project_header.scss +55 -0
- data/assets/reference.scss +36 -0
- data/assets/shared.scss +23 -0
- data/assets/style.scss +43 -0
- data/assets/symbol.scss +5 -0
- data/assets/tab_bar.scss +22 -0
- data/assets/text_block.scss +23 -0
- data/assets/type_definition.scss +3 -0
- data/assets/typedef.scss +6 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/exe/docrb-html +12 -0
- data/lib/renderer/component/breadcrumb.rb +14 -0
- data/lib/renderer/component/checkbox.rb +9 -0
- data/lib/renderer/component/class_header.rb +14 -0
- data/lib/renderer/component/class_mod_name.rb +9 -0
- data/lib/renderer/component/component_list.rb +15 -0
- data/lib/renderer/component/doc_box.rb +38 -0
- data/lib/renderer/component/documentation_block.rb +9 -0
- data/lib/renderer/component/footer.rb +9 -0
- data/lib/renderer/component/markdown.rb +9 -0
- data/lib/renderer/component/method_argument.rb +106 -0
- data/lib/renderer/component/method_display.rb +9 -0
- data/lib/renderer/component/method_list.rb +9 -0
- data/lib/renderer/component/project_header.rb +9 -0
- data/lib/renderer/component/reference.rb +24 -0
- data/lib/renderer/component/symbol.rb +9 -0
- data/lib/renderer/component/tab_bar.rb +9 -0
- data/lib/renderer/component/text_block.rb +15 -0
- data/lib/renderer/component/type_definition.rb +9 -0
- data/lib/renderer/component/typedef.rb +9 -0
- data/lib/renderer/component.rb +50 -0
- data/lib/renderer/core_extensions.rb +11 -0
- data/lib/renderer/defs/specialized_object.rb +172 -0
- data/lib/renderer/defs/specialized_projection.rb +31 -0
- data/lib/renderer/defs.rb +180 -0
- data/lib/renderer/helpers.rb +82 -0
- data/lib/renderer/metadata.rb +44 -0
- data/lib/renderer/page.rb +17 -0
- data/lib/renderer/template.rb +38 -0
- data/lib/renderer/version.rb +5 -0
- data/lib/renderer.rb +129 -0
- data/renderer.gemspec +31 -0
- data/script/makecomponent +23 -0
- data/script/reload.js +14 -0
- data/script/serve +2 -0
- data/script/watch +17 -0
- data/templates/base.erb +25 -0
- data/templates/breadcrumb.erb +28 -0
- data/templates/checkbox.erb +8 -0
- data/templates/class_header.erb +53 -0
- data/templates/class_mod_name.erb +3 -0
- data/templates/component_list.erb +21 -0
- data/templates/doc_box.erb +82 -0
- data/templates/documentation_block.erb +18 -0
- data/templates/footer.erb +9 -0
- data/templates/markdown.erb +3 -0
- data/templates/method_argument.erb +29 -0
- data/templates/method_display.erb +28 -0
- data/templates/method_list.erb +25 -0
- data/templates/project_header.erb +38 -0
- data/templates/reference.erb +14 -0
- data/templates/symbol.erb +3 -0
- data/templates/tab_bar.erb +7 -0
- data/templates/text_block.erb +16 -0
- data/templates/type_definition.erb +4 -0
- data/templates/typedef.erb +3 -0
- metadata +178 -0
@@ -0,0 +1,66 @@
|
|
1
|
+
// ((document) => {
|
2
|
+
// document.addEventListener('DOMContentLoaded', () => {
|
3
|
+
const hideInternalCheck = document.querySelector("#filter-hide-internal");
|
4
|
+
const hidePrivateCheck = document.querySelector("#filter-hide-private");
|
5
|
+
const hideAttrsCheck = document.querySelector("#filter-hide-attrs");
|
6
|
+
const hideInheritedCheck = document.querySelector("#filter-hide-inherited");
|
7
|
+
const showExtendedCheck = document.querySelector("#filter-show-extended");
|
8
|
+
const showIncludedCheck = document.querySelector("#filter-show-included");
|
9
|
+
|
10
|
+
const allChecks = [
|
11
|
+
hideInternalCheck,
|
12
|
+
hidePrivateCheck,
|
13
|
+
hideAttrsCheck,
|
14
|
+
hideInheritedCheck,
|
15
|
+
showExtendedCheck,
|
16
|
+
showIncludedCheck,
|
17
|
+
].filter(el => el);
|
18
|
+
|
19
|
+
const determineVisibility = () => ({
|
20
|
+
'[data-visibility="internal"]': !hideInternalCheck.checked,
|
21
|
+
'[data-visibility="private"]': !hidePrivateCheck.checked,
|
22
|
+
'[data-type="attribute"]': !hideAttrsCheck.checked,
|
23
|
+
'[data-origin="inheritance"]': !hideInheritedCheck.checked,
|
24
|
+
'[data-origin="inclusion"]': showIncludedCheck.checked,
|
25
|
+
'[data-origin="extension"]': showExtendedCheck.checked,
|
26
|
+
});
|
27
|
+
const attrs = ["data-visibility", "data-type", "data-origin"];
|
28
|
+
const filters = Object.keys(determineVisibility());
|
29
|
+
|
30
|
+
const applyVisibility = () => {
|
31
|
+
const opts = determineVisibility()
|
32
|
+
document
|
33
|
+
.querySelectorAll(attrs.map(i => `[${i}]`).join(","))
|
34
|
+
.forEach(el => {
|
35
|
+
const show = attrs
|
36
|
+
.map(k => el.attributes[k])
|
37
|
+
.filter(att => att)
|
38
|
+
.map(({name, value}) => opts[`[${name}="${value}"]`])
|
39
|
+
.filter(i => i !== undefined)
|
40
|
+
.reduce((a, b) => a && b, true);
|
41
|
+
el.style.display = show ? "" : "none";
|
42
|
+
});
|
43
|
+
|
44
|
+
document
|
45
|
+
.querySelectorAll("#attributes,#class-methods,#instance-methods")
|
46
|
+
.forEach(parent => {
|
47
|
+
const anyVisible = Array
|
48
|
+
.from(parent.querySelectorAll("[id]"))
|
49
|
+
.some(el => el.style.display != "none");
|
50
|
+
|
51
|
+
parent.style.display = anyVisible ? "" : "none";
|
52
|
+
document
|
53
|
+
.querySelectorAll(`a[href="#${parent.id}"]`)
|
54
|
+
.forEach(el => {
|
55
|
+
el.style.display = anyVisible ? "" : "none";
|
56
|
+
})
|
57
|
+
})
|
58
|
+
};
|
59
|
+
|
60
|
+
allChecks.forEach(el => {
|
61
|
+
el.addEventListener('change', () => applyVisibility());
|
62
|
+
});
|
63
|
+
|
64
|
+
applyVisibility();
|
65
|
+
// });
|
66
|
+
// })(document);
|
data/assets/links.scss
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
a {
|
2
|
+
@include body($weight: 500);
|
3
|
+
color: #FFFFFF;
|
4
|
+
cursor: pointer;
|
5
|
+
text-decoration: none;
|
6
|
+
|
7
|
+
&.dotted {
|
8
|
+
border-bottom: white 1px dotted;
|
9
|
+
padding-bottom: 3px;
|
10
|
+
}
|
11
|
+
|
12
|
+
&.dashed {
|
13
|
+
border-bottom: white 1px dashed;
|
14
|
+
padding-bottom: 3px;
|
15
|
+
}
|
16
|
+
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
div.markdown-base {
|
2
|
+
@include body;
|
3
|
+
color: #fff;
|
4
|
+
background-color: #1C1C1E;
|
5
|
+
padding: 12px 24px;
|
6
|
+
|
7
|
+
h1 {
|
8
|
+
border-bottom: 1px solid #373e47;
|
9
|
+
padding-bottom: 8px;
|
10
|
+
}
|
11
|
+
|
12
|
+
h1, h2, h3, h4, h5 {
|
13
|
+
margin: 12px 0;
|
14
|
+
}
|
15
|
+
|
16
|
+
p code {
|
17
|
+
background-color: #242426;
|
18
|
+
font-size: 80%;
|
19
|
+
padding: 3px 4px;
|
20
|
+
border-radius: 3px;
|
21
|
+
}
|
22
|
+
|
23
|
+
p {
|
24
|
+
margin-bottom: 8px;
|
25
|
+
line-height: 22px;
|
26
|
+
}
|
27
|
+
|
28
|
+
p + h1, p + h2, p + h3, p + h4, p + h5 {
|
29
|
+
margin-top: 24px;
|
30
|
+
}
|
31
|
+
|
32
|
+
a {
|
33
|
+
color: #fff;
|
34
|
+
border-bottom: dashed 1px white;
|
35
|
+
text-decoration: none;
|
36
|
+
}
|
37
|
+
|
38
|
+
code, pre {
|
39
|
+
@include mono($size: 15);
|
40
|
+
}
|
41
|
+
}
|
@@ -0,0 +1,75 @@
|
|
1
|
+
div.method-argument-base {
|
2
|
+
color: #FFAB42;
|
3
|
+
display: inline;
|
4
|
+
display: flex;
|
5
|
+
|
6
|
+
span { display: inline-block; }
|
7
|
+
|
8
|
+
&:not(:first-of-type) {
|
9
|
+
margin-left: 8px;
|
10
|
+
}
|
11
|
+
|
12
|
+
&:not(:last-of-type) {
|
13
|
+
&:after {
|
14
|
+
content: ',';
|
15
|
+
color: #A5ACBA;
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
.rest-arg {
|
20
|
+
color: #FF724C;
|
21
|
+
&.double {
|
22
|
+
&:after { content: "**" }
|
23
|
+
}
|
24
|
+
&.single {
|
25
|
+
&:after { content: "*" }
|
26
|
+
}
|
27
|
+
&.block {
|
28
|
+
&:after { content: "&" }
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
@mixin base_arg { margin-left: 8px; }
|
33
|
+
|
34
|
+
.continuation {
|
35
|
+
@include base_arg;
|
36
|
+
margin: 0;
|
37
|
+
&.equal {
|
38
|
+
color: #FF724C;
|
39
|
+
margin: 0 0 0 8px;
|
40
|
+
&:after {
|
41
|
+
content: "=";
|
42
|
+
}
|
43
|
+
}
|
44
|
+
&.colon {
|
45
|
+
color: #A5ACBA;
|
46
|
+
|
47
|
+
&:after {
|
48
|
+
content: ':';
|
49
|
+
}
|
50
|
+
|
51
|
+
&.double {
|
52
|
+
&:after {
|
53
|
+
content: '::';
|
54
|
+
}
|
55
|
+
}
|
56
|
+
}
|
57
|
+
|
58
|
+
+ span {
|
59
|
+
margin-left: 8px;
|
60
|
+
}
|
61
|
+
}
|
62
|
+
|
63
|
+
.simple-argument {
|
64
|
+
&.symbol { color: #CF91C9; }
|
65
|
+
&.number { color: #FF724C; }
|
66
|
+
&.string {
|
67
|
+
color: #8CC98F;
|
68
|
+
:before, :after {
|
69
|
+
content: '"';
|
70
|
+
color: #39B6B5;
|
71
|
+
}
|
72
|
+
}
|
73
|
+
&.plain { color: white; }
|
74
|
+
}
|
75
|
+
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
div.method-display-base {
|
2
|
+
@include container;
|
3
|
+
margin-top: 8px;
|
4
|
+
.container {
|
5
|
+
@include container;
|
6
|
+
}
|
7
|
+
|
8
|
+
.method-name {
|
9
|
+
@include mono;
|
10
|
+
color: #39B6B5;
|
11
|
+
}
|
12
|
+
|
13
|
+
.argument-container {
|
14
|
+
@include mono;
|
15
|
+
color: #39B6B5;
|
16
|
+
display: flex;
|
17
|
+
|
18
|
+
&.not-empty {
|
19
|
+
&:before { content: '(' }
|
20
|
+
&:after { content: ')' }
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
.label {
|
25
|
+
@include label;
|
26
|
+
}
|
27
|
+
}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
div.method-list-base {
|
2
|
+
.method-definition {
|
3
|
+
margin-bottom: 23px;
|
4
|
+
}
|
5
|
+
|
6
|
+
.doc-block {
|
7
|
+
margin-top: 8px;
|
8
|
+
}
|
9
|
+
|
10
|
+
.source-block {
|
11
|
+
margin: 13px 0 22px 0;
|
12
|
+
position: relative;
|
13
|
+
display: block;
|
14
|
+
|
15
|
+
&[open] {
|
16
|
+
summary {
|
17
|
+
.expanded { display: block }
|
18
|
+
.collapsed { display: none }
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
summary {
|
23
|
+
display: inline-block;
|
24
|
+
list-style: none;
|
25
|
+
> span {
|
26
|
+
@include body($weight: 500);
|
27
|
+
border-bottom: white 1px dotted;
|
28
|
+
cursor: pointer;
|
29
|
+
color: #FFF;
|
30
|
+
}
|
31
|
+
|
32
|
+
.expanded { display: none }
|
33
|
+
.collapsed { display: block }
|
34
|
+
}
|
35
|
+
|
36
|
+
.markdown-base > .highlight {
|
37
|
+
margin-bottom: 0;
|
38
|
+
}
|
39
|
+
|
40
|
+
.from {
|
41
|
+
@include body;
|
42
|
+
font-size: 80%;
|
43
|
+
color: white;
|
44
|
+
margin-bottom: 30px;
|
45
|
+
a {
|
46
|
+
font-size: inherit;
|
47
|
+
}
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
}
|
@@ -0,0 +1,55 @@
|
|
1
|
+
div.project-header-base {
|
2
|
+
padding-left: 52px;
|
3
|
+
padding-right: 40px;
|
4
|
+
background-color: #101010;
|
5
|
+
min-height: 240px;
|
6
|
+
display: flex;
|
7
|
+
justify-content: space-between;
|
8
|
+
|
9
|
+
.project {
|
10
|
+
@include body;
|
11
|
+
color: white;
|
12
|
+
|
13
|
+
h1 {
|
14
|
+
font-size: 64px;
|
15
|
+
font-weight: 300;
|
16
|
+
margin: 64px 0 0;
|
17
|
+
padding: 0;
|
18
|
+
}
|
19
|
+
|
20
|
+
h3 {
|
21
|
+
font-size: 16px;
|
22
|
+
font-weight: 400;
|
23
|
+
margin: 8px 0 0;
|
24
|
+
padding: 0;
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
.right {
|
29
|
+
display: flex;
|
30
|
+
align-items: center;
|
31
|
+
flex-direction: column;
|
32
|
+
color: white;
|
33
|
+
@include body;
|
34
|
+
|
35
|
+
.label {
|
36
|
+
display: inline-block;
|
37
|
+
}
|
38
|
+
|
39
|
+
.link-panel {
|
40
|
+
margin-top: 30px;
|
41
|
+
display: flex;
|
42
|
+
flex-direction: column;
|
43
|
+
align-items: flex-end;
|
44
|
+
|
45
|
+
.link-row {
|
46
|
+
display: flex;
|
47
|
+
margin-bottom: 6px;
|
48
|
+
|
49
|
+
svg {
|
50
|
+
margin-left: 8px;
|
51
|
+
}
|
52
|
+
}
|
53
|
+
}
|
54
|
+
}
|
55
|
+
}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
div.reference-base {
|
2
|
+
display: inline-flex;
|
3
|
+
cursor: pointer;
|
4
|
+
color: white;
|
5
|
+
|
6
|
+
.resolved {
|
7
|
+
border-color: white;
|
8
|
+
border-bottom: 1px dashed;
|
9
|
+
|
10
|
+
&.class { color: #FFAB42; border-color: #FFAB42; }
|
11
|
+
&.module { color: #579AD1; border-color: #579AD1; }
|
12
|
+
}
|
13
|
+
|
14
|
+
.unresolved {
|
15
|
+
border: 1px dotted #D8D8D8;
|
16
|
+
border-radius: 10px 3px 3px 10px;
|
17
|
+
display: inline-flex;
|
18
|
+
color: white;
|
19
|
+
justify-content: center;
|
20
|
+
align-content: center;
|
21
|
+
align-items: center;
|
22
|
+
|
23
|
+
.icon {
|
24
|
+
margin-left: 2px;
|
25
|
+
margin-right: 2px;
|
26
|
+
}
|
27
|
+
|
28
|
+
span {
|
29
|
+
@include mono($size: 15);
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
a {
|
34
|
+
@include mono($weight: 300, $size: 15);
|
35
|
+
}
|
36
|
+
}
|
data/assets/shared.scss
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
.section-container {
|
2
|
+
margin: 25px 0 0;
|
3
|
+
|
4
|
+
.horizontal-container {
|
5
|
+
display: flex;
|
6
|
+
column-gap: 50px;
|
7
|
+
|
8
|
+
.child-structure {
|
9
|
+
.heading {
|
10
|
+
@include body($size: 24);
|
11
|
+
color: #FFFFFF;
|
12
|
+
padding-bottom: 12px;
|
13
|
+
}
|
14
|
+
|
15
|
+
.link-column {
|
16
|
+
display: flex;
|
17
|
+
flex-direction: column;
|
18
|
+
row-gap: 8px;
|
19
|
+
padding-left: 12px;
|
20
|
+
}
|
21
|
+
}
|
22
|
+
}
|
23
|
+
}
|
data/assets/style.scss
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
* {
|
2
|
+
box-sizing: border-box;
|
3
|
+
padding: 0;
|
4
|
+
margin: 0;
|
5
|
+
}
|
6
|
+
|
7
|
+
html,
|
8
|
+
body {
|
9
|
+
max-width: 100vw;
|
10
|
+
overflow-x: hidden;
|
11
|
+
min-height: 100vh;
|
12
|
+
font-size: 15px;
|
13
|
+
justify-content: center;
|
14
|
+
line-height: 1.15;
|
15
|
+
-webkit-text-size-adjust: 100%;
|
16
|
+
text-rendering: geometricPrecision;
|
17
|
+
background-color: #1C1C1E;
|
18
|
+
}
|
19
|
+
|
20
|
+
@import "./fonts";
|
21
|
+
@import "./container";
|
22
|
+
@import "./shared";
|
23
|
+
|
24
|
+
@import "./links";
|
25
|
+
@import "./breadcrumb";
|
26
|
+
@import './footer';
|
27
|
+
@import './project_header';
|
28
|
+
@import './tab_bar';
|
29
|
+
@import './markdown';
|
30
|
+
@import './component_list';
|
31
|
+
@import './type_definition';
|
32
|
+
@import './class_mod_name';
|
33
|
+
@import './method_display';
|
34
|
+
@import './typedef';
|
35
|
+
@import './method_argument';
|
36
|
+
@import './class_header';
|
37
|
+
@import './checkbox';
|
38
|
+
@import './doc_box';
|
39
|
+
@import './documentation_block';
|
40
|
+
@import './text_block';
|
41
|
+
@import './reference';
|
42
|
+
@import './symbol';
|
43
|
+
@import './method_list';
|
data/assets/symbol.scss
ADDED
data/assets/tab_bar.scss
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
div.tab-bar-base {
|
2
|
+
height: 57px;
|
3
|
+
background: #161617;
|
4
|
+
padding: 12px 12px 0;
|
5
|
+
display: flex;
|
6
|
+
|
7
|
+
a {
|
8
|
+
padding: 12px 27px;
|
9
|
+
color: #FFFFFF;
|
10
|
+
border-radius: 3px 3px 0 0;
|
11
|
+
@include body;
|
12
|
+
cursor: pointer;
|
13
|
+
|
14
|
+
&.selected {
|
15
|
+
background-color: #1C1C1E;
|
16
|
+
}
|
17
|
+
|
18
|
+
&:hover:not(.selected) {
|
19
|
+
background-color: #18181A;
|
20
|
+
}
|
21
|
+
}
|
22
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
div.text-block-base {
|
2
|
+
.html {
|
3
|
+
display: block;
|
4
|
+
&.inline {
|
5
|
+
display: inline;
|
6
|
+
}
|
7
|
+
|
8
|
+
margin-bottom: 12px;
|
9
|
+
&.no-margin {
|
10
|
+
margin-bottom: 0;
|
11
|
+
}
|
12
|
+
|
13
|
+
@include body;
|
14
|
+
color: #FFFFFF;
|
15
|
+
p code {
|
16
|
+
@include mono;
|
17
|
+
font-size: 95%;
|
18
|
+
padding: 3px 4px;
|
19
|
+
background-color: #29292B;
|
20
|
+
border-radius: 3px;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
}
|
data/assets/typedef.scss
ADDED
data/bin/console
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require "bundler/setup"
|
5
|
+
require "renderer"
|
6
|
+
|
7
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
8
|
+
# with your gem easier. You can also use a different console, if you like.
|
9
|
+
|
10
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
11
|
+
# require "pry"
|
12
|
+
# Pry.start
|
13
|
+
|
14
|
+
require "irb"
|
15
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
data/exe/docrb-html
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Renderer
|
4
|
+
class Component
|
5
|
+
class ClassHeader < Component
|
6
|
+
prop :type, :name, :definitions, :def_collection
|
7
|
+
|
8
|
+
def prepare
|
9
|
+
@definitions ||= []
|
10
|
+
@def_collection = @definitions.dup
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Renderer
|
4
|
+
class Component
|
5
|
+
class DocBox < Component
|
6
|
+
prop :item, :meta, :defs, :has_class_docs, :has_class_details, :has_attrs,
|
7
|
+
:has_class_methods, :has_instance_methods, :page_components,
|
8
|
+
:defs, :sdefs, :attrs
|
9
|
+
|
10
|
+
def prepare
|
11
|
+
@item = defs.specialized_projection.find_path(@item)
|
12
|
+
|
13
|
+
@has_class_docs = item[:doc] && !item[:doc].empty?
|
14
|
+
@defs = item.defs || []
|
15
|
+
@sdefs = item.sdefs || []
|
16
|
+
@attrs = item.attributes || []
|
17
|
+
|
18
|
+
@has_attrs = !@attrs.empty?
|
19
|
+
@has_class_methods = !@sdefs.empty?
|
20
|
+
@has_instance_methods = !@defs.empty?
|
21
|
+
@has_class_details =
|
22
|
+
!item[:inherits].nil? \
|
23
|
+
|| !item.fetch(:extends, []).empty? \
|
24
|
+
|| !item.fetch(:includes, []).empty? \
|
25
|
+
|| !item.fetch(:modules, []).empty? \
|
26
|
+
|| !item.fetch(:classes, []).empty?
|
27
|
+
|
28
|
+
@page_components = {
|
29
|
+
"class-documentation" => { enabled: has_class_docs, name: "Class Documentation" },
|
30
|
+
"class-details" => { enabled: has_class_details, name: "Inheritance" },
|
31
|
+
"attributes" => { enabled: has_attrs, name: "Attributes" },
|
32
|
+
"class-methods" => { enabled: has_class_methods, name: "Class Methods" },
|
33
|
+
"instance-methods" => { enabled: has_instance_methods, name: "Instance Methods" }
|
34
|
+
}
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|