jekyll-wikibonsai 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +57 -0
- data/_config.yml +269 -0
- data/_data/emoji.yml +46 -0
- data/_data/themes.yml +145 -0
- data/_includes/anchor-headings.html +156 -0
- data/_includes/branch.html +18 -0
- data/_includes/btn_state.html +14 -0
- data/_includes/connect.html +46 -0
- data/_includes/cookie-consent.html +79 -0
- data/_includes/dates.html +22 -0
- data/_includes/hp-tooltip.html +106 -0
- data/_includes/img/bullet-ancestor.svg +5 -0
- data/_includes/img/bullet-branch.svg +7 -0
- data/_includes/img/bullet-net-web.svg +9 -0
- data/_includes/img/bullet-tree.svg +9 -0
- data/_includes/img/pencil-filter.svg +17 -0
- data/_includes/share.html +47 -0
- data/_includes/site-nav.html +100 -0
- data/_includes/tags.html +49 -0
- data/_includes/themes.scss.liquid +80 -0
- data/_includes/toc.html +187 -0
- data/_layouts/404.html +10 -0
- data/_layouts/about.html +14 -0
- data/_layouts/archive.html +77 -0
- data/_layouts/base.html +68 -0
- data/_layouts/book.html +40 -0
- data/_layouts/entry.html +269 -0
- data/_layouts/home.html +96 -0
- data/_layouts/map.html +17 -0
- data/_layouts/post.html +37 -0
- data/_layouts/privacy.html +15 -0
- data/_layouts/recent.html +66 -0
- data/_layouts/state.html +70 -0
- data/_layouts/table-wrappers.html +7 -0
- data/_layouts/vendor/compress.html +10 -0
- data/_sass/base/_code.scss +133 -0
- data/_sass/base/_layout.scss +55 -0
- data/_sass/base/_link.scss +105 -0
- data/_sass/base/_main.scss +96 -0
- data/_sass/base/_markdown.scss +281 -0
- data/_sass/base/_typography.scss +89 -0
- data/_sass/base/code_themes/_gruvbox.scss +92 -0
- data/_sass/base/code_themes/_monokai.scss +217 -0
- data/_sass/base/code_themes/_solarized.scss +84 -0
- data/_sass/components/_btn.scss +95 -0
- data/_sass/components/_infobox.scss +48 -0
- data/_sass/components/_item.scss +28 -0
- data/_sass/components/_search.scss +61 -0
- data/_sass/components/_tag_pills.scss +24 -0
- data/_sass/components/_visited.scss +42 -0
- data/_sass/includes/_anchor_headings.scss +36 -0
- data/_sass/includes/_connect.scss +8 -0
- data/_sass/includes/_cookie_consent.scss +46 -0
- data/_sass/includes/_dates.scss +6 -0
- data/_sass/includes/_hp_tooltip.scss +41 -0
- data/_sass/includes/_share.scss +10 -0
- data/_sass/includes/_site_nav.scss +97 -0
- data/_sass/includes/_svg.scss +89 -0
- data/_sass/includes/_toc.scss +38 -0
- data/_sass/layouts/_404.scss +3 -0
- data/_sass/layouts/_about.scss +3 -0
- data/_sass/layouts/_archive.scss +26 -0
- data/_sass/layouts/_book.scss +17 -0
- data/_sass/layouts/_entry.scss +156 -0
- data/_sass/layouts/_home.scss +75 -0
- data/_sass/layouts/_map.scss +3 -0
- data/_sass/layouts/_post.scss +17 -0
- data/_sass/layouts/_privacy.scss +3 -0
- data/_sass/layouts/_recent.scss +77 -0
- data/_sass/layouts/_state.scss +98 -0
- data/_sass/main.scss +73 -0
- data/_sass/util/_functions.scss +9 -0
- data/_sass/util/_variables.scss +113 -0
- data/_sass/util/mixins/_buttons.scss +27 -0
- data/_sass/util/mixins/_layout.scss +81 -0
- data/_sass/util/mixins/_typography.scss +84 -0
- data/_sass/vendor/normalize.scss/README.md +7 -0
- data/_sass/vendor/normalize.scss/normalize.scss +349 -0
- data/assets/css/styles.scss +31 -0
- data/assets/font/Cutive_Mono/CutiveMono-Regular.ttf +0 -0
- data/assets/font/Cutive_Mono/OFL.txt +93 -0
- data/assets/font/Old_Standard_TT/OFL.txt +93 -0
- data/assets/font/Old_Standard_TT/OldStandardTT-Bold.ttf +0 -0
- data/assets/font/Old_Standard_TT/OldStandardTT-Italic.ttf +0 -0
- data/assets/font/Old_Standard_TT/OldStandardTT-Regular.ttf +0 -0
- data/assets/font/exo2/Exo2-Italic-VariableFont_wght.ttf +0 -0
- data/assets/font/exo2/Exo2-VariableFont_wght.ttf +0 -0
- data/assets/font/exo2/OFL.txt +93 -0
- data/assets/font/exo2/README.txt +81 -0
- data/assets/font/exo2/static/Exo2-Black.ttf +0 -0
- data/assets/font/exo2/static/Exo2-BlackItalic.ttf +0 -0
- data/assets/font/exo2/static/Exo2-Bold.ttf +0 -0
- data/assets/font/exo2/static/Exo2-BoldItalic.ttf +0 -0
- data/assets/font/exo2/static/Exo2-ExtraBold.ttf +0 -0
- data/assets/font/exo2/static/Exo2-ExtraBoldItalic.ttf +0 -0
- data/assets/font/exo2/static/Exo2-ExtraLight.ttf +0 -0
- data/assets/font/exo2/static/Exo2-ExtraLightItalic.ttf +0 -0
- data/assets/font/exo2/static/Exo2-Italic.ttf +0 -0
- data/assets/font/exo2/static/Exo2-Light.ttf +0 -0
- data/assets/font/exo2/static/Exo2-LightItalic.ttf +0 -0
- data/assets/font/exo2/static/Exo2-Medium.ttf +0 -0
- data/assets/font/exo2/static/Exo2-MediumItalic.ttf +0 -0
- data/assets/font/exo2/static/Exo2-Regular.ttf +0 -0
- data/assets/font/exo2/static/Exo2-SemiBold.ttf +0 -0
- data/assets/font/exo2/static/Exo2-SemiBoldItalic.ttf +0 -0
- data/assets/font/exo2/static/Exo2-Thin.ttf +0 -0
- data/assets/font/exo2/static/Exo2-ThinItalic.ttf +0 -0
- data/assets/img/bonsai-dark.png +0 -0
- data/assets/img/bonsai-dark.svg +106 -0
- data/assets/img/bonsai-light.png +0 -0
- data/assets/img/bonsai-light.svg +81 -0
- data/assets/img/bonsai-star.png +0 -0
- data/assets/img/bonsai-star.svg +1 -0
- data/assets/img/books/the-ancient-art-of-bonsai.png +0 -0
- data/assets/img/favicon-dark.png +0 -0
- data/assets/img/favicon-light.png +0 -0
- data/assets/img/nav-base-dark.svg +1 -0
- data/assets/img/nav-base-light.svg +1 -0
- data/assets/img/nav-base-star.svg +1 -0
- data/assets/img/nav-bonsai-dark.svg +1 -0
- data/assets/img/nav-bonsai-light.svg +1 -0
- data/assets/img/nav-bonsai-star.svg +1 -0
- data/assets/js/entry.js +130 -0
- data/assets/js/graph.js +64 -0
- data/assets/js/scripts.js +64 -0
- data/assets/js/search.js +165 -0
- data/assets/js/site-nav.js +132 -0
- data/assets/js/theme-colors.js +57 -0
- data/assets/js/vendor/lunr.js +3475 -0
- data/assets/js/vendor/lunr.min.js +6 -0
- data/assets/js/visited-nav.js +65 -0
- metadata +135 -2
data/_includes/toc.html
ADDED
@@ -0,0 +1,187 @@
|
|
1
|
+
{% capture tocWorkspace %}
|
2
|
+
{% comment %}
|
3
|
+
Copyright (c) 2017 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.1.0
|
28
|
+
https://github.com/allejo/jekyll-toc
|
29
|
+
|
30
|
+
"...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe
|
31
|
+
|
32
|
+
Usage:
|
33
|
+
{% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %}
|
34
|
+
|
35
|
+
Parameters:
|
36
|
+
* html (string) - the HTML of compiled markdown generated by kramdown in Jekyll
|
37
|
+
|
38
|
+
Optional Parameters:
|
39
|
+
* sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC
|
40
|
+
* class (string) : '' - a CSS class assigned to the TOC
|
41
|
+
* id (string) : '' - an ID to assigned to the TOC
|
42
|
+
* h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored
|
43
|
+
* h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored
|
44
|
+
* ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list
|
45
|
+
* item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level
|
46
|
+
* submenu_class (string) : '' - add custom class(es) for each child group of headings; has support for '%level%' placeholder which is the current "submenu" heading level
|
47
|
+
* base_url (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content
|
48
|
+
* anchor_class (string) : '' - add custom class(es) for each anchor element
|
49
|
+
* skip_no_ids (bool) : false - skip headers that do not have an `id` attribute
|
50
|
+
|
51
|
+
Output:
|
52
|
+
An ordered or unordered list representing the table of contents of a markdown block. This snippet will only
|
53
|
+
generate the table of contents and will NOT output the markdown given to it
|
54
|
+
{% endcomment %}
|
55
|
+
|
56
|
+
{% capture newline %}
|
57
|
+
{% endcapture %}
|
58
|
+
{% assign newline = newline | rstrip %} <!-- Remove the extra spacing but preserve the newline -->
|
59
|
+
|
60
|
+
{% capture deprecation_warnings %}{% endcapture %}
|
61
|
+
|
62
|
+
{% if include.baseurl %}
|
63
|
+
{% capture deprecation_warnings %}{{ deprecation_warnings }}<!-- jekyll-toc :: "baseurl" has been deprecated, use "base_url" instead -->{{ newline }}{% endcapture %}
|
64
|
+
{% endif %}
|
65
|
+
|
66
|
+
{% if include.skipNoIDs %}
|
67
|
+
{% capture deprecation_warnings %}{{ deprecation_warnings }}<!-- jekyll-toc :: "skipNoIDs" has been deprecated, use "skip_no_ids" instead -->{{ newline }}{% endcapture %}
|
68
|
+
{% endif %}
|
69
|
+
|
70
|
+
{% capture jekyll_toc %}{% endcapture %}
|
71
|
+
{% assign orderedList = include.ordered | default: false %}
|
72
|
+
{% assign baseURL = include.base_url | default: include.baseurl | default: '' %}
|
73
|
+
{% assign skipNoIDs = include.skip_no_ids | default: include.skipNoIDs | default: false %}
|
74
|
+
{% assign minHeader = include.h_min | default: 1 %}
|
75
|
+
{% assign maxHeader = include.h_max | default: 6 %}
|
76
|
+
{% assign nodes = include.html | strip | split: '<h' %}
|
77
|
+
|
78
|
+
{% assign firstHeader = true %}
|
79
|
+
{% assign currLevel = 0 %}
|
80
|
+
{% assign lastLevel = 0 %}
|
81
|
+
|
82
|
+
{% capture listModifier %}{% if orderedList %}ol{% else %}ul{% endif %}{% endcapture %}
|
83
|
+
|
84
|
+
{% for node in nodes %}
|
85
|
+
{% if node == "" %}
|
86
|
+
{% continue %}
|
87
|
+
{% endif %}
|
88
|
+
|
89
|
+
{% assign currLevel = node | replace: '"', '' | slice: 0, 1 | times: 1 %}
|
90
|
+
|
91
|
+
{% if currLevel < minHeader or currLevel > maxHeader %}
|
92
|
+
{% continue %}
|
93
|
+
{% endif %}
|
94
|
+
|
95
|
+
{% assign _workspace = node | split: '</h' %}
|
96
|
+
|
97
|
+
{% assign _idWorkspace = _workspace[0] | split: 'id="' %}
|
98
|
+
{% assign _idWorkspace = _idWorkspace[1] | split: '"' %}
|
99
|
+
{% assign htmlID = _idWorkspace[0] %}
|
100
|
+
|
101
|
+
{% assign _classWorkspace = _workspace[0] | split: 'class="' %}
|
102
|
+
{% assign _classWorkspace = _classWorkspace[1] | split: '"' %}
|
103
|
+
{% assign htmlClass = _classWorkspace[0] %}
|
104
|
+
|
105
|
+
{% if htmlClass contains "no_toc" %}
|
106
|
+
{% continue %}
|
107
|
+
{% endif %}
|
108
|
+
|
109
|
+
{% if firstHeader %}
|
110
|
+
{% assign minHeader = currLevel %}
|
111
|
+
{% endif %}
|
112
|
+
|
113
|
+
{% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %}
|
114
|
+
{% assign header = _workspace[0] | replace: _hAttrToStrip, '' %}
|
115
|
+
|
116
|
+
{% if include.item_class and include.item_class != blank %}
|
117
|
+
{% capture listItemClass %} class="{{ include.item_class | replace: '%level%', currLevel | split: '.' | join: ' ' }}"{% endcapture %}
|
118
|
+
{% endif %}
|
119
|
+
|
120
|
+
{% if include.submenu_class and include.submenu_class != blank %}
|
121
|
+
{% assign subMenuLevel = currLevel | minus: 1 %}
|
122
|
+
{% capture subMenuClass %} class="{{ include.submenu_class | replace: '%level%', subMenuLevel | split: '.' | join: ' ' }}"{% endcapture %}
|
123
|
+
{% endif %}
|
124
|
+
|
125
|
+
{% capture anchorBody %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %}
|
126
|
+
|
127
|
+
{% if htmlID %}
|
128
|
+
{% capture anchorAttributes %} href="{% if baseURL %}{{ baseURL }}{% endif %}#{{ htmlID }}"{% endcapture %}
|
129
|
+
|
130
|
+
{% if include.anchor_class %}
|
131
|
+
{% capture anchorAttributes %}{{ anchorAttributes }} class="{{ include.anchor_class | split: '.' | join: ' ' }}"{% endcapture %}
|
132
|
+
{% endif %}
|
133
|
+
|
134
|
+
{% capture listItem %}<a{{ anchorAttributes }}>{{ anchorBody }}</a>{% endcapture %}
|
135
|
+
{% elsif skipNoIDs == true %}
|
136
|
+
{% continue %}
|
137
|
+
{% else %}
|
138
|
+
{% capture listItem %}{{ anchorBody }}{% endcapture %}
|
139
|
+
{% endif %}
|
140
|
+
|
141
|
+
{% if currLevel > lastLevel %}
|
142
|
+
{% capture jekyll_toc %}{{ jekyll_toc }}<{{ listModifier }}{{ subMenuClass }}>{% endcapture %}
|
143
|
+
{% elsif currLevel < lastLevel %}
|
144
|
+
{% assign repeatCount = lastLevel | minus: currLevel %}
|
145
|
+
|
146
|
+
{% for i in (1..repeatCount) %}
|
147
|
+
{% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %}
|
148
|
+
{% endfor %}
|
149
|
+
|
150
|
+
{% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %}
|
151
|
+
{% else %}
|
152
|
+
{% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %}
|
153
|
+
{% endif %}
|
154
|
+
|
155
|
+
{% capture jekyll_toc %}{{ jekyll_toc }}<li{{ listItemClass }}>{{ listItem }}{% endcapture %}
|
156
|
+
|
157
|
+
{% assign lastLevel = currLevel %}
|
158
|
+
{% assign firstHeader = false %}
|
159
|
+
{% endfor %}
|
160
|
+
|
161
|
+
{% assign repeatCount = minHeader | minus: 1 %}
|
162
|
+
{% assign repeatCount = lastLevel | minus: repeatCount %}
|
163
|
+
{% for i in (1..repeatCount) %}
|
164
|
+
{% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %}
|
165
|
+
{% endfor %}
|
166
|
+
|
167
|
+
{% if jekyll_toc != '' %}
|
168
|
+
{% assign rootAttributes = '' %}
|
169
|
+
|
170
|
+
{% if include.wrap_class and include.wrap_class != blank %}
|
171
|
+
{% capture wrapperAttributes %} class="{{ include.wrap_class | split: '.' | join: ' ' }}"{% endcapture %} %}
|
172
|
+
{% endif %}
|
173
|
+
|
174
|
+
{% if include.class and include.class != blank %}
|
175
|
+
{% capture rootAttributes %} class="{{ include.class | split: '.' | join: ' ' }}"{% endcapture %}
|
176
|
+
{% endif %}
|
177
|
+
|
178
|
+
{% if include.id and include.id != blank %}
|
179
|
+
{% capture rootAttributes %}{{ rootAttributes }} id="{{ include.id }}"{% endcapture %}
|
180
|
+
{% endif %}
|
181
|
+
|
182
|
+
{% if rootAttributes %}
|
183
|
+
{% assign nodes = jekyll_toc | split: '>' %}
|
184
|
+
{% capture jekyll_toc %}<div {{ wrapperAttributes }}><{{ listModifier }}{{ rootAttributes }}>{{ nodes | shift | join: '>' }}></div>{% endcapture %}
|
185
|
+
{% endif %}
|
186
|
+
{% endif %}
|
187
|
+
{% endcapture %}{% assign tocWorkspace = '' %}{{ deprecation_warnings }}{{ jekyll_toc }}
|
data/_layouts/404.html
ADDED
data/_layouts/about.html
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
---
|
2
|
+
layout: base
|
3
|
+
---
|
4
|
+
<div id="about" class="about">
|
5
|
+
|
6
|
+
<div class="hp-title">
|
7
|
+
<h1 class="p-name">{{ site.data.emoji.about }} {{ page.title }}</h1>
|
8
|
+
</div>
|
9
|
+
|
10
|
+
<div class="hp-content markdown e-content p-name">
|
11
|
+
{{ content }}
|
12
|
+
</div>
|
13
|
+
|
14
|
+
</div>
|
@@ -0,0 +1,77 @@
|
|
1
|
+
---
|
2
|
+
layout: base
|
3
|
+
---
|
4
|
+
<div id="archive" class="archive">
|
5
|
+
|
6
|
+
<div class="hp-title">
|
7
|
+
<h1>{{ site.data.emoji.archive }} {{ page.title }}</h1>
|
8
|
+
<p>{{ content }}</p>
|
9
|
+
</div>
|
10
|
+
|
11
|
+
<div class="hp-content">
|
12
|
+
|
13
|
+
|
14
|
+
<h4 class="archive__title">
|
15
|
+
{{ site.bonsai.archive.section.posts }}
|
16
|
+
</h4>
|
17
|
+
|
18
|
+
<ul class="archive__list">
|
19
|
+
{% assign post_items = site.posts | sort: "date" %}
|
20
|
+
{% for post in post_items%}
|
21
|
+
<li>
|
22
|
+
<div class="archive__item">
|
23
|
+
<span>
|
24
|
+
{% include btn_state.html states=post.status %}
|
25
|
+
<a class="wiki-link" href="{{ post.url | relative_url }}">{{ post.title }}</a>
|
26
|
+
</span>
|
27
|
+
<time class="text--date dt-published">
|
28
|
+
{{ post.updated | date: '%s' | date: '%s' | slice: 0, 10 | date: site.bonsai.date_format }}
|
29
|
+
</time>
|
30
|
+
</div>
|
31
|
+
</li>
|
32
|
+
{% endfor %}
|
33
|
+
</ul>
|
34
|
+
|
35
|
+
<h4 class="archive__title">
|
36
|
+
{{ site.bonsai.archive.section.books }}
|
37
|
+
</h4>
|
38
|
+
<ul class="archive__list">
|
39
|
+
{% assign book_items = site.books | sort %}
|
40
|
+
{% for book in book_items %}
|
41
|
+
<li>
|
42
|
+
<div class="archive__item">
|
43
|
+
<span>
|
44
|
+
{% include btn_state.html states=book.status %}
|
45
|
+
<a class="wiki-link" href="{{ book.url | relative_url }}">{{ book.title }}</a>
|
46
|
+
</span>
|
47
|
+
<time class="text--date dt-published">
|
48
|
+
{{ book.updated | date: '%s' | date: '%s' | slice: 0, 10 | date: site.bonsai.date_format }}
|
49
|
+
</time>
|
50
|
+
</div>
|
51
|
+
</li>
|
52
|
+
{% endfor %}
|
53
|
+
</ul>
|
54
|
+
|
55
|
+
<h4 class="archive__title">
|
56
|
+
{{ site.bonsai.archive.section.entries }}
|
57
|
+
</h4>
|
58
|
+
<ul class="archive__list">
|
59
|
+
{% assign entry_items = site.entries | sort: "title" %}
|
60
|
+
{% for entry in entry_items %}
|
61
|
+
<li>
|
62
|
+
<div class="archive__item">
|
63
|
+
<span>
|
64
|
+
{% include btn_state.html states=entry.status %}
|
65
|
+
<a class="wiki-link" href="{{ entry.url | relative_url }}">{{ entry.title }}</a>
|
66
|
+
</span>
|
67
|
+
<time class="text--date dt-published">
|
68
|
+
{{ entry.updated | date: '%s' | date: '%s' | slice: 0, 10 | date: site.bonsai.date_format }}
|
69
|
+
</time>
|
70
|
+
</div>
|
71
|
+
</li>
|
72
|
+
{% endfor %}
|
73
|
+
</ul>
|
74
|
+
|
75
|
+
</div>
|
76
|
+
|
77
|
+
</div>
|
data/_layouts/base.html
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
---
|
2
|
+
---
|
3
|
+
<!doctype html>
|
4
|
+
<html>
|
5
|
+
<head>
|
6
|
+
|
7
|
+
<meta charset="utf-8">
|
8
|
+
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
9
|
+
|
10
|
+
<title>{{ page.title }}</title>
|
11
|
+
|
12
|
+
<link rel="icon" type="image/png">
|
13
|
+
<link rel="stylesheet" href="{{ '/assets/css/styles.css' | relative_url }}">
|
14
|
+
|
15
|
+
<script>
|
16
|
+
// from: https://mxb.dev/blog/color-theme-switcher/
|
17
|
+
// if there's a theme id in localstorage, use it on initia load
|
18
|
+
localStorage.getItem('theme-colors') &&
|
19
|
+
document.documentElement.setAttribute('data-theme', localStorage.getItem('theme-colors'))
|
20
|
+
</script>
|
21
|
+
|
22
|
+
<!-- search -->
|
23
|
+
<script src="https://unpkg.com/lunr/lunr.js"></script>
|
24
|
+
{% jekyll_graph %}
|
25
|
+
{% feed_meta %}
|
26
|
+
{% seo %}
|
27
|
+
|
28
|
+
</head>
|
29
|
+
<body>
|
30
|
+
|
31
|
+
<div id="side-bar" class="side-bar">
|
32
|
+
{% include site-nav.html %}
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div id="main" class="main">
|
36
|
+
<main class="main__content">
|
37
|
+
{% include anchor-headings.html html=content anchorClass="anchor-heading" %}
|
38
|
+
</main>
|
39
|
+
<footer class="main__footer">
|
40
|
+
{% assign about_page = site.pages | find_exp: "item", "item.name == 'about.md'" %}
|
41
|
+
{% if about_page %}
|
42
|
+
<a class="btn btn--small btn--brown" href="{{ '/about/' | relative_url }}" title="Go To About">{{ site.data.emoji.about }}</a>
|
43
|
+
{% endif %}
|
44
|
+
{% assign privacy_page = site.pages | find_exp: "item", "item.name == 'privacy.md'" %}
|
45
|
+
{% if privacy_page %}
|
46
|
+
<a class="btn btn--small btn--brown" href="{{ '/privacy/' | relative_url }}" title="Go To Privacy">{{ site.data.emoji.privacy }}</a>
|
47
|
+
{% endif %}
|
48
|
+
{% if site.social.connect.enabled %}
|
49
|
+
{% include connect.html %}
|
50
|
+
{% endif %}
|
51
|
+
</footer>
|
52
|
+
</div>
|
53
|
+
|
54
|
+
<label class="bonsai-burger-nav">
|
55
|
+
<input id="bonsai-burger-nav-checkbox" type="checkbox">
|
56
|
+
<img id="nav-bonsai" height="75" width="75" hidden></img>
|
57
|
+
<img id="nav-base" height="50" width="50"></img>
|
58
|
+
</label>
|
59
|
+
|
60
|
+
{% include hp-tooltip.html wrapperQuerySelector="content" %}
|
61
|
+
<!-- modules: https://stackoverflow.com/questions/58211880/uncaught-syntaxerror-cannot-use-import-statement-outside-a-module-when-import -->
|
62
|
+
<script type="module" src="{{ '/assets/js/scripts.js' | relative_url }}"></script>
|
63
|
+
{% include img/pencil-filter.svg %}
|
64
|
+
{% if site.ga_tracking != nil %}
|
65
|
+
{% include cookie-consent.html %}
|
66
|
+
{% endif %}
|
67
|
+
</body>
|
68
|
+
</html>
|
data/_layouts/book.html
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
---
|
2
|
+
layout: base
|
3
|
+
---
|
4
|
+
|
5
|
+
<article id="book"
|
6
|
+
class="book h-entry"
|
7
|
+
role="article"
|
8
|
+
itemscope
|
9
|
+
itemtype="http://schema.org/BlogPosting"
|
10
|
+
aria-labelledby="{{ page.title | slugify }}-title">
|
11
|
+
|
12
|
+
<div class="book__title hp-title">
|
13
|
+
<h1 class="p-name">{{ page.title }}</h1>
|
14
|
+
<h4>{{ page.subtitle }}</h4>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<section class="book__infobox">
|
18
|
+
<div class="infobox">
|
19
|
+
{% assign book_cover_img_src = site.baseurl | append: "/assets/img/books/" | append: page.slug | append: ".png" %}
|
20
|
+
<img src='{{ book_cover_img_src }}' class="infobox__img--cover">
|
21
|
+
{% include toc.html html=content wrap_class="toc" class="toc__list" item_class="toc__list-item" anchor_class="toc__anchor" %}
|
22
|
+
{% include dates.html updated=page.updated date=page.date %}
|
23
|
+
<div class="infobox__bar">
|
24
|
+
{% include btn_state.html states=page.status %}
|
25
|
+
{% if site.social.share.enabled %}
|
26
|
+
{% include share.html %}
|
27
|
+
{% endif %}
|
28
|
+
</div>
|
29
|
+
<div class="infobox__sem-tags p-category">
|
30
|
+
{% assign tags_attrs = page.attributes | link_type: "tags" %}
|
31
|
+
{% include tags.html tags_attrs=tags_attrs tags_fm=page.tags %}
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
</section>
|
35
|
+
|
36
|
+
<div class="book__content markdown hp-content e-content p-name">
|
37
|
+
{{ content }}
|
38
|
+
</div>
|
39
|
+
|
40
|
+
</article>
|
data/_layouts/entry.html
ADDED
@@ -0,0 +1,269 @@
|
|
1
|
+
---
|
2
|
+
layout: base
|
3
|
+
---
|
4
|
+
|
5
|
+
<article id="entry"
|
6
|
+
class="entry h-entry"
|
7
|
+
role="article"
|
8
|
+
itemscope
|
9
|
+
itemtype="http://schema.org/Article"
|
10
|
+
aria-labelledby="{{ page.title | slugify }}-title">
|
11
|
+
|
12
|
+
<header class="entry__header">
|
13
|
+
<label class="btn">
|
14
|
+
<input id="entry-head-checkbox" type="checkbox">
|
15
|
+
<span class="btn--brown" title="Toggle Lineage Entries">
|
16
|
+
{{ site.data.emoji.breadcrumbs }}
|
17
|
+
</span>
|
18
|
+
</label>
|
19
|
+
<div class="entry__header--fix-hrz-scroll hp-header">
|
20
|
+
<nav id="entry-head-nav" class="breadcrumb" role="navigation" aria-label="entry's ancestry">
|
21
|
+
<ol>
|
22
|
+
{% for ancestor in page.ancestors %}
|
23
|
+
{% assign ancestor_doc = site.entries | where: "url", ancestor | first %}
|
24
|
+
{% if ancestor_doc %}
|
25
|
+
<li>
|
26
|
+
<span title="Ancestor Entry">{% include img/bullet-ancestor.svg %}</span>
|
27
|
+
{% include btn_state.html states=ancestor_doc.status %}
|
28
|
+
<a class="wiki-link" href="{{ ancestor_doc.url | relative_url }}">{{ ancestor_doc.title }}</a>
|
29
|
+
</li>
|
30
|
+
{% else %}
|
31
|
+
<li>
|
32
|
+
<span title="Ancestor Entry">{% include img/bullet-ancestor.svg %}</span>
|
33
|
+
<span class="text--small text--no-point">{{ site.data.emoji.missing }} {{ ancestor }}</span>
|
34
|
+
</li>
|
35
|
+
{% endif %}
|
36
|
+
{% endfor %}
|
37
|
+
<li>
|
38
|
+
<span title="Ancestor Entry">{% include img/bullet-ancestor.svg %}</span>
|
39
|
+
{% include btn_state.html states=page.status %}
|
40
|
+
<span>{{ page.title }}</span>
|
41
|
+
</li>
|
42
|
+
</ol>
|
43
|
+
</nav>
|
44
|
+
</div>
|
45
|
+
</header>
|
46
|
+
|
47
|
+
<div class="entry__title hp-title">
|
48
|
+
<h1 class="p-name">{{ page.title }}</h1>
|
49
|
+
</div>
|
50
|
+
|
51
|
+
<div class="entry__infobox">
|
52
|
+
<div class="infobox">
|
53
|
+
{% if page.path == site.bonsai.entries.root_path %}
|
54
|
+
<img id="root-logo" class="infobox__img">
|
55
|
+
{% endif %}
|
56
|
+
{% include dates.html updated=page.updated date=page.date %}
|
57
|
+
<div class="infobox__bar">
|
58
|
+
<label class="btn">
|
59
|
+
<input id="entry-head-links-checkbox" type="checkbox">
|
60
|
+
<span class="btn--brown" title="Toggle Linked Entries">
|
61
|
+
{{ site.data.emoji.links }}
|
62
|
+
</span>
|
63
|
+
</label>
|
64
|
+
{% include btn_state.html states=page.status %}
|
65
|
+
{% if site.social.share.enabled %}
|
66
|
+
{% include share.html %}
|
67
|
+
{% endif %}
|
68
|
+
</div>
|
69
|
+
<div class="infobox__link-nav">
|
70
|
+
<nav id="attr-box-link-nav" class="link-map">
|
71
|
+
<span class="link-map__type" title="Attribute Entries">{% include img/bullet-net-web.svg %}</span>
|
72
|
+
{% if page.attributes.size == 0 %}
|
73
|
+
<p class="text--small text--center">No attribute entries.</p>
|
74
|
+
{% else %}
|
75
|
+
<div class="link-map__wrapper">
|
76
|
+
{% for attr in page.attributes %}
|
77
|
+
<div class="link-map__key">
|
78
|
+
{{ attr.type | capitalize }}
|
79
|
+
</div>
|
80
|
+
<div class="link-map__value">
|
81
|
+
<ul>
|
82
|
+
{% for doc_url in attr.urls %}
|
83
|
+
{% assign attr_doc = site.entries | where: "url", doc_url | first %}
|
84
|
+
<li>
|
85
|
+
{% include btn_state.html states=attr_doc.status %}
|
86
|
+
<a class="wiki-link" href="{{ attr_doc.url | relative_url }}">{{ attr_doc.title }}</a>
|
87
|
+
</li>
|
88
|
+
{% endfor %}
|
89
|
+
</ul>
|
90
|
+
</div>
|
91
|
+
{% endfor %}
|
92
|
+
</div>
|
93
|
+
{% endif %}
|
94
|
+
</nav>
|
95
|
+
</div>
|
96
|
+
</div>
|
97
|
+
</div>
|
98
|
+
|
99
|
+
<div class="entry__body markdown hp-content e-content p-name">
|
100
|
+
{{ content }}
|
101
|
+
</div>
|
102
|
+
|
103
|
+
<footer class="entry__footer">
|
104
|
+
<!-- linked entries -->
|
105
|
+
<div class="entry__section-wrapper">
|
106
|
+
<div> <!-- still need a nesting div for the checkbox -->
|
107
|
+
<label class="btn">
|
108
|
+
<input id="entry-foot-links-checkbox" type="checkbox">
|
109
|
+
<span class="btn--brown" title="Toggle Linked Entries">
|
110
|
+
{{ site.data.emoji.links }}
|
111
|
+
</span>
|
112
|
+
</label>
|
113
|
+
</div>
|
114
|
+
<nav id="entry-foot-links-nav" class="link-box" role="navigation" aria-label="linked entries">
|
115
|
+
<div class="link-box__partition">
|
116
|
+
<span class="link-box__type" title="Child Entries">
|
117
|
+
{% include img/bullet-tree.svg %}
|
118
|
+
</span>
|
119
|
+
{% if page.children.size == 0 %}
|
120
|
+
<p class="text--small text--center">No child entries.</p>
|
121
|
+
{% else %}
|
122
|
+
<ul>
|
123
|
+
{% for child in page.children %}
|
124
|
+
{% assign child_doc = site.entries | where: "url", child | first %}
|
125
|
+
{% if child_doc %}
|
126
|
+
<li>
|
127
|
+
{% include btn_state.html states=child_doc.status %}
|
128
|
+
<a class="wiki-link {% if child_doc.url == '' %}text--small text--no-point{% endif %}" href="{{ child_doc.url | relative_url }}">
|
129
|
+
{{ child_doc.title }}
|
130
|
+
</a>
|
131
|
+
</li>
|
132
|
+
{% else %}
|
133
|
+
<li>
|
134
|
+
<span class="text--small text--no-point">{{ site.data.emoji.missing }} {{ child }}</span>
|
135
|
+
</li>
|
136
|
+
{% endif %}
|
137
|
+
{% endfor %}
|
138
|
+
</ul>
|
139
|
+
{% endif %}
|
140
|
+
</div>
|
141
|
+
<div class="link-box__partition">
|
142
|
+
<span class="link-box__type" title="Attributed and Backlink Entries">
|
143
|
+
{% include img/bullet-net-web.svg %}
|
144
|
+
</span>
|
145
|
+
{% assign entry_attrd = page.attributed | doc_type: "entries" %}
|
146
|
+
{% assign entry_blinks = page.backlinks | doc_type: "entries" %}
|
147
|
+
{% if entry_attrd.size == 0 and entry_blinks.size == 0 %}
|
148
|
+
<p class="text--small text--center">No attributed {% if site.bonsai.entries.backlinks %}or backlinked{% endif %} entries.</p>
|
149
|
+
{% else %}
|
150
|
+
<!-- attributed -->
|
151
|
+
<ul>
|
152
|
+
{% for attr in entry_attrd %}
|
153
|
+
{% for attr_url in attr.urls %}
|
154
|
+
{% assign attr_doc = site.entries | where: "url", attr_url | first %}
|
155
|
+
{% if attr_doc %}
|
156
|
+
<li>
|
157
|
+
{% include btn_state.html states=attr_doc.status %}
|
158
|
+
<a class="wiki-link {% if attr_doc.url == '' %}text--small text--no-point{% endif %}" href="{{ attr_doc.url | relative_url }}" title="{{ attr.type }}">
|
159
|
+
{{ attr_doc.title }}
|
160
|
+
</a>
|
161
|
+
</li>
|
162
|
+
{% else %}
|
163
|
+
<li>
|
164
|
+
<span class="text--small text--no-point">{{ site.data.emoji.missing }} {{ attr_url }}</span>
|
165
|
+
</li>
|
166
|
+
{% endif %}
|
167
|
+
{% endfor %}
|
168
|
+
{% endfor %}
|
169
|
+
</ul>
|
170
|
+
{% if site.bonsai.entries.backlinks %}
|
171
|
+
<!-- backlinks -->
|
172
|
+
<ul>
|
173
|
+
{% for blink in entry_blinks %}
|
174
|
+
{% assign blink_doc = site.entries | where: "url", blink.url | first %}
|
175
|
+
{% if blink_doc %}
|
176
|
+
<li>
|
177
|
+
{% include btn_state.html states=blink_doc.status %}
|
178
|
+
<a class="wiki-link {% if blink_doc.url == '' %}text--small text--no-point{% endif %}" href="{{ blink_doc.url | relative_url }}" title="{% if blink.type %}{{ blink.type }}{% endif %}">
|
179
|
+
{{ blink_doc.title }}
|
180
|
+
</a>
|
181
|
+
</li>
|
182
|
+
{% else %}
|
183
|
+
<li>
|
184
|
+
<span class="text--small text--no-point">{{ site.data.emoji.missing }} {{ blink.url }}</span>
|
185
|
+
</li>
|
186
|
+
{% endif %}
|
187
|
+
{% endfor %}
|
188
|
+
</ul>
|
189
|
+
{% endif %}
|
190
|
+
{% endif %}
|
191
|
+
</div>
|
192
|
+
</nav>
|
193
|
+
</div>
|
194
|
+
<!-- tagged docs -->
|
195
|
+
<div class="entry__section-wrapper">
|
196
|
+
<div> <!-- still need a nesting div for the checkbox -->
|
197
|
+
<label class="btn">
|
198
|
+
<input id="entry-foot-posts-checkbox" type="checkbox">
|
199
|
+
<span class="btn--purple" title="Toggle Tagged Items">
|
200
|
+
{{ site.data.emoji.tags }}
|
201
|
+
</span>
|
202
|
+
</label>
|
203
|
+
</div>
|
204
|
+
<nav id="entry-foot-posts-nav" class="link-box" role="navigation" aria-label="tagged">
|
205
|
+
<div class="link-box__partition">
|
206
|
+
|
207
|
+
<!-- capture tagged linked_docs here -->
|
208
|
+
{% capture linked_docs %}
|
209
|
+
<!-- track number of linked docs -->
|
210
|
+
{% assign num_linked_docs = 0 %}
|
211
|
+
<!-- tagged posts/books -->
|
212
|
+
<ul>
|
213
|
+
{% for doc in site.documents %}
|
214
|
+
{% if doc.tags contains page.namespace %}
|
215
|
+
{% assign num_linked_docs = num_linked_docs | plus: 1 %}
|
216
|
+
<li>
|
217
|
+
{% include btn_state.html states=doc.status %}
|
218
|
+
<a class="wiki-link" href="{{ doc.url | relative_url }}">{{ doc.title }}</a>
|
219
|
+
</li>
|
220
|
+
{% endif %}
|
221
|
+
{% endfor %}
|
222
|
+
</ul>
|
223
|
+
<!-- 'tags' attributed posts/books -->
|
224
|
+
<ul>
|
225
|
+
{% assign post_attrds = page.attributed | doc_type: "posts" %}
|
226
|
+
{% assign book_attrds = page.attributed | doc_type: "books" %}
|
227
|
+
{% assign pb_attrds = post_attrds | concat: book_attrds %}
|
228
|
+
{% assign tag_attrds = pb_attrds | link_type: "tags" %}
|
229
|
+
{% for tag_attrd in tag_attrds %}
|
230
|
+
{% for url in tag_attrd.urls %}
|
231
|
+
{% assign num_linked_docs = num_linked_docs | plus: 1 %}
|
232
|
+
{% assign doc = site.documents | where: "url", url | first %}
|
233
|
+
<li>
|
234
|
+
{% include btn_state.html states=doc.status %}
|
235
|
+
<a class="wiki-link" href="{{ doc.url | relative_url }}">{{ doc.title }}</a>
|
236
|
+
</li>
|
237
|
+
{% endfor %}
|
238
|
+
{% endfor %}
|
239
|
+
</ul>
|
240
|
+
{% if site.bonsai.entries.backlinks %}
|
241
|
+
<!-- backlinked posts/books -->
|
242
|
+
<ul>
|
243
|
+
{% assign post_blinks = page.backlinks | doc_type: "posts" %}
|
244
|
+
{% assign book_blinks = page.backlinks | doc_type: "books" %}
|
245
|
+
{% assign pb_blinks = post_blinks | concat: book_blinks %}
|
246
|
+
{% for blink in pb_blinks %}
|
247
|
+
{% assign num_linked_docs = num_linked_docs | plus: 1 %}
|
248
|
+
{% assign doc = site.documents | where: "url", blink.url | first %}
|
249
|
+
<li>
|
250
|
+
{% include btn_state.html states=doc.status %}
|
251
|
+
<a class="wiki-link" href="{{ doc.url | relative_url }}">{{ doc.title }}</a>
|
252
|
+
</li>
|
253
|
+
{% endfor %}
|
254
|
+
</ul>
|
255
|
+
{% endif %}
|
256
|
+
{% endcapture %}
|
257
|
+
|
258
|
+
<!-- render linked_docs here (the if statement is why we have to do this) -->
|
259
|
+
{% if num_linked_docs == 0 %}
|
260
|
+
<p class="text--small">No linked posts or books.</p>
|
261
|
+
{% else %}
|
262
|
+
{{ linked_docs }}
|
263
|
+
{% endif %}
|
264
|
+
</div>
|
265
|
+
</nav>
|
266
|
+
</div>
|
267
|
+
</footer>
|
268
|
+
|
269
|
+
</article>
|