jekyll-notes 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +83 -0
- data/_includes/breadcrumbs.html +13 -0
- data/_includes/comments.html +81 -0
- data/_includes/footer.html +35 -0
- data/_includes/head.html +18 -0
- data/_includes/header.html +38 -0
- data/_includes/scripts.html +5 -0
- data/_includes/sidebar.html +24 -0
- data/_includes/sidebar.html.bak +34 -0
- data/_includes/social.html +14 -0
- data/_includes/toc.html +96 -0
- data/_layouts/chapter.html +14 -0
- data/_layouts/default.html +29 -0
- data/_layouts/index.html +20 -0
- data/_sass/minima/_base.scss +254 -0
- data/_sass/minima/_layout.scss +255 -0
- data/_sass/minima/_syntax-highlighting.scss +71 -0
- data/_sass/minima.scss +51 -0
- data/_sass/style.scss +31 -0
- data/_sass/variables.scss +17 -0
- data/assets/css/main.scss +145 -0
- data/assets/css/minima.scss +8 -0
- data/assets/js/CollapsibleLists.js +2 -0
- data/assets/js/GenerateMenu.js +51 -0
- data/assets/js/GenerateMenu.js.save +10 -0
- data/assets/js/GenerateMenu.js.save.1 +51 -0
- data/assets/js/SearchBar.js +20 -0
- data/assets/minima-social-icons.svg +50 -0
- metadata +143 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f33e7721278686ce7d42c10c1b8fe0e91b3d92e6bf9308a1002ba166d1aab674
|
4
|
+
data.tar.gz: 685cc535b8829f629c696ac12b57cbc7e3ecd52bcee0aa700981e0aa59508e07
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d2612ec43fc19d6f2222e2d7723278ee9f43410fd2ef46ea69a1d911a0cbc4b5bb6fdd0191a364444de76590494ec8597391ce7b1abb8ffa75cda7998331a620
|
7
|
+
data.tar.gz: 1be3550ed06146d0bb29b55e09513439162e2e35ba507c4d7160317ef104b4754175d025a2e363fa77751b32a687b5b7903b211fdea75ed94a9489477bf15c03
|
data/README.md
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
## Jekyll-notes
|
2
|
+
|
3
|
+
Jekyll-notes is a Jekyll theme for managing notes.
|
4
|
+
Simply create _chapters folder and populate it with subfolders and notes.
|
5
|
+
The .md files with "layout: default" would appear at Notes page submenu.
|
6
|
+
|
7
|
+
## Screenshot
|
8
|
+
|
9
|
+
<img src="screenshot-menu.png" alt="drawing" width="350"/>
|
10
|
+
|
11
|
+
|
12
|
+
## Installing
|
13
|
+
|
14
|
+
1. Edit Gemfile
|
15
|
+
```yaml
|
16
|
+
group :jekyll_plugins do
|
17
|
+
gem "jekyll-remote-theme"
|
18
|
+
end
|
19
|
+
```
|
20
|
+
|
21
|
+
2. Edit _config.yml
|
22
|
+
```yaml
|
23
|
+
plugins:
|
24
|
+
- jekyll-remote-theme
|
25
|
+
|
26
|
+
remote_theme: alexz005/jekyll-notes
|
27
|
+
|
28
|
+
collections:
|
29
|
+
sections:
|
30
|
+
output: false
|
31
|
+
chapters:
|
32
|
+
output: true
|
33
|
+
```
|
34
|
+
|
35
|
+
3. Create _chapters folder and make .md files inside.
|
36
|
+
|
37
|
+
## Debugging locally
|
38
|
+
|
39
|
+
Gemfile
|
40
|
+
```yaml
|
41
|
+
group :jekyll_plugins do
|
42
|
+
gem "jekyll-feed", "~> 0.12"
|
43
|
+
gem "jekyll-notes", :path => "../../jekyll-notes/"
|
44
|
+
end
|
45
|
+
```
|
46
|
+
|
47
|
+
_config.yml
|
48
|
+
```yaml
|
49
|
+
theme: jekyll-notes
|
50
|
+
collections:
|
51
|
+
sections:
|
52
|
+
output: false
|
53
|
+
chapters:
|
54
|
+
output: true
|
55
|
+
```
|
56
|
+
|
57
|
+
## Advantages
|
58
|
+
|
59
|
+
Contents are stored in _chapters folder and any subfolder and its files are automatically seen in submenu. The notes have to mantain yaml structure though, including three dashes and layout: default.
|
60
|
+
|
61
|
+
Menu automatically generates with subfolders, isn’t it neat?
|
62
|
+
|
63
|
+
|
64
|
+
## Building and testing locally
|
65
|
+
|
66
|
+
This site is using Jekyll/SCSS
|
67
|
+
bundle exec jekyll serve --port 8080
|
68
|
+
|
69
|
+
## Used sources
|
70
|
+
|
71
|
+
Following were used to build this theme:
|
72
|
+
|
73
|
+
1. Parts of theme [Milidocs](http://alexander.heimbu.ch/millidocs/) by Alexander Heimbuch
|
74
|
+
2. Collapsable list Javascript code from [here](http://code.iamkate.com/javascript/collapsible-lists/) by Kate Morley
|
75
|
+
3. JavaScript code to generate menu from [here](https://stackoverflow.com/questions/26645220/build-nested-folder-structure-from-path-strings/26652662)
|
76
|
+
4. JavaScript code to search through the list from [here](https://www.w3schools.com/howto/howto_js_filter_lists.asp)
|
77
|
+
5. Parts of [startbootstrap](https://github.com/BlackrockDigital/startbootstrap-landing-page)
|
78
|
+
|
79
|
+
## License
|
80
|
+
|
81
|
+
MIT license, except any copied code or parts used above.
|
82
|
+
|
83
|
+
Have you found it useful? Give me a star or [fork](/fork) this!
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<div id="breadcrumbs">
|
2
|
+
{% assign crumbs = page.url | remove:'/index.html' | split: '/' %}
|
3
|
+
<a href="/">Home</a>
|
4
|
+
{% for crumb in crumbs offset: 1 %}
|
5
|
+
{% if forloop.last %}
|
6
|
+
/ {{ page.title }}
|
7
|
+
{% else %}
|
8
|
+
/ <a href="{% assign crumb_limit = forloop.index | plus: 1 %}{% for crumb in crumbs limit: crumb_limit %}{{ crumb | append: '/' | replace:'without-plugin/','without-plugins/' }}{% endfor %}">{{ crumb | replace:'-',' ' | remove:'.html' | capitalize }}</a>
|
9
|
+
{% endif %}
|
10
|
+
{% endfor %}
|
11
|
+
<br />
|
12
|
+
<div align="right"><a href="https://github.com/AlexZ005/alexz005.github.io/edit/master/{{page.url | remove:'.html' | append:'.md' | remove_first: "/" | prepend: "_"}}">Edit this page</a></div>
|
13
|
+
</div>
|
@@ -0,0 +1,81 @@
|
|
1
|
+
{% if page.comment_issue_id %}
|
2
|
+
<script type="text/javascript">
|
3
|
+
|
4
|
+
document.querySelector("{{ include.element }}").innerHTML = document.querySelector("{{ include.element }}").innerHTML + "<div id='comments'></div>";
|
5
|
+
document.getElementById("comments").innerHTML = "<h3>Comments</h3><p>You can <a href='https://github.com/{{ include.github_account }}/issues/{{page.comment_issue_id}}' target='_blank'>view the comments</a> on GitHub.</p>";
|
6
|
+
|
7
|
+
function reloadComments() {
|
8
|
+
var elements = document.querySelectorAll('.comment');
|
9
|
+
Array.prototype.forEach.call(elements, function(el, i){
|
10
|
+
el.remove();
|
11
|
+
});
|
12
|
+
$.ajax("https://api.github.com/repos/{{ include.github_account }}/issues/{{page.comment_issue_id}}/comments?per_page=100", {
|
13
|
+
headers: {Accept: "application/vnd.github.full+json"},
|
14
|
+
dataType: "json",
|
15
|
+
success: function(msg){
|
16
|
+
localStorage.setItem('comments_{{ include.github_account }}_{{page.comment_issue_id}}',JSON.stringify(msg));
|
17
|
+
loadComments(msg);
|
18
|
+
},
|
19
|
+
error: function() {
|
20
|
+
document.getElementById("comments").innerHTML = "<h3>Comments</h3><p>You can <a href='https://github.com/{{ include.github_account }}/issues/{{page.comment_issue_id}}' target='_blank'>view the comments</a> on GitHub. The comments cannot be shown inline because we have hit the rate limit of Github.</p>";
|
21
|
+
}
|
22
|
+
});
|
23
|
+
return false;
|
24
|
+
}
|
25
|
+
function loadComments(data) {
|
26
|
+
$("#comments").html("<h3>Comments</h3><p>You can <a href='https://github.com/{{ include.github_account }}/issues/{{page.comment_issue_id}}' target='_blank'>leave a comment</a> through GitHub, or <a onclick=' reloadComments();' style='cursor: pointer;'>refresh</a> the comments below.</p>");
|
27
|
+
for (var i=0; i<data.length; i++) {
|
28
|
+
var cuser = data[i].user.login;
|
29
|
+
var cuserlink = "https://www.github.com/" + data[i].user.login;
|
30
|
+
var clink = "https://github.com/{{ include.github_account }}/issues/{{page.comment_issue_id}}#issuecomment-" + data[i].url.substring(data[i].url.lastIndexOf("/")+1);
|
31
|
+
var cbody = data[i].body_html;
|
32
|
+
{% if include.require_cookie_consent == 'true' %}
|
33
|
+
if(readCookie('cookie-notice-dismissed')=='true') {
|
34
|
+
var cavatarlink = data[i].user.avatar_url;
|
35
|
+
} else {
|
36
|
+
var cavatarlink = '/img/emptyavatar.png';
|
37
|
+
cbody = cbody.replace(/<img src=/g,"<img data-src=");
|
38
|
+
}
|
39
|
+
{% else %}
|
40
|
+
var cavatarlink = data[i].user.avatar_url;
|
41
|
+
{% endif %}
|
42
|
+
var cdate = data[i].created_at;
|
43
|
+
document.getElementById("comments").innerHTML = document.getElementById("comments").innerHTML + "<div class='comment'><div class='commentgravatar'>" + '<img src="' + cavatarlink + '" alt="' + cuser + '">' + "</div><div class='commentheader'><a class='commentuser' href=\""+ cuserlink + "\">" + cuser + "</a> commented <a class='commentdate' href=\"" + clink + "\">on " + cdate.substring(0, 10) + "</a></div><div class='commentbody'>" + cbody + "</div></div>";
|
44
|
+
$('img[data-src]').replaceWith( "[Image blocked] " );
|
45
|
+
}
|
46
|
+
}
|
47
|
+
var data = localStorage.getItem('comments_{{ include.github_account }}_{{page.comment_issue_id}}');
|
48
|
+
if(data) {
|
49
|
+
loadComments(JSON.parse(data));
|
50
|
+
} else {
|
51
|
+
{% if include.require_cookie_consent == 'true' %}
|
52
|
+
if(readCookie('cookie-notice-dismissed')=='true') reloadComments();
|
53
|
+
else document.getElementById("comments").innerHTML = "<h3>Comments</h3><p>You can <a href='https://github.com/{{ include.github_account }}/issues/{{page.comment_issue_id}}' target='_blank'>view the comments</a> on GitHub (approve third party scripts to view them inline).</p>";
|
54
|
+
{% else %}
|
55
|
+
reloadComments();
|
56
|
+
{% endif %}
|
57
|
+
}
|
58
|
+
</script>
|
59
|
+
<style>
|
60
|
+
.comment {padding: 5px 0 15px;}
|
61
|
+
.comment P:last-child {margin-bottom: 0;}
|
62
|
+
.commentgravatar {position: absolute; width: 40px; border: 1px solid #e5e5e5;}
|
63
|
+
.commentheader, .commentbody {padding: 5px 10px; margin-left: 55px; border: 1px solid #e5e5e5; background: white;}
|
64
|
+
.commentheader {position: relative; background: #f4f4f4; border-bottom: 0;}
|
65
|
+
.commentbody {padding: 10px 10px 13px;}
|
66
|
+
.commentheader a {color: #777777;}
|
67
|
+
.commentheader::before {
|
68
|
+
position: absolute;
|
69
|
+
content: "";
|
70
|
+
display: block;
|
71
|
+
width: 9px;
|
72
|
+
height: 9px;
|
73
|
+
background: #f4f4f4;
|
74
|
+
transform: rotate(-45deg);
|
75
|
+
left: 0;
|
76
|
+
margin-left: -4px;
|
77
|
+
margin-top: 4px;
|
78
|
+
box-shadow: -1px -1px 0px 0px rgba(0, 0, 0, 0.15);
|
79
|
+
}
|
80
|
+
</style>
|
81
|
+
{% endif %}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<footer class="site-footer h-card">
|
2
|
+
<data class="u-url" href="{{ "/" | relative_url }}"></data>
|
3
|
+
|
4
|
+
<div class="wrapper">
|
5
|
+
|
6
|
+
<h2 class="footer-heading">{{ site.title | escape }}</h2>
|
7
|
+
|
8
|
+
<div class="footer-col-wrapper">
|
9
|
+
<div class="footer-col footer-col-1">
|
10
|
+
<ul class="contact-list">
|
11
|
+
<li class="p-name">
|
12
|
+
{%- if site.author -%}
|
13
|
+
{{ site.author | escape }}
|
14
|
+
{%- else -%}
|
15
|
+
{{ site.title | escape }}
|
16
|
+
{%- endif -%}
|
17
|
+
</li>
|
18
|
+
{%- if site.email -%}
|
19
|
+
<li><a class="u-email" href="mailto:{{ site.email }}">{{ site.email }}</a></li>
|
20
|
+
{%- endif -%}
|
21
|
+
</ul>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<div class="footer-col footer-col-2">
|
25
|
+
{%- include social.html -%}
|
26
|
+
</div>
|
27
|
+
|
28
|
+
<div class="footer-col footer-col-3">
|
29
|
+
<p>{{- site.description | escape -}}</p>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
|
33
|
+
</div>
|
34
|
+
|
35
|
+
</footer>
|
data/_includes/head.html
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
<head>
|
2
|
+
<meta charset="utf-8">
|
3
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
4
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
5
|
+
{%- seo -%}
|
6
|
+
{%- if page.url == '/' -%}}
|
7
|
+
<link rel="stylesheet" href="{{ "/assets/css/minima.css" | relative_url }}">
|
8
|
+
{%- endif -%}
|
9
|
+
{%- if page.url != '/' -%}}
|
10
|
+
<link rel="stylesheet" href="{{ "/assets/css/main.css" | relative_url }}">
|
11
|
+
{%- endif -%}
|
12
|
+
<link rel="stylesheet" href="{{ "https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" | relative_url }}">
|
13
|
+
{%- feed_meta -%}
|
14
|
+
{%- if jekyll.environment == 'production' and site.google_analytics -%}
|
15
|
+
{%- include google-analytics.html -%}
|
16
|
+
{%- endif -%}
|
17
|
+
|
18
|
+
</head>
|
@@ -0,0 +1,38 @@
|
|
1
|
+
<header class="site-header">
|
2
|
+
|
3
|
+
<!-- Navigation -->
|
4
|
+
|
5
|
+
|
6
|
+
<div class="wrapper">
|
7
|
+
{%- assign default_paths = site.pages | map: "path" -%}
|
8
|
+
{%- assign page_paths = site.header_pages | default: default_paths -%}
|
9
|
+
{%- assign titles_size = site.pages | map: 'title' | join: '' | size -%}
|
10
|
+
<nav class="navbar navbar-dark bg-dark fixed-top site-nav">
|
11
|
+
<div class="">
|
12
|
+
<a class="navbar-brand" href="#">{{ site.title | escape }}</a>
|
13
|
+
</div>
|
14
|
+
{%- if titles_size > 0 -%}
|
15
|
+
|
16
|
+
<input type="checkbox" id="nav-trigger" class="nav-trigger" />
|
17
|
+
<label for="nav-trigger" class="bg-white">
|
18
|
+
<span class="menu-icon">
|
19
|
+
<svg viewBox="0 0 18 15" width="18px" height="15px">
|
20
|
+
<path d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.032C17.335,0,18,0.665,18,1.484L18,1.484z M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.032C17.335,6.031,18,6.696,18,7.516L18,7.516z M18,13.516C18,14.335,17.335,15,16.516,15H1.484 C0.665,15,0,14.335,0,13.516l0,0c0-0.82,0.665-1.483,1.484-1.483h15.032C17.335,12.031,18,12.695,18,13.516L18,13.516z"/>
|
21
|
+
</svg>
|
22
|
+
</span>
|
23
|
+
</label>
|
24
|
+
|
25
|
+
<div class="trigger">
|
26
|
+
{%- for path in page_paths -%}
|
27
|
+
{%- assign my_page = site.pages | where: "path", path | first -%}
|
28
|
+
{%- if my_page.title -%}
|
29
|
+
<a class="btn btn-dark" href="{{ my_page.url | relative_url }}">{{ my_page.title | escape }}</a>
|
30
|
+
{%- endif -%}
|
31
|
+
{%- endfor -%}
|
32
|
+
</div>
|
33
|
+
|
34
|
+
</div>
|
35
|
+
|
36
|
+
{%- endif -%}
|
37
|
+
</nav>
|
38
|
+
</header>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<script src="{{ "https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js" | relative_url }}"></script>
|
2
|
+
<script src="{{ "/assets/js/GenerateMenu.js" | relative_url }}"></script>
|
3
|
+
<script src="{{ "/assets/js/CollapsibleLists.js" | relative_url }}"></script>
|
4
|
+
<script src="{{ "/assets/js/SearchBar.js" | relative_url }}"></script>
|
5
|
+
|
@@ -0,0 +1,24 @@
|
|
1
|
+
|
2
|
+
<div class="sidebar">
|
3
|
+
<div class="sidebar-main">
|
4
|
+
|
5
|
+
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names..">
|
6
|
+
|
7
|
+
|
8
|
+
<h1>Chapters</h1>
|
9
|
+
|
10
|
+
<button onclick="CollapsibleLists.apply()">Collapse/Expand</button>
|
11
|
+
|
12
|
+
<ul class="posts" id="menu">
|
13
|
+
{% for chapter in site.chapters %}
|
14
|
+
{% if chapter.path != "_chapters/index.html" %}
|
15
|
+
{{ chapter.path }}
|
16
|
+
{% endif %}
|
17
|
+
{% endfor %}
|
18
|
+
</ul>
|
19
|
+
|
20
|
+
<div id="renderList">
|
21
|
+
</div>
|
22
|
+
|
23
|
+
</div>
|
24
|
+
</div>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
|
2
|
+
<div class="sidebar">
|
3
|
+
<div class="sidebar-main">
|
4
|
+
|
5
|
+
<h1>Chapters</h1>
|
6
|
+
<button onclick="CollapsibleLists.apply()">Collapse/Expand</button>
|
7
|
+
|
8
|
+
<ul class="posts">
|
9
|
+
{% for chapter in site.chapters %}
|
10
|
+
<li>
|
11
|
+
<a class="post-link" href="{{ chapter.url | prepend: site.baseurl }}">{{ chapter.path }}</a>
|
12
|
+
</li>
|
13
|
+
{% endfor %}
|
14
|
+
</ul>
|
15
|
+
|
16
|
+
<ul class="collapsibleList" id="renderList">
|
17
|
+
<li>
|
18
|
+
Parent item
|
19
|
+
<ul>
|
20
|
+
<li>Child item</li>
|
21
|
+
<li>Child item</li>
|
22
|
+
</ul>
|
23
|
+
</li>
|
24
|
+
<li>
|
25
|
+
Parent item
|
26
|
+
<ul>
|
27
|
+
<li>Child item</li>
|
28
|
+
<li>Child item</li>
|
29
|
+
</ul>
|
30
|
+
</li>
|
31
|
+
</ul>
|
32
|
+
|
33
|
+
</div>
|
34
|
+
</div>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<ul class="social-media-list">
|
2
|
+
{%- if site.dribbble_username -%}<li><a href="https://dribbble.com/{{ site.dribbble_username| cgi_escape | escape }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/minima-social-icons.svg#dribbble' | relative_url }}"></use></svg> <span class="username">{{ site.dribbble_username| escape }}</span></a></li>{%- endif -%}
|
3
|
+
{%- if site.facebook_username -%}<li><a href="https://www.facebook.com/{{ site.facebook_username| cgi_escape | escape }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/minima-social-icons.svg#facebook' | relative_url }}"></use></svg> <span class="username">{{ site.facebook_username| escape }}</span></a></li>{%- endif -%}
|
4
|
+
{%- if site.flickr_username -%}<li><a href="https://www.flickr.com/photos/{{ site.flickr_username| cgi_escape | escape }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/minima-social-icons.svg#flickr' | relative_url }}"></use></svg> <span class="username">{{ site.flickr_username| escape }}</span></a></li>{%- endif -%}
|
5
|
+
{%- if site.github_username -%}<li><a href="https://github.com/{{ site.github_username| cgi_escape | escape }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/minima-social-icons.svg#github' | relative_url }}"></use></svg> <span class="username">{{ site.github_username| escape }}</span></a></li>{%- endif -%}
|
6
|
+
{%- if site.instagram_username -%}<li><a href="https://instagram.com/{{ site.instagram_username| cgi_escape | escape }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/minima-social-icons.svg#instagram' | relative_url }}"></use></svg> <span class="username">{{ site.instagram_username| escape }}</span></a></li>{%- endif -%}
|
7
|
+
{%- if site.linkedin_username -%}<li><a href="https://www.linkedin.com/in/{{ site.linkedin_username| cgi_escape | escape }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/minima-social-icons.svg#linkedin' | relative_url }}"></use></svg> <span class="username">{{ site.linkedin_username| escape }}</span></a></li>{%- endif -%}
|
8
|
+
{%- if site.pinterest_username -%}<li><a href="https://www.pinterest.com/{{ site.pinterest_username| cgi_escape | escape }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/minima-social-icons.svg#pinterest' | relative_url }}"></use></svg> <span class="username">{{ site.pinterest_username| escape }}</span></a></li>{%- endif -%}
|
9
|
+
{%- for mst in site.mastodon -%}{%- if mst.username and mst.instance -%}<li><a href="https://{{ mst.instance| cgi_escape | escape}}/@{{mst.username}}"><svg class="svg-icon"><use xlink:href="{{ '/assets/minima-social-icons.svg#mastodon' | relative_url }}"></use></svg> <span class="username">{{ mst.username|escape }}</span></a></li>{%- endif -%}{%- endfor -%}
|
10
|
+
{%- if site.twitter_username -%}<li><a href="https://www.twitter.com/{{ site.twitter_username| cgi_escape | escape }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/minima-social-icons.svg#twitter' | relative_url }}"></use></svg> <span class="username">{{ site.twitter_username| escape }}</span></a></li>{%- endif -%}
|
11
|
+
{%- if site.youtube_username -%}<li><a href="https://youtube.com/{{ site.youtube_username| cgi_escape | escape }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/minima-social-icons.svg#youtube' | relative_url }}"></use></svg> <span class="username">{{ site.youtube_username| escape }}</span></a></li>{%- endif -%}
|
12
|
+
{%- if site.googleplus_username -%}<li><a href="https://plus.google.com/{{ site.googleplus_username| escape }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/minima-social-icons.svg#googleplus' | relative_url }}"></use></svg> <span class="username">{{ site.googleplus_username| escape }}</span></a></li>{%- endif -%}
|
13
|
+
{%- if site.rss -%}<li><a href="{{ 'feed.xml' | relative_url }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/minima-social-icons.svg#rss' | relative_url }}"></use></svg> <span>{{ site.rss | escape }}</span></a></li>{%- endif -%}
|
14
|
+
</ul>
|
data/_includes/toc.html
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
{% capture tocWorkspace %}
|
2
|
+
{% comment %}
|
3
|
+
Version 1.0.10
|
4
|
+
https://github.com/allejo/jekyll-toc
|
5
|
+
|
6
|
+
"...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe
|
7
|
+
|
8
|
+
Usage:
|
9
|
+
{% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %}
|
10
|
+
|
11
|
+
Parameters:
|
12
|
+
* html (string) - the HTML of compiled markdown generated by kramdown in Jekyll
|
13
|
+
|
14
|
+
Optional Parameters:
|
15
|
+
* sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC
|
16
|
+
* class (string) : '' - a CSS class assigned to the TOC
|
17
|
+
* id (string) : '' - an ID to assigned to the TOC
|
18
|
+
* h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored
|
19
|
+
* h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored
|
20
|
+
* ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list
|
21
|
+
* item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level
|
22
|
+
* baseurl (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content
|
23
|
+
* anchor_class (string) : '' - add custom class(es) for each anchor element
|
24
|
+
|
25
|
+
Output:
|
26
|
+
An ordered or unordered list representing the table of contents of a markdown block. This snippet will only
|
27
|
+
generate the table of contents and will NOT output the markdown given to it
|
28
|
+
{% endcomment %}
|
29
|
+
|
30
|
+
{% capture my_toc %}{% endcapture %}
|
31
|
+
{% assign orderedList = include.ordered | default: false %}
|
32
|
+
{% assign minHeader = include.h_min | default: 1 %}
|
33
|
+
{% assign maxHeader = include.h_max | default: 6 %}
|
34
|
+
{% assign nodes = include.html | split: '<h' %}
|
35
|
+
{% assign firstHeader = true %}
|
36
|
+
|
37
|
+
{% capture listModifier %}{% if orderedList %}1.{% else %}-{% endif %}{% endcapture %}
|
38
|
+
|
39
|
+
{% for node in nodes %}
|
40
|
+
{% if node == "" %}
|
41
|
+
{% continue %}
|
42
|
+
{% endif %}
|
43
|
+
|
44
|
+
{% assign headerLevel = node | replace: '"', '' | slice: 0, 1 | times: 1 %}
|
45
|
+
|
46
|
+
{% if headerLevel < minHeader or headerLevel > maxHeader %}
|
47
|
+
{% continue %}
|
48
|
+
{% endif %}
|
49
|
+
|
50
|
+
{% if firstHeader %}
|
51
|
+
{% assign firstHeader = false %}
|
52
|
+
{% assign minHeader = headerLevel %}
|
53
|
+
{% endif %}
|
54
|
+
|
55
|
+
{% assign indentAmount = headerLevel | minus: minHeader %}
|
56
|
+
{% assign _workspace = node | split: '</h' %}
|
57
|
+
|
58
|
+
{% assign _idWorkspace = _workspace[0] | split: 'id="' %}
|
59
|
+
{% assign _idWorkspace = _idWorkspace[1] | split: '"' %}
|
60
|
+
{% assign html_id = _idWorkspace[0] %}
|
61
|
+
|
62
|
+
{% assign _classWorkspace = _workspace[0] | split: 'class="' %}
|
63
|
+
{% assign _classWorkspace = _classWorkspace[1] | split: '"' %}
|
64
|
+
{% assign html_class = _classWorkspace[0] %}
|
65
|
+
|
66
|
+
{% if html_class contains "no_toc" %}
|
67
|
+
{% continue %}
|
68
|
+
{% endif %}
|
69
|
+
|
70
|
+
{% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %}
|
71
|
+
{% assign header = _workspace[0] | replace: _hAttrToStrip, '' %}
|
72
|
+
|
73
|
+
{% assign space = '' %}
|
74
|
+
{% for i in (1..indentAmount) %}
|
75
|
+
{% assign space = space | prepend: ' ' %}
|
76
|
+
{% endfor %}
|
77
|
+
|
78
|
+
{% if include.item_class and include.item_class != blank %}
|
79
|
+
{% capture listItemClass %}{:.{{ include.item_class | replace: '%level%', headerLevel }}}{% endcapture %}
|
80
|
+
{% endif %}
|
81
|
+
|
82
|
+
{% capture heading_body %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %}
|
83
|
+
{% capture my_toc %}{{ my_toc }}
|
84
|
+
{{ space }}{{ listModifier }} {{ listItemClass }} [{{ heading_body | replace: "|", "\|" }}]({% if include.baseurl %}{{ include.baseurl }}{% endif %}#{{ html_id }}){% if include.anchor_class %}{:.{{ include.anchor_class }}}{% endif %}{% endcapture %}
|
85
|
+
{% endfor %}
|
86
|
+
|
87
|
+
{% if include.class and include.class != blank %}
|
88
|
+
{% capture my_toc %}{:.{{ include.class }}}
|
89
|
+
{{ my_toc | lstrip }}{% endcapture %}
|
90
|
+
{% endif %}
|
91
|
+
|
92
|
+
{% if include.id %}
|
93
|
+
{% capture my_toc %}{: #{{ include.id }}}
|
94
|
+
{{ my_toc | lstrip }}{% endcapture %}
|
95
|
+
{% endif %}
|
96
|
+
{% endcapture %}{% assign tocWorkspace = '' %}{{ my_toc | markdownify | strip }}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<link rel="stylesheet" href="{{ '/assets/css/main.css' | relative_url }}" />
|
5
|
+
<meta charset="utf-8">
|
6
|
+
<title>{{ page.title }}</title>
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<div class="wrapper">
|
10
|
+
|
11
|
+
|
12
|
+
{% include sidebar.html %}
|
13
|
+
|
14
|
+
<main class="content">
|
15
|
+
<div class="inner">
|
16
|
+
|
17
|
+
<p>{% include breadcrumbs.html %}</p>
|
18
|
+
<p>{% include toc.html html=content %}</p>
|
19
|
+
{{ content | newline_to_br }}
|
20
|
+
{% include comments.html element=".post-content" github_account="AlexZ005/alexz005.github.io" require_cookie_consent="true" %}
|
21
|
+
|
22
|
+
</div>
|
23
|
+
</main>
|
24
|
+
</div>
|
25
|
+
{% include scripts.html %}
|
26
|
+
|
27
|
+
<script src="/js/jquery.min.js"></script>
|
28
|
+
</body>
|
29
|
+
</html>
|
data/_layouts/index.html
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="{{ page.lang | default: site.lang | default: "en" }}">
|
3
|
+
|
4
|
+
{%- include head.html -%}
|
5
|
+
|
6
|
+
<body>
|
7
|
+
|
8
|
+
{%- include header.html -%}
|
9
|
+
|
10
|
+
<main class="page-content" aria-label="Content">
|
11
|
+
<div class="wrapper">
|
12
|
+
{{ content }}
|
13
|
+
</div>
|
14
|
+
</main>
|
15
|
+
|
16
|
+
{%- include footer.html -%}
|
17
|
+
|
18
|
+
</body>
|
19
|
+
|
20
|
+
</html>
|