just-the-docs 0.3.1 → 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/README.md +4 -0
- data/_includes/fix_linenos.html +65 -0
- data/_includes/head.html +4 -4
- data/_includes/nav.html +93 -48
- data/_includes/vendor/anchor_headings.html +52 -8
- data/_layouts/default.html +18 -3
- data/_sass/code.scss +77 -4
- data/_sass/content.scss +5 -3
- data/_sass/navigation.scss +23 -0
- data/_sass/search.scss +2 -2
- data/_sass/support/_variables.scss +20 -2
- data/_sass/support/mixins/_typography.scss +20 -22
- data/_sass/typography.scss +4 -0
- data/assets/js/zzzz-search-data.json +18 -4
- data/lib/tasks/search.rake +20 -6
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac9092ff508cd154919cdc59ec256e3a8cc5e77664ac38f56d2150c6677cb824
|
4
|
+
data.tar.gz: 0dedab94fdb0dfc0d684e9bd164bfe61280c0b197572ac0ee20804d5890c8ee9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 496a3e88439549090a080202977a0eac87f94ddbd6acaf6843fbe8db2a00dddda3b241949ff71f7332d4c736671142571d756807ddc078d45591ba1c0e646791
|
7
|
+
data.tar.gz: ab731d78317a8dbd1c590cd21a2f93ba942a8e0638221674c3f5123938814ae012112a141a05d88b61de4a3badeedeba2bbf9a7cf1c0e1bc8255e3dd73fdeb96
|
data/README.md
CHANGED
@@ -33,6 +33,10 @@ Or install it yourself as:
|
|
33
33
|
|
34
34
|
$ gem install just-the-docs
|
35
35
|
|
36
|
+
Alternatively, you can run it inside Docker while developing your site
|
37
|
+
|
38
|
+
$ docker-compose up
|
39
|
+
|
36
40
|
## Usage
|
37
41
|
|
38
42
|
[View the documentation](https://pmarsceill.github.io/just-the-docs/) for usage information.
|
@@ -0,0 +1,65 @@
|
|
1
|
+
{%- comment -%}
|
2
|
+
This file can be used to fix the HTML produced by Jekyll for highlighted
|
3
|
+
code with line numbers.
|
4
|
+
|
5
|
+
It works with `{% highlight some_language linenos %}...{% endhighlight %}`
|
6
|
+
and with the Kramdown option to add line numbers to fenced code.
|
7
|
+
|
8
|
+
The implementation was derived from the workaround provided by
|
9
|
+
Dmitry Hrabrov (DeXP) at
|
10
|
+
https://github.com/penibelst/jekyll-compress-html/issues/71#issuecomment-188144901
|
11
|
+
|
12
|
+
EXPLANATION
|
13
|
+
|
14
|
+
The HTML produced by Rouge highlighting with lie numbers is of the form
|
15
|
+
`code table`. Jekyll (<= 4.1.1) always wraps the highlighted HTML
|
16
|
+
with `pre`. This wrapping is not only unnecessary, but also transforms
|
17
|
+
the conforming HTML produced by Rouge to non-conforming HTML, which
|
18
|
+
results in HTML validation error reports.
|
19
|
+
|
20
|
+
The fix removes the outer `pre` tags whenever they contain the pattern
|
21
|
+
`<table class="rouge-table">`.
|
22
|
+
|
23
|
+
Apart from avoiding HTML validation errors, the fix allows the use of
|
24
|
+
the [Jekyll layout for compressing HTML](http://jch.penibelst.de),
|
25
|
+
which relies on `pre` tags not being nested, according to
|
26
|
+
https://github.com/penibelst/jekyll-compress-html/issues/71#issuecomment-172069842
|
27
|
+
|
28
|
+
USAGE
|
29
|
+
|
30
|
+
(Any names can be used for `some_var` and `some_language`.)
|
31
|
+
|
32
|
+
{% capture some_var %}
|
33
|
+
{% highlight some_language linenos %}
|
34
|
+
Some code
|
35
|
+
{% endhighlight %}
|
36
|
+
{% endcapture %}
|
37
|
+
{% include fix_linenos.html code=some_var %}
|
38
|
+
|
39
|
+
For code fences:
|
40
|
+
|
41
|
+
{% capture some_var %}
|
42
|
+
```some_language
|
43
|
+
Some code
|
44
|
+
```
|
45
|
+
{% endcapture %}
|
46
|
+
{% assign some_var = some_var | markdownify %}
|
47
|
+
{% include fix_linenos.html code=some_var %}
|
48
|
+
|
49
|
+
CAVEATS
|
50
|
+
|
51
|
+
The above does not work when `Some code` happens to contain the matched string
|
52
|
+
`<table class="rouge-table">`.
|
53
|
+
|
54
|
+
The use of this file overwrites the variable `fix_linenos_code` with `nil`.
|
55
|
+
|
56
|
+
{%- endcomment -%}
|
57
|
+
|
58
|
+
{% assign fix_linenos_code = include.code %}
|
59
|
+
{% if fix_linenos_code contains '<table class="rouge-table">' %}
|
60
|
+
{% assign fix_linenos_code = fix_linenos_code | replace: '<pre class="highlight">', '<pre>' %}
|
61
|
+
{% assign fix_linenos_code = fix_linenos_code | replace: "<pre><code", "<code" %}
|
62
|
+
{% assign fix_linenos_code = fix_linenos_code | replace: "</code></pre>", "</code>" %}
|
63
|
+
{% endif %}
|
64
|
+
{{ fix_linenos_code }}
|
65
|
+
{% assign fix_linenos_code = nil %}
|
data/_includes/head.html
CHANGED
@@ -10,9 +10,9 @@
|
|
10
10
|
{% endif %}
|
11
11
|
{% endunless %}
|
12
12
|
|
13
|
-
<link rel="shortcut icon" href="{{ 'favicon.ico' |
|
13
|
+
<link rel="shortcut icon" href="{{ 'favicon.ico' | relative_url }}" type="image/x-icon">
|
14
14
|
|
15
|
-
<link rel="stylesheet" href="{{ '/assets/css/just-the-docs-default.css' |
|
15
|
+
<link rel="stylesheet" href="{{ '/assets/css/just-the-docs-default.css' | relative_url }}">
|
16
16
|
|
17
17
|
{% if site.ga_tracking != nil %}
|
18
18
|
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.ga_tracking }}"></script>
|
@@ -27,9 +27,9 @@
|
|
27
27
|
{% endif %}
|
28
28
|
|
29
29
|
{% if site.search_enabled != false %}
|
30
|
-
<script type="text/javascript" src="{{ '/assets/js/vendor/lunr.min.js' |
|
30
|
+
<script type="text/javascript" src="{{ '/assets/js/vendor/lunr.min.js' | relative_url }}"></script>
|
31
31
|
{% endif %}
|
32
|
-
<script type="text/javascript" src="{{ '/assets/js/just-the-docs.js' |
|
32
|
+
<script type="text/javascript" src="{{ '/assets/js/just-the-docs.js' | relative_url }}"></script>
|
33
33
|
|
34
34
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
35
35
|
|
data/_includes/nav.html
CHANGED
@@ -1,55 +1,100 @@
|
|
1
1
|
<ul class="nav-list">
|
2
|
-
{%- assign
|
3
|
-
|
2
|
+
{%- assign included_pages = include.pages
|
3
|
+
| where_exp:"item", "item.nav_exclude != true"
|
4
|
+
| where_exp:"item", "item.title != nil" -%}
|
5
|
+
|
6
|
+
{%- comment -%}
|
7
|
+
The values of `title` and `nav_order` can be numbers or strings.
|
8
|
+
Jekyll gives build failures when sorting on mixtures of different types,
|
9
|
+
so numbers and strings need to be sorted separately.
|
10
|
+
|
11
|
+
Here, numbers are sorted by their values, and come before all strings.
|
12
|
+
An omitted `nav_order` value is equivalent to the page's `title` value
|
13
|
+
(except that a numerical `title` value is treated as a string).
|
14
|
+
|
15
|
+
The case-sensitivity of string sorting is determined by `site.nav_sort`.
|
16
|
+
{%- endcomment -%}
|
17
|
+
|
18
|
+
{%- assign string_ordered_pages = included_pages
|
19
|
+
| where_exp:"item", "item.nav_order == nil" -%}
|
20
|
+
{%- assign nav_ordered_pages = included_pages
|
21
|
+
| where_exp:"item", "item.nav_order != nil" -%}
|
22
|
+
|
23
|
+
{%- comment -%}
|
24
|
+
The nav_ordered_pages have to be added to number_ordered_pages and
|
25
|
+
string_ordered_pages, depending on the nav_order value.
|
26
|
+
The first character of the jsonify result is `"` only for strings.
|
27
|
+
{%- endcomment -%}
|
28
|
+
{%- assign nav_ordered_groups = nav_ordered_pages
|
29
|
+
| group_by_exp:"item", "item.nav_order | jsonify | slice: 0" -%}
|
30
|
+
{%- assign number_ordered_pages = "" | split:"X" -%}
|
31
|
+
{%- for group in nav_ordered_groups -%}
|
32
|
+
{%- if group.name == '"' -%}
|
33
|
+
{%- assign string_ordered_pages = string_ordered_pages | concat: group.items -%}
|
34
|
+
{%- else -%}
|
35
|
+
{%- assign number_ordered_pages = number_ordered_pages | concat: group.items -%}
|
36
|
+
{%- endif -%}
|
37
|
+
{%- endfor -%}
|
38
|
+
|
39
|
+
{%- assign sorted_number_ordered_pages = number_ordered_pages | sort:"nav_order" -%}
|
40
|
+
|
41
|
+
{%- comment -%}
|
42
|
+
The string_ordered_pages have to be sorted by nav_order, and otherwise title
|
43
|
+
(where appending the empty string to a numeric title converts it to a string).
|
44
|
+
After grouping them by those values, the groups are sorted, then the items
|
45
|
+
of each group are concatenated.
|
46
|
+
{%- endcomment -%}
|
47
|
+
{%- assign string_ordered_groups = string_ordered_pages
|
48
|
+
| group_by_exp:"item", "item.nav_order | default: item.title | append:''" -%}
|
4
49
|
{%- if site.nav_sort == 'case_insensitive' -%}
|
5
|
-
{%- assign
|
6
|
-
{%- assign sorted_unordered_pages_list = unordered_pages_list | sort_natural:"title" -%}
|
50
|
+
{%- assign sorted_string_ordered_groups = string_ordered_groups | sort_natural:"name" -%}
|
7
51
|
{%- else -%}
|
8
|
-
{%- assign
|
9
|
-
{%- assign sorted_unordered_pages_list = unordered_pages_list | sort:"title" -%}
|
52
|
+
{%- assign sorted_string_ordered_groups = string_ordered_groups | sort:"name" -%}
|
10
53
|
{%- endif -%}
|
11
|
-
{%- assign
|
54
|
+
{%- assign sorted_string_ordered_pages = "" | split:"X" -%}
|
55
|
+
{%- for group in sorted_string_ordered_groups -%}
|
56
|
+
{%- assign sorted_string_ordered_pages = sorted_string_ordered_pages | concat: group.items -%}
|
57
|
+
{%- endfor -%}
|
58
|
+
|
59
|
+
{%- assign pages_list = sorted_number_ordered_pages | concat: sorted_string_ordered_pages -%}
|
60
|
+
|
12
61
|
{%- for node in pages_list -%}
|
13
|
-
{%-
|
14
|
-
{
|
15
|
-
|
16
|
-
{%-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
{%-
|
24
|
-
|
25
|
-
|
26
|
-
{
|
27
|
-
{%-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
{
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
{%- endif -%}
|
51
|
-
</li>
|
52
|
-
{%- endif -%}
|
53
|
-
{%- endunless -%}
|
62
|
+
{%- if node.parent == nil -%}
|
63
|
+
<li class="nav-list-item{% if page.url == node.url or page.parent == node.title or page.grand_parent == node.title %} active{% endif %}">
|
64
|
+
{%- if page.parent == node.title or page.grand_parent == node.title -%}
|
65
|
+
{%- assign first_level_url = node.url | absolute_url -%}
|
66
|
+
{%- endif -%}
|
67
|
+
{%- if node.has_children -%}
|
68
|
+
<a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a>
|
69
|
+
{%- endif -%}
|
70
|
+
<a href="{{ node.url | absolute_url }}" class="nav-list-link{% if page.url == node.url %} active{% endif %}">{{ node.title }}</a>
|
71
|
+
{%- if node.has_children -%}
|
72
|
+
{%- assign children_list = pages_list | where: "parent", node.title -%}
|
73
|
+
<ul class="nav-list ">
|
74
|
+
{%- for child in children_list -%}
|
75
|
+
<li class="nav-list-item {% if page.url == child.url or page.parent == child.title %} active{% endif %}">
|
76
|
+
{%- if page.url == child.url or page.parent == child.title -%}
|
77
|
+
{%- assign second_level_url = child.url | absolute_url -%}
|
78
|
+
{%- endif -%}
|
79
|
+
{%- if child.has_children -%}
|
80
|
+
<a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a>
|
81
|
+
{%- endif -%}
|
82
|
+
<a href="{{ child.url | absolute_url }}" class="nav-list-link{% if page.url == child.url %} active{% endif %}">{{ child.title }}</a>
|
83
|
+
{%- if child.has_children -%}
|
84
|
+
{%- assign grand_children_list = pages_list | where: "parent", child.title | where: "grand_parent", node.title -%}
|
85
|
+
<ul class="nav-list">
|
86
|
+
{%- for grand_child in grand_children_list -%}
|
87
|
+
<li class="nav-list-item {% if page.url == grand_child.url %} active{% endif %}">
|
88
|
+
<a href="{{ grand_child.url | absolute_url }}" class="nav-list-link{% if page.url == grand_child.url %} active{% endif %}">{{ grand_child.title }}</a>
|
89
|
+
</li>
|
90
|
+
{%- endfor -%}
|
91
|
+
</ul>
|
92
|
+
{%- endif -%}
|
93
|
+
</li>
|
94
|
+
{%- endfor -%}
|
95
|
+
</ul>
|
96
|
+
{%- endif -%}
|
97
|
+
</li>
|
98
|
+
{%- endif -%}
|
54
99
|
{%- endfor -%}
|
55
100
|
</ul>
|
@@ -1,18 +1,44 @@
|
|
1
1
|
{% capture headingsWorkspace %}
|
2
2
|
{% comment %}
|
3
|
-
|
3
|
+
Copyright (c) 2018 Vladimir "allejo" Jimenez
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person
|
6
|
+
obtaining a copy of this software and associated documentation
|
7
|
+
files (the "Software"), to deal in the Software without
|
8
|
+
restriction, including without limitation the rights to use,
|
9
|
+
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
+
copies of the Software, and to permit persons to whom the
|
11
|
+
Software is furnished to do so, subject to the following
|
12
|
+
conditions:
|
13
|
+
|
14
|
+
The above copyright notice and this permission notice shall be
|
15
|
+
included in all copies or substantial portions of the Software.
|
16
|
+
|
17
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
18
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
19
|
+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
20
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
21
|
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
22
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
23
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
24
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
25
|
+
{% endcomment %}
|
26
|
+
{% comment %}
|
27
|
+
Version 1.0.7
|
4
28
|
https://github.com/allejo/jekyll-anchor-headings
|
5
29
|
|
6
30
|
"Be the pull request you wish to see in the world." ~Ben Balter
|
7
31
|
|
8
32
|
Usage:
|
9
|
-
{% include anchor_headings.html html=content %}
|
33
|
+
{% include anchor_headings.html html=content anchorBody="#" %}
|
10
34
|
|
11
35
|
Parameters:
|
12
36
|
* html (string) - the HTML of compiled markdown generated by kramdown in Jekyll
|
13
37
|
|
14
38
|
Optional Parameters:
|
15
39
|
* beforeHeading (bool) : false - Set to true if the anchor should be placed _before_ the heading's content
|
40
|
+
* anchorAttrs (string) : '' - Any custom HTML attributes that will be added to the `<a>` tag; you may NOT use `href`, `class` or `title`;
|
41
|
+
the `%heading%` and `%html_id%` placeholders are available
|
16
42
|
* anchorBody (string) : '' - The content that will be placed inside the anchor; the `%heading%` placeholder is available
|
17
43
|
* anchorClass (string) : '' - The class(es) that will be used for each anchor. Separate multiple classes with a space
|
18
44
|
* anchorTitle (string) : '' - The `title` attribute that will be used for anchors
|
@@ -42,17 +68,22 @@
|
|
42
68
|
{% assign nextChar = node | replace: '"', '' | strip | slice: 0, 1 %}
|
43
69
|
{% assign headerLevel = nextChar | times: 1 %}
|
44
70
|
|
45
|
-
<!-- If the level is cast to 0, it means it's not a h1-h6 tag, so let's
|
71
|
+
<!-- If the level is cast to 0, it means it's not a h1-h6 tag, so let's see if we need to fix it -->
|
46
72
|
{% if headerLevel == 0 %}
|
47
|
-
|
73
|
+
<!-- Split up the node based on closing angle brackets and get the first one. -->
|
74
|
+
{% assign firstChunk = node | split: '>' | first %}
|
75
|
+
|
76
|
+
<!-- If the first chunk does NOT contain a '<', that means we've broken another HTML tag that starts with 'h' -->
|
77
|
+
{% unless firstChunk contains '<' %}
|
48
78
|
{% capture node %}<h{{ node }}{% endcapture %}
|
49
|
-
{%
|
79
|
+
{% endunless %}
|
50
80
|
|
51
81
|
{% capture edited_headings %}{{ edited_headings }}{{ node }}{% endcapture %}
|
52
82
|
{% continue %}
|
53
83
|
{% endif %}
|
54
84
|
|
55
|
-
{%
|
85
|
+
{% capture _closingTag %}</h{{ headerLevel }}>{% endcapture %}
|
86
|
+
{% assign _workspace = node | split: _closingTag %}
|
56
87
|
{% assign _idWorkspace = _workspace[0] | split: 'id="' %}
|
57
88
|
{% assign _idWorkspace = _idWorkspace[1] | split: '"' %}
|
58
89
|
{% assign html_id = _idWorkspace[0] %}
|
@@ -64,7 +95,7 @@
|
|
64
95
|
{% capture anchor %}{% endcapture %}
|
65
96
|
|
66
97
|
{% if html_id and headerLevel >= minHeader and headerLevel <= maxHeader %}
|
67
|
-
{% capture anchor %}href="#{{ html_id
|
98
|
+
{% capture anchor %}href="#{{ html_id }}"{% endcapture %}
|
68
99
|
|
69
100
|
{% if include.anchorClass %}
|
70
101
|
{% capture anchor %}{{ anchor }} class="{{ include.anchorClass }}"{% endcapture %}
|
@@ -74,6 +105,10 @@
|
|
74
105
|
{% capture anchor %}{{ anchor }} title="{{ include.anchorTitle | replace: '%heading%', header }}"{% endcapture %}
|
75
106
|
{% endif %}
|
76
107
|
|
108
|
+
{% if include.anchorAttrs %}
|
109
|
+
{% capture anchor %}{{ anchor }} {{ include.anchorAttrs | replace: '%heading%', header | replace: '%html_id%', html_id }}{% endcapture %}
|
110
|
+
{% endif %}
|
111
|
+
|
77
112
|
{% capture anchor %}<a {{ anchor }}>{{ include.anchorBody | replace: '%heading%', header | default: '' }}</a>{% endcapture %}
|
78
113
|
|
79
114
|
<!-- In order to prevent adding extra space after a heading, we'll let the 'anchor' value contain it -->
|
@@ -93,8 +128,17 @@
|
|
93
128
|
{{ header }}{{ anchor }}
|
94
129
|
{% endif %}
|
95
130
|
{{ include.bodySuffix }}
|
96
|
-
</h{{
|
131
|
+
</h{{ headerLevel }}>
|
97
132
|
{% endcapture %}
|
133
|
+
|
134
|
+
<!--
|
135
|
+
If we have content after the `</hX>` tag, then we'll want to append that here so we don't lost any content.
|
136
|
+
-->
|
137
|
+
{% assign chunkCount = _workspace | size %}
|
138
|
+
{% if chunkCount > 1 %}
|
139
|
+
{% capture new_heading %}{{ new_heading }}{{ _workspace | last }}{% endcapture %}
|
140
|
+
{% endif %}
|
141
|
+
|
98
142
|
{% capture edited_headings %}{{ edited_headings }}{{ new_heading }}{% endcapture %}
|
99
143
|
{% endfor %}
|
100
144
|
{% endcapture %}{% assign headingsWorkspace = '' %}{{ edited_headings | strip }}
|
data/_layouts/default.html
CHANGED
@@ -48,7 +48,22 @@ layout: table_wrappers
|
|
48
48
|
</a>
|
49
49
|
</div>
|
50
50
|
<nav role="navigation" aria-label="Main" id="site-nav" class="site-nav">
|
51
|
-
{%
|
51
|
+
{% if site.just_the_docs.collections %}
|
52
|
+
{% assign collections_size = site.just_the_docs.collections | size %}
|
53
|
+
{% for collection_entry in site.just_the_docs.collections %}
|
54
|
+
{% assign collection_key = collection_entry[0] %}
|
55
|
+
{% assign collection_value = collection_entry[1] %}
|
56
|
+
{% assign collection = site[collection_key] %}
|
57
|
+
{% if collection_value.nav_exclude != true %}
|
58
|
+
{% if collections_size > 1 %}
|
59
|
+
<div class="nav-category">{{ collection_value.name }}</div>
|
60
|
+
{% endif %}
|
61
|
+
{% include nav.html pages=collection %}
|
62
|
+
{% endif %}
|
63
|
+
{% endfor %}
|
64
|
+
{% else %}
|
65
|
+
{% include nav.html pages=site.html_pages %}
|
66
|
+
{% endif %}
|
52
67
|
</nav>
|
53
68
|
<footer class="site-footer">
|
54
69
|
This site uses <a href="https://github.com/pmarsceill/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll.
|
@@ -101,7 +116,7 @@ layout: table_wrappers
|
|
101
116
|
{% endunless %}
|
102
117
|
<div id="main-content" class="main-content" role="main">
|
103
118
|
{% if site.heading_anchors != false %}
|
104
|
-
{% include vendor/anchor_headings.html html=content beforeHeading="true" anchorBody="<svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><use xlink:href=\"#svg-link\"></use></svg>" anchorClass="anchor-heading" %}
|
119
|
+
{% include vendor/anchor_headings.html html=content beforeHeading="true" anchorBody="<svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><use xlink:href=\"#svg-link\"></use></svg>" anchorClass="anchor-heading" anchorAttrs="aria-labelledby=\"%html_id%\"" %}
|
105
120
|
{% else %}
|
106
121
|
{{ content }}
|
107
122
|
{% endif %}
|
@@ -144,7 +159,7 @@ layout: table_wrappers
|
|
144
159
|
site.gh_edit_view_mode
|
145
160
|
%}
|
146
161
|
<p class="text-small text-grey-dk-000 mb-0">
|
147
|
-
<a href="{{ site.gh_edit_repository }}/{{ site.gh_edit_view_mode }}/{{ site.gh_edit_branch }}/{{ page.path }}" id="edit-this-page">{{ site.gh_edit_link_text }}</a>
|
162
|
+
<a href="{{ site.gh_edit_repository }}/{{ site.gh_edit_view_mode }}/{{ site.gh_edit_branch }}{% if site.gh_edit_source %}/{{ site.gh_edit_source }}{% endif %}/{{ page.path }}" id="edit-this-page">{{ site.gh_edit_link_text }}</a>
|
148
163
|
</p>
|
149
164
|
{% endif %}
|
150
165
|
</div>
|
data/_sass/code.scss
CHANGED
@@ -11,23 +11,96 @@ code {
|
|
11
11
|
border-radius: $border-radius;
|
12
12
|
}
|
13
13
|
|
14
|
-
|
15
|
-
|
14
|
+
// Content structure for highlighted code blocks using fences or Liquid
|
15
|
+
//
|
16
|
+
// ```[LANG]...```, no kramdown line_numbers:
|
17
|
+
// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code
|
18
|
+
//
|
19
|
+
// ```[LANG]...```, kramdown line_numbers = true:
|
20
|
+
// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code
|
21
|
+
// > div.table-wrapper > table.rouge-table > tbody > tr
|
22
|
+
// > td.rouge-gutter.gl > pre.lineno
|
23
|
+
// | td.rouge-code > pre
|
24
|
+
//
|
25
|
+
// {% highlight LANG %}...{% endhighlight %}:
|
26
|
+
// figure.highlight > pre > code.language-LANG
|
27
|
+
//
|
28
|
+
// {% highlight LANG linenos %}...{% endhighlight %}:
|
29
|
+
// figure.highlight > pre > code.language-LANG
|
30
|
+
// > div.table-wrapper > table.rouge-table > tbody > tr
|
31
|
+
// > td.gutter.gl > pre.lineno
|
32
|
+
// | td.code > pre
|
33
|
+
//
|
34
|
+
// fix_linenos removes the outermost pre when it encloses table.rouge-table
|
35
|
+
//
|
36
|
+
// See docs/index-test.md for some tests.
|
37
|
+
//
|
38
|
+
// No kramdown line_numbers: fences and Liquid highlighting look the same.
|
39
|
+
// Kramdown line_numbers = true: fences have a wider gutter than with Liquid?
|
40
|
+
|
41
|
+
// ```[LANG]...```
|
42
|
+
div.highlighter-rouge {
|
16
43
|
padding: $sp-3;
|
17
44
|
margin-top: 0;
|
18
|
-
margin-bottom:
|
45
|
+
margin-bottom: $sp-3;
|
19
46
|
background-color: $code-background-color;
|
20
47
|
border-radius: $border-radius;
|
48
|
+
box-shadow: none;
|
21
49
|
-webkit-overflow-scrolling: touch;
|
22
50
|
|
51
|
+
div.highlight,
|
52
|
+
pre.highlight,
|
23
53
|
code {
|
24
54
|
padding: 0;
|
55
|
+
margin: 0;
|
25
56
|
border: 0;
|
26
57
|
}
|
27
58
|
}
|
28
59
|
|
29
|
-
|
60
|
+
// {% highlight LANG %}...{% endhighlight %},
|
61
|
+
// {% highlight LANG linenos %}...{% endhighlight %}:
|
62
|
+
figure.highlight {
|
63
|
+
padding: $sp-3;
|
64
|
+
margin-top: 0;
|
30
65
|
margin-bottom: $sp-3;
|
66
|
+
background-color: $code-background-color;
|
67
|
+
border-radius: $border-radius;
|
68
|
+
box-shadow: none;
|
69
|
+
-webkit-overflow-scrolling: touch;
|
70
|
+
|
71
|
+
pre,
|
72
|
+
code {
|
73
|
+
padding: 0;
|
74
|
+
margin: 0;
|
75
|
+
border: 0;
|
76
|
+
}
|
77
|
+
}
|
78
|
+
|
79
|
+
// ```[LANG]...```, kramdown line_numbers = true,
|
80
|
+
// {% highlight LANG linenos %}...{% endhighlight %}:
|
81
|
+
.highlight .table-wrapper {
|
82
|
+
padding: 0;
|
83
|
+
margin: 0;
|
84
|
+
border: 0;
|
85
|
+
box-shadow: none;
|
86
|
+
|
87
|
+
td,
|
88
|
+
pre {
|
89
|
+
@include fs-2;
|
90
|
+
min-width: 0;
|
91
|
+
padding: 0;
|
92
|
+
background-color: $code-background-color;
|
93
|
+
border: 0;
|
94
|
+
}
|
95
|
+
|
96
|
+
td.gl {
|
97
|
+
padding-right: $sp-3;
|
98
|
+
}
|
99
|
+
|
100
|
+
pre {
|
101
|
+
margin: 0;
|
102
|
+
line-height: 2;
|
103
|
+
}
|
31
104
|
}
|
32
105
|
|
33
106
|
.highlight .c {
|
data/_sass/content.scss
CHANGED
@@ -109,7 +109,7 @@
|
|
109
109
|
|
110
110
|
dl {
|
111
111
|
display: grid;
|
112
|
-
grid-template
|
112
|
+
grid-template: auto / 10em 1fr;
|
113
113
|
}
|
114
114
|
|
115
115
|
dt,
|
@@ -118,16 +118,18 @@
|
|
118
118
|
}
|
119
119
|
|
120
120
|
dt {
|
121
|
+
grid-column: 1;
|
122
|
+
font-weight: 500;
|
121
123
|
text-align: right;
|
122
|
-
|
123
124
|
&::after {
|
124
125
|
content: ":";
|
125
126
|
}
|
126
127
|
}
|
127
128
|
|
128
129
|
dd {
|
130
|
+
grid-column: 2;
|
131
|
+
margin-bottom: 0;
|
129
132
|
margin-left: 1em;
|
130
|
-
font-weight: 500;
|
131
133
|
}
|
132
134
|
|
133
135
|
.anchor-heading {
|
data/_sass/navigation.scss
CHANGED
@@ -131,6 +131,29 @@
|
|
131
131
|
}
|
132
132
|
}
|
133
133
|
|
134
|
+
.nav-category {
|
135
|
+
padding-top: $sp-2;
|
136
|
+
padding-right: $gutter-spacing-sm;
|
137
|
+
padding-bottom: $sp-2;
|
138
|
+
padding-left: $gutter-spacing-sm;
|
139
|
+
font-weight: 600;
|
140
|
+
text-align: end;
|
141
|
+
text-transform: uppercase;
|
142
|
+
border-bottom: $border $border-color;
|
143
|
+
@include fs-2;
|
144
|
+
|
145
|
+
@include mq(md) {
|
146
|
+
padding-right: $gutter-spacing;
|
147
|
+
padding-left: $gutter-spacing;
|
148
|
+
margin-top: $gutter-spacing-sm;
|
149
|
+
text-align: start;
|
150
|
+
|
151
|
+
&:first-child {
|
152
|
+
margin-top: 0;
|
153
|
+
}
|
154
|
+
}
|
155
|
+
}
|
156
|
+
|
134
157
|
// Aux nav
|
135
158
|
|
136
159
|
.aux-nav {
|
data/_sass/search.scss
CHANGED
@@ -284,13 +284,13 @@
|
|
284
284
|
background-color: $search-background-color;
|
285
285
|
|
286
286
|
@include mq(md) {
|
287
|
-
padding-left:
|
287
|
+
padding-left: 2.3rem;
|
288
288
|
}
|
289
289
|
}
|
290
290
|
|
291
291
|
.search-label {
|
292
292
|
@include mq(md) {
|
293
|
-
padding-left:
|
293
|
+
padding-left: 0.6rem;
|
294
294
|
}
|
295
295
|
}
|
296
296
|
|
@@ -2,14 +2,32 @@
|
|
2
2
|
// Typography
|
3
3
|
//
|
4
4
|
|
5
|
-
$body-font-family: -apple-system, BlinkMacSystemFont, "
|
6
|
-
|
5
|
+
$body-font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
|
6
|
+
Roboto, "Helvetica Neue", Arial, sans-serif !default;
|
7
7
|
$mono-font-family: "SFMono-Regular", Menlo, Consolas, Monospace !default;
|
8
8
|
$root-font-size: 16px !default; // Base font-size for rems
|
9
9
|
$body-line-height: 1.4 !default;
|
10
10
|
$content-line-height: 1.6 !default;
|
11
11
|
$body-heading-line-height: 1.25 !default;
|
12
12
|
|
13
|
+
//
|
14
|
+
// Font size
|
15
|
+
// `-sm` suffix is the size at the small (and above) media query
|
16
|
+
//
|
17
|
+
|
18
|
+
$font-size-1: 9px !default;
|
19
|
+
$font-size-1-sm: 10px !default;
|
20
|
+
$font-size-2: 11px !default; //h4 - uppercased!, h6 not uppercased, text-small
|
21
|
+
$font-size-3: 12px !default; //h5
|
22
|
+
$font-size-4: 14px !default;
|
23
|
+
$font-size-5: 16px !default; //h3
|
24
|
+
$font-size-6: 18px !default; //h2
|
25
|
+
$font-size-7: 24px !default;
|
26
|
+
$font-size-8: 32px !default; //h1
|
27
|
+
$font-size-9: 36px !default;
|
28
|
+
$font-size-10: 42px !default;
|
29
|
+
$font-size-10-sm: 48px !default;
|
30
|
+
|
13
31
|
//
|
14
32
|
// Colors
|
15
33
|
//
|
@@ -1,86 +1,84 @@
|
|
1
|
-
// Font size
|
2
|
-
|
3
1
|
@mixin fs-1 {
|
4
|
-
font-size:
|
2
|
+
font-size: $font-size-1 !important;
|
5
3
|
|
6
4
|
@include mq(sm) {
|
7
|
-
font-size:
|
5
|
+
font-size: $font-size-1-sm !important;
|
8
6
|
}
|
9
7
|
}
|
10
8
|
|
11
9
|
@mixin fs-2 {
|
12
|
-
font-size:
|
10
|
+
font-size: $font-size-2 !important;
|
13
11
|
|
14
12
|
@include mq(sm) {
|
15
|
-
font-size:
|
13
|
+
font-size: $font-size-3 !important;
|
16
14
|
}
|
17
15
|
}
|
18
16
|
|
19
17
|
@mixin fs-3 {
|
20
|
-
font-size:
|
18
|
+
font-size: $font-size-3 !important;
|
21
19
|
|
22
20
|
@include mq(sm) {
|
23
|
-
font-size:
|
21
|
+
font-size: $font-size-4 !important;
|
24
22
|
}
|
25
23
|
}
|
26
24
|
|
27
25
|
@mixin fs-4 {
|
28
|
-
font-size:
|
26
|
+
font-size: $font-size-4 !important;
|
29
27
|
|
30
28
|
@include mq(sm) {
|
31
|
-
font-size:
|
29
|
+
font-size: $font-size-5 !important;
|
32
30
|
}
|
33
31
|
}
|
34
32
|
|
35
33
|
@mixin fs-5 {
|
36
|
-
font-size:
|
34
|
+
font-size: $font-size-5 !important;
|
37
35
|
|
38
36
|
@include mq(sm) {
|
39
|
-
font-size:
|
37
|
+
font-size: $font-size-6 !important;
|
40
38
|
}
|
41
39
|
}
|
42
40
|
|
43
41
|
@mixin fs-6 {
|
44
|
-
font-size:
|
42
|
+
font-size: $font-size-6 !important;
|
45
43
|
|
46
44
|
@include mq(sm) {
|
47
|
-
font-size:
|
45
|
+
font-size: $font-size-7 !important;
|
48
46
|
line-height: $body-heading-line-height;
|
49
47
|
}
|
50
48
|
}
|
51
49
|
|
52
50
|
@mixin fs-7 {
|
53
|
-
font-size:
|
51
|
+
font-size: $font-size-7 !important;
|
54
52
|
line-height: $body-heading-line-height;
|
55
53
|
|
56
54
|
@include mq(sm) {
|
57
|
-
font-size:
|
55
|
+
font-size: $font-size-8 !important;
|
58
56
|
}
|
59
57
|
}
|
60
58
|
|
61
59
|
@mixin fs-8 {
|
62
|
-
font-size:
|
60
|
+
font-size: $font-size-8 !important;
|
63
61
|
line-height: $body-heading-line-height;
|
64
62
|
|
65
63
|
@include mq(sm) {
|
66
|
-
font-size:
|
64
|
+
font-size: $font-size-9 !important;
|
67
65
|
}
|
68
66
|
}
|
69
67
|
|
70
68
|
@mixin fs-9 {
|
71
|
-
font-size:
|
69
|
+
font-size: $font-size-9 !important;
|
72
70
|
line-height: $body-heading-line-height;
|
73
71
|
|
74
72
|
@include mq(sm) {
|
75
|
-
font-size:
|
73
|
+
font-size: $font-size-10 !important;
|
76
74
|
}
|
77
75
|
}
|
78
76
|
|
79
77
|
@mixin fs-10 {
|
80
|
-
font-size:
|
78
|
+
font-size: $font-size-10 !important;
|
81
79
|
line-height: $body-heading-line-height;
|
82
80
|
|
83
81
|
@include mq(sm) {
|
84
|
-
font-size:
|
82
|
+
font-size: $font-size-10-sm !important;
|
85
83
|
}
|
86
84
|
}
|
data/_sass/typography.scss
CHANGED
@@ -2,8 +2,21 @@
|
|
2
2
|
permalink: /assets/js/search-data.json
|
3
3
|
---
|
4
4
|
{
|
5
|
-
|
6
|
-
|
5
|
+
{%- assign i = 0 -%}
|
6
|
+
{%- assign pages_array = '' | split: '' -%}
|
7
|
+
{%- assign pages_array = pages_array | push: site.html_pages -%}
|
8
|
+
{%- if site.just_the_docs.collections -%}
|
9
|
+
{%- for collection_entry in site.just_the_docs.collections -%}
|
10
|
+
{%- assign collection_key = collection_entry[0] -%}
|
11
|
+
{%- assign collection_value = collection_entry[1] -%}
|
12
|
+
{%- assign collection = site[collection_key] -%}
|
13
|
+
{%- if collection_value.search_exclude != true -%}
|
14
|
+
{%- assign pages_array = pages_array | push: collection -%}
|
15
|
+
{%- endif -%}
|
16
|
+
{%- endfor -%}
|
17
|
+
{%- endif -%}
|
18
|
+
{%- for pages in pages_array -%}
|
19
|
+
{%- for page in pages -%}
|
7
20
|
{%- if page.title and page.search_exclude != true -%}
|
8
21
|
{%- assign page_content = page.content -%}
|
9
22
|
{%- assign heading_level = site.search.heading_level | default: 2 -%}
|
@@ -14,7 +27,7 @@ permalink: /assets/js/search-data.json
|
|
14
27
|
{%- endfor -%}
|
15
28
|
{%- assign parts = page_content | split: '<h1' -%}
|
16
29
|
{%- assign title_found = false -%}
|
17
|
-
{
|
30
|
+
{%- for part in parts offset: 1 -%}
|
18
31
|
{%- assign titleAndContent = part | split: '</h1>' -%}
|
19
32
|
{%- assign title = titleAndContent[0] | replace_first: '>', '<h1>' | split: '<h1>' -%}
|
20
33
|
{%- assign title = title[1] | strip_html -%}
|
@@ -54,5 +67,6 @@ permalink: /assets/js/search-data.json
|
|
54
67
|
{%- assign i = i | plus: 1 -%}
|
55
68
|
{%- endunless -%}
|
56
69
|
{%- endif -%}
|
57
|
-
{
|
70
|
+
{%- endfor -%}
|
71
|
+
{%- endfor %}
|
58
72
|
}
|
data/lib/tasks/search.rake
CHANGED
@@ -12,8 +12,21 @@ namespace :search do
|
|
12
12
|
permalink: /assets/js/search-data.json
|
13
13
|
---
|
14
14
|
{
|
15
|
-
|
16
|
-
|
15
|
+
{%- assign i = 0 -%}
|
16
|
+
{%- assign pages_array = '' | split: '' -%}
|
17
|
+
{%- assign pages_array = pages_array | push: site.html_pages -%}
|
18
|
+
{%- if site.just_the_docs.collections -%}
|
19
|
+
{%- for collection_entry in site.just_the_docs.collections -%}
|
20
|
+
{%- assign collection_key = collection_entry[0] -%}
|
21
|
+
{%- assign collection_value = collection_entry[1] -%}
|
22
|
+
{%- assign collection = site[collection_key] -%}
|
23
|
+
{%- if collection_value.search_exclude != true -%}
|
24
|
+
{%- assign pages_array = pages_array | push: collection -%}
|
25
|
+
{%- endif -%}
|
26
|
+
{%- endfor -%}
|
27
|
+
{%- endif -%}
|
28
|
+
{%- for pages in pages_array -%}
|
29
|
+
{%- for page in pages -%}
|
17
30
|
{%- if page.title and page.search_exclude != true -%}
|
18
31
|
{%- assign page_content = page.content -%}
|
19
32
|
{%- assign heading_level = site.search.heading_level | default: 2 -%}
|
@@ -24,7 +37,7 @@ permalink: /assets/js/search-data.json
|
|
24
37
|
{%- endfor -%}
|
25
38
|
{%- assign parts = page_content | split: \'<h1\' -%}
|
26
39
|
{%- assign title_found = false -%}
|
27
|
-
{
|
40
|
+
{%- for part in parts offset: 1 -%}
|
28
41
|
{%- assign titleAndContent = part | split: \'</h1>\' -%}
|
29
42
|
{%- assign title = titleAndContent[0] | replace_first: \'>\', \'<h1>\' | split: \'<h1>\' -%}
|
30
43
|
{%- assign title = title[1] | strip_html -%}
|
@@ -47,7 +60,7 @@ permalink: /assets/js/search-data.json
|
|
47
60
|
"doc": {{ page.title | jsonify }},
|
48
61
|
"title": {{ title | jsonify }},
|
49
62
|
"content": {{ content | replace: \'</h\', \' . </h\' | replace: \'<hr\', \' . <hr\' | replace: \'</p\', \' . </p\' | replace: \'<ul\', \' . <ul\' | replace: \'</ul\', \' . </ul\' | replace: \'<ol\', \' . <ol\' | replace: \'</ol\', \' . </ol\' | replace: \'</tr\', \' . </tr\' | replace: \'<li\', \' | <li\' | replace: \'</li\', \' | </li\' | replace: \'</td\', \' | </td\' | replace: \'<td\', \' | <td\' | replace: \'</th\', \' | </th\' | replace: \'<th\', \' | <th\' | strip_html | remove: \'Table of contents\' | normalize_whitespace | replace: \'. . .\', \'.\' | replace: \'. .\', \'.\' | replace: \'| |\', \'|\' | append: \' \' | jsonify }},
|
50
|
-
"url": "{{ url |
|
63
|
+
"url": "{{ url | relative_url }}",
|
51
64
|
"relUrl": "{{ url }}"
|
52
65
|
}
|
53
66
|
{%- assign i = i | plus: 1 -%}
|
@@ -58,13 +71,14 @@ permalink: /assets/js/search-data.json
|
|
58
71
|
"doc": {{ page.title | jsonify }},
|
59
72
|
"title": {{ page.title | jsonify }},
|
60
73
|
"content": {{ parts[0] | replace: \'</h\', \' . </h\' | replace: \'<hr\', \' . <hr\' | replace: \'</p\', \' . </p\' | replace: \'<ul\', \' . <ul\' | replace: \'</ul\', \' . </ul\' | replace: \'<ol\', \' . <ol\' | replace: \'</ol\', \' . </ol\' | replace: \'</tr\', \' . </tr\' | replace: \'<li\', \' | <li\' | replace: \'</li\', \' | </li\' | replace: \'</td\', \' | </td\' | replace: \'<td\', \' | <td\' | replace: \'</th\', \' | </th\' | replace: \'<th\', \' | <th\' | strip_html | remove: \'Table of contents\' | normalize_whitespace | replace: \'. . .\', \'.\' | replace: \'. .\', \'.\' | replace: \'| |\', \'|\' | append: \' \' | jsonify }},
|
61
|
-
"url": "{{ page.url |
|
74
|
+
"url": "{{ page.url | relative_url }}",
|
62
75
|
"relUrl": "{{ page.url }}"
|
63
76
|
}
|
64
77
|
{%- assign i = i | plus: 1 -%}
|
65
78
|
{%- endunless -%}
|
66
79
|
{%- endif -%}
|
67
|
-
{
|
80
|
+
{%- endfor -%}
|
81
|
+
{%- endfor %}
|
68
82
|
}'
|
69
83
|
end
|
70
84
|
puts 'Done.'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: just-the-docs
|
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
|
- Patrick Marsceill
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-09-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -85,6 +85,7 @@ files:
|
|
85
85
|
- Rakefile
|
86
86
|
- _includes/css/custom.scss.liquid
|
87
87
|
- _includes/css/just-the-docs.scss.liquid
|
88
|
+
- _includes/fix_linenos.html
|
88
89
|
- _includes/head.html
|
89
90
|
- _includes/head_custom.html
|
90
91
|
- _includes/js/custom.js
|