quattle 1.5.5 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +21 -21
- data/README.md +44 -44
- data/_includes/author.html +10 -10
- data/_includes/cookie-consent.html +45 -45
- data/_layouts/compress.html +10 -10
- data/_layouts/default.html +82 -82
- data/_layouts/page.html +7 -7
- data/_layouts/post.html +62 -62
- data/_sass/_base.scss +93 -93
- data/_sass/_buttons.scss +59 -59
- data/_sass/_code.scss +250 -250
- data/_sass/_layout.scss +46 -46
- data/_sass/_masthead.scss +52 -52
- data/_sass/_message.scss +121 -121
- data/_sass/_pagination.scss +48 -48
- data/_sass/_posts.scss +189 -189
- data/_sass/_syntax.scss +96 -96
- data/_sass/_type.scss +211 -211
- data/_sass/_variables.scss +52 -52
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1e52c3a31b95d65e137d42f28338c925b0e170792572ac3430ded8ef38c70a0
|
4
|
+
data.tar.gz: c289e55ba88dbf8b98a6bb6a8dbc71aab4801a9e296ebf7373ee24ddcff8f2c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2fe1d6c1cf4b7d8f0fe23238c4b092d9aaf262a2ca4f6cd560a8b4a7a7560d8273ec7889561b95502485fe6195774e4e672977f543812c3c56063d1808b08db4
|
7
|
+
data.tar.gz: 67e1b3d45cf99d4403402d7e864ccab0596f9904ca668c643fbe5ae6f6a9d0806ea177ecc5a4295da57bc3bdb6ece306a9aac26f2099eb9facb144180adb0f0b
|
data/LICENSE
CHANGED
@@ -1,21 +1,21 @@
|
|
1
|
-
MIT License
|
2
|
-
|
3
|
-
Copyright (c) 2019-2022 Victor Wynne
|
4
|
-
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
7
|
-
in the Software without restriction, including without limitation the rights
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
10
|
-
furnished to do so, subject to the following conditions:
|
11
|
-
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
13
|
-
copies or substantial portions of the Software.
|
14
|
-
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
-
SOFTWARE.
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2019-2022 Victor Wynne
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
CHANGED
@@ -1,44 +1,44 @@
|
|
1
|
-
Quattle is a modern and customizable theme for the static site generator Jekyll.
|
2
|
-
|
3
|
-
## <small>Demo</small>
|
4
|
-
[quattle.victorwynne.com](https://quattle.victorwynne.com)
|
5
|
-
|
6
|
-
## <small>Download</small>
|
7
|
-
[GitHub](https://github.com/victorwynne/quattle/releases) or [RubyGems](https://rubygems.org/gems/quattle)
|
8
|
-
|
9
|
-
## <small>Features</small>
|
10
|
-
Fully responsive with an emphasis on mobile friendly design, typography and interaction
|
11
|
-
|
12
|
-
HTML, SASS, XML, supporting assets and config files are included for the theme's design and functionality
|
13
|
-
|
14
|
-
CSS media feature `prefers-color-scheme` to detect if the visitor has requested a light or dark color mode
|
15
|
-
|
16
|
-
`$variables` based color schemes for light and dark mode, syntax highlighting for code blocks and styling of elements
|
17
|
-
|
18
|
-
HTML/CSS compression (minification)
|
19
|
-
|
20
|
-
Valid RSS 2.0 syndicated feed
|
21
|
-
|
22
|
-
GDPR valid and compliant cookie consent banner
|
23
|
-
|
24
|
-
404, site map, navigation, archive, category, tag, about, style and privacy pages
|
25
|
-
|
26
|
-
Archive displays a tag cloud and number of posts per month, year, category, tag
|
27
|
-
|
28
|
-
Excerpt, pagination and per-post navigation to older/newer entries
|
29
|
-
|
30
|
-
Smart quotes across all content with the `{ | smartify }` liquid filter
|
31
|
-
|
32
|
-
Rich preview links when shared via iMessage and social media services
|
33
|
-
|
34
|
-
A wide variety of HTML elements commonly used in Markdown writing are styled (mark, source references, blockquotes, headers, tables, boxes/buttons, figure captions, code blocks, footnotes)
|
35
|
-
|
36
|
-
Additional supported and styled front matter:
|
37
|
-
* Author attribution
|
38
|
-
* Last modified date
|
39
|
-
* Permalinks for linked list style posts that have an external source reference
|
40
|
-
|
41
|
-
|
42
|
-
## <small>License</small>
|
43
|
-
|
44
|
-
Quattle is free software distributed under a [MIT license](https://github.com/victorwynne/quattle/blob/main/LICENSE).
|
1
|
+
Quattle is a modern and customizable theme for the static site generator Jekyll.
|
2
|
+
|
3
|
+
## <small>Demo</small>
|
4
|
+
[quattle.victorwynne.com](https://quattle.victorwynne.com)
|
5
|
+
|
6
|
+
## <small>Download</small>
|
7
|
+
[GitHub](https://github.com/victorwynne/quattle/releases) or [RubyGems](https://rubygems.org/gems/quattle)
|
8
|
+
|
9
|
+
## <small>Features</small>
|
10
|
+
Fully responsive with an emphasis on mobile friendly design, typography and interaction
|
11
|
+
|
12
|
+
HTML, SASS, XML, supporting assets and config files are included for the theme's design and functionality
|
13
|
+
|
14
|
+
CSS media feature `prefers-color-scheme` to detect if the visitor has requested a light or dark color mode
|
15
|
+
|
16
|
+
`$variables` based color schemes for light and dark mode, syntax highlighting for code blocks and styling of elements
|
17
|
+
|
18
|
+
HTML/CSS compression (minification)
|
19
|
+
|
20
|
+
Valid RSS 2.0 syndicated feed
|
21
|
+
|
22
|
+
GDPR valid and compliant cookie consent banner
|
23
|
+
|
24
|
+
404, site map, navigation, archive, category, tag, about, style and privacy pages
|
25
|
+
|
26
|
+
Archive displays a tag cloud and number of posts per month, year, category, tag
|
27
|
+
|
28
|
+
Excerpt, pagination and per-post navigation to older/newer entries
|
29
|
+
|
30
|
+
Smart quotes across all content with the `{ | smartify }` liquid filter
|
31
|
+
|
32
|
+
Rich preview links when shared via iMessage and social media services
|
33
|
+
|
34
|
+
A wide variety of HTML elements commonly used in Markdown writing are styled (mark, source references, blockquotes, headers, tables, boxes/buttons, figure captions, code blocks, footnotes)
|
35
|
+
|
36
|
+
Additional supported and styled front matter:
|
37
|
+
* Author attribution
|
38
|
+
* Last modified date
|
39
|
+
* Permalinks for linked list style posts that have an external source reference
|
40
|
+
|
41
|
+
|
42
|
+
## <small>License</small>
|
43
|
+
|
44
|
+
Quattle is free software distributed under a [MIT license](https://github.com/victorwynne/quattle/blob/main/LICENSE).
|
data/_includes/author.html
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
{% assign author = site[page.author] %}
|
2
|
-
{% if author %}
|
3
|
-
<span>
|
4
|
-
By {{ author.name }}
|
5
|
-
</span>
|
6
|
-
{% else %}
|
7
|
-
<span>
|
8
|
-
By Post Author
|
9
|
-
</span>
|
10
|
-
{% endif %}
|
1
|
+
{% assign author = site[page.author] %}
|
2
|
+
{% if author %}
|
3
|
+
<span>
|
4
|
+
By {{ author.name }}
|
5
|
+
</span>
|
6
|
+
{% else %}
|
7
|
+
<span>
|
8
|
+
By Post Author
|
9
|
+
</span>
|
10
|
+
{% endif %}
|
@@ -1,45 +1,45 @@
|
|
1
|
-
<style>
|
2
|
-
#cookie-notice {padding: 0.5rem 1rem; display: none; text-align: center; position: fixed; bottom: 0; width: calc(100%); background: color(srgb 0.165 0.165 0.165); color: rgba(255,255,255,0.8);}
|
3
|
-
#cookie-notice a {display: inline-block; cursor: pointer; margin-left: 0.5rem;}
|
4
|
-
@media (max-width: 767px) {
|
5
|
-
#cookie-notice span {display: block; padding-top: 3px; margin-bottom: 1rem;}
|
6
|
-
#cookie-notice a {position: relative; bottom: 4px;}
|
7
|
-
}
|
8
|
-
</style>
|
9
|
-
<div id="cookie-notice"><span>We would like to use third party cookies and scripts to improve the functionality of this website.</span><a id="cookie-notice-accept" class="btn btn-primary btn-sm">Approve</a><a href="/privacy" class="btn btn-primary btn-sm">More info</a></div>
|
10
|
-
<script>
|
11
|
-
function createCookie(name,value,days) {
|
12
|
-
var expires = "";
|
13
|
-
if (days) {
|
14
|
-
var date = new Date();
|
15
|
-
date.setTime(date.getTime() + (days*24*60*60*1000));
|
16
|
-
expires = "; expires=" + date.toUTCString();
|
17
|
-
}
|
18
|
-
document.cookie = name + "=" + value + expires + "; path=/";
|
19
|
-
}
|
20
|
-
function readCookie(name) {
|
21
|
-
var nameEQ = name + "=";
|
22
|
-
var ca = document.cookie.split(';');
|
23
|
-
for(var i=0;i < ca.length;i++) {
|
24
|
-
var c = ca[i];
|
25
|
-
while (c.charAt(0)==' ') c = c.substring(1,c.length);
|
26
|
-
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
|
27
|
-
}
|
28
|
-
return null;
|
29
|
-
}
|
30
|
-
function eraseCookie(name) {
|
31
|
-
createCookie(name,"",-1);
|
32
|
-
}
|
33
|
-
|
34
|
-
if(readCookie('cookie-notice-dismissed')=='true') {
|
35
|
-
|
36
|
-
} else {
|
37
|
-
document.getElementById('cookie-notice').style.display = 'block';
|
38
|
-
}
|
39
|
-
document.getElementById('cookie-notice-accept').addEventListener("click",function() {
|
40
|
-
createCookie('cookie-notice-dismissed','true',31);
|
41
|
-
document.getElementById('cookie-notice').style.display = 'none';
|
42
|
-
location.reload();
|
43
|
-
});
|
44
|
-
|
45
|
-
</script>
|
1
|
+
<style>
|
2
|
+
#cookie-notice {padding: 0.5rem 1rem; display: none; text-align: center; position: fixed; bottom: 0; width: calc(100%); background: color(srgb 0.165 0.165 0.165); color: rgba(255,255,255,0.8);}
|
3
|
+
#cookie-notice a {display: inline-block; cursor: pointer; margin-left: 0.5rem;}
|
4
|
+
@media (max-width: 767px) {
|
5
|
+
#cookie-notice span {display: block; padding-top: 3px; margin-bottom: 1rem;}
|
6
|
+
#cookie-notice a {position: relative; bottom: 4px;}
|
7
|
+
}
|
8
|
+
</style>
|
9
|
+
<div id="cookie-notice"><span>We would like to use third party cookies and scripts to improve the functionality of this website.</span><a id="cookie-notice-accept" class="btn btn-primary btn-sm">Approve</a><a href="/privacy" class="btn btn-primary btn-sm">More info</a></div>
|
10
|
+
<script>
|
11
|
+
function createCookie(name,value,days) {
|
12
|
+
var expires = "";
|
13
|
+
if (days) {
|
14
|
+
var date = new Date();
|
15
|
+
date.setTime(date.getTime() + (days*24*60*60*1000));
|
16
|
+
expires = "; expires=" + date.toUTCString();
|
17
|
+
}
|
18
|
+
document.cookie = name + "=" + value + expires + "; path=/";
|
19
|
+
}
|
20
|
+
function readCookie(name) {
|
21
|
+
var nameEQ = name + "=";
|
22
|
+
var ca = document.cookie.split(';');
|
23
|
+
for(var i=0;i < ca.length;i++) {
|
24
|
+
var c = ca[i];
|
25
|
+
while (c.charAt(0)==' ') c = c.substring(1,c.length);
|
26
|
+
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
|
27
|
+
}
|
28
|
+
return null;
|
29
|
+
}
|
30
|
+
function eraseCookie(name) {
|
31
|
+
createCookie(name,"",-1);
|
32
|
+
}
|
33
|
+
|
34
|
+
if(readCookie('cookie-notice-dismissed')=='true') {
|
35
|
+
|
36
|
+
} else {
|
37
|
+
document.getElementById('cookie-notice').style.display = 'block';
|
38
|
+
}
|
39
|
+
document.getElementById('cookie-notice-accept').addEventListener("click",function() {
|
40
|
+
createCookie('cookie-notice-dismissed','true',31);
|
41
|
+
document.getElementById('cookie-notice').style.display = 'none';
|
42
|
+
location.reload();
|
43
|
+
});
|
44
|
+
|
45
|
+
</script>
|
data/_layouts/compress.html
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
---
|
2
|
-
# Jekyll layout that compresses HTML
|
3
|
-
# v3.1.0
|
4
|
-
# http://jch.penibelst.de/
|
5
|
-
# © 2014–2015 Anatol Broder
|
6
|
-
# MIT License
|
7
|
-
---
|
8
|
-
|
9
|
-
{% capture _LINE_FEED %}
|
10
|
-
{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment or site.compress_html.ignore.envs == "all" %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}</{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "<!-- -->" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "<pre" %}{% assign _content = "" %}{% for _pre_before in _pre_befores %}{% assign _pres = _pre_before | split: "</pre>" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "</pre>" %}<pre{{ _pres.first }}</pre>{% endif %}{% unless _pre_before contains "</pre>" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " <e;<e; </e>;</e>;</e> ;</e>" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} <table id="compress_html_profile_{{ site.time | date: "%Y%m%d" }}" class="compress_html_profile"> <thead> <tr> <td>Step <td>Bytes <tbody> <tr> <td>raw <td>{{ content | size }}{% if _profile_endings %} <tr> <td>endings <td>{{ _profile_endings }}{% endif %}{% if _profile_startings %} <tr> <td>startings <td>{{ _profile_startings }}{% endif %}{% if _profile_comments %} <tr> <td>comments <td>{{ _profile_comments }}{% endif %}{% if _profile_collapse %} <tr> <td>collapse <td>{{ _profile_collapse }}{% endif %}{% if _profile_clippings %} <tr> <td>clippings <td>{{ _profile_clippings }}{% endif %} </table>{% endif %}{% endif %}
|
1
|
+
---
|
2
|
+
# Jekyll layout that compresses HTML
|
3
|
+
# v3.1.0
|
4
|
+
# http://jch.penibelst.de/
|
5
|
+
# © 2014–2015 Anatol Broder
|
6
|
+
# MIT License
|
7
|
+
---
|
8
|
+
|
9
|
+
{% capture _LINE_FEED %}
|
10
|
+
{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment or site.compress_html.ignore.envs == "all" %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}</{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "<!-- -->" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "<pre" %}{% assign _content = "" %}{% for _pre_before in _pre_befores %}{% assign _pres = _pre_before | split: "</pre>" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "</pre>" %}<pre{{ _pres.first }}</pre>{% endif %}{% unless _pre_before contains "</pre>" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " <e;<e; </e>;</e>;</e> ;</e>" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} <table id="compress_html_profile_{{ site.time | date: "%Y%m%d" }}" class="compress_html_profile"> <thead> <tr> <td>Step <td>Bytes <tbody> <tr> <td>raw <td>{{ content | size }}{% if _profile_endings %} <tr> <td>endings <td>{{ _profile_endings }}{% endif %}{% if _profile_startings %} <tr> <td>startings <td>{{ _profile_startings }}{% endif %}{% if _profile_comments %} <tr> <td>comments <td>{{ _profile_comments }}{% endif %}{% if _profile_collapse %} <tr> <td>collapse <td>{{ _profile_collapse }}{% endif %}{% if _profile_clippings %} <tr> <td>clippings <td>{{ _profile_clippings }}{% endif %} </table>{% endif %}{% endif %}
|
data/_layouts/default.html
CHANGED
@@ -1,82 +1,82 @@
|
|
1
|
-
---
|
2
|
-
layout: compress
|
3
|
-
---
|
4
|
-
|
5
|
-
<!doctype html>
|
6
|
-
<html lang="en">
|
7
|
-
|
8
|
-
<head>
|
9
|
-
<meta charset="UTF-8">
|
10
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
11
|
-
<meta property="og:image" content="https://quattle.victorwynne.com/assets/iMessage.png" />
|
12
|
-
|
13
|
-
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#f7f6f4">
|
14
|
-
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1e1e1e">
|
15
|
-
|
16
|
-
<meta name="apple-mobile-web-app-title" content=“Quattle”>
|
17
|
-
<meta name="apple-mobile-web-app-capable" content="yes">
|
18
|
-
|
19
|
-
<link rel="manifest" href="manifest.json">
|
20
|
-
|
21
|
-
<title>
|
22
|
-
{% if page.title == "Home" %}
|
23
|
-
{{ site.title }}{% if site.tagline %} · {{ site.tagline }}{% endif %}
|
24
|
-
{% else %}
|
25
|
-
{{ page.title }} · {{ site.title }}
|
26
|
-
{% endif %}
|
27
|
-
</title>
|
28
|
-
|
29
|
-
<link rel="stylesheet" href="{{ site.baseurl }}/styles.css">
|
30
|
-
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="{{ site.baseurl }}/assets/apple-touch-icon-precomposed.png">
|
31
|
-
<link rel="shortcut icon" href="{{ site.baseurl }}/assets/fav.ico">
|
32
|
-
<link rel="alternate" type="application/atom+xml" title="{{ site.title }}" href="{{ site.baseurl }}/feed.xml">
|
33
|
-
|
34
|
-
{% seo title=false %}
|
35
|
-
|
36
|
-
</head>
|
37
|
-
|
38
|
-
<body>
|
39
|
-
|
40
|
-
<div class="container content">
|
41
|
-
<header class="masthead">
|
42
|
-
|
43
|
-
<h2 class="masthead-title">
|
44
|
-
<a href="{{ site.baseurl }}/" title="Home">{{ site.title }}</a><br>
|
45
|
-
<small>{{ site.tagline }}</small>
|
46
|
-
</h2>
|
47
|
-
|
48
|
-
<!-- Change navigation links here -->
|
49
|
-
<div class="navigation">
|
50
|
-
<ul id="navigation-list">
|
51
|
-
<li><a href="/archive/">archive</a></li>
|
52
|
-
<li><a href="/styles/">styles</a></li>
|
53
|
-
<li><a href="/about/">about</a></li>
|
54
|
-
</ul>
|
55
|
-
</div>
|
56
|
-
|
57
|
-
</header>
|
58
|
-
|
59
|
-
<main>
|
60
|
-
{{ content | smartify }}
|
61
|
-
</main>
|
62
|
-
|
63
|
-
<br><footer class="footer">
|
64
|
-
<p>Made with ❤️ on a Mac 💻</p>
|
65
|
-
</footer>
|
66
|
-
</div>
|
67
|
-
|
68
|
-
{% if site.ga_analytics %}
|
69
|
-
<script>
|
70
|
-
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
71
|
-
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
72
|
-
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
73
|
-
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
74
|
-
ga('create', '{{ site.ga_analytics }}', 'auto');
|
75
|
-
ga('send', 'pageview');
|
76
|
-
</script>
|
77
|
-
{% endif %}
|
78
|
-
|
79
|
-
{% include cookie-consent.html%}
|
80
|
-
|
81
|
-
</body>
|
82
|
-
</html>
|
1
|
+
---
|
2
|
+
layout: compress
|
3
|
+
---
|
4
|
+
|
5
|
+
<!doctype html>
|
6
|
+
<html lang="en">
|
7
|
+
|
8
|
+
<head>
|
9
|
+
<meta charset="UTF-8">
|
10
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
11
|
+
<meta property="og:image" content="https://quattle.victorwynne.com/assets/iMessage.png" />
|
12
|
+
|
13
|
+
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#f7f6f4">
|
14
|
+
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1e1e1e">
|
15
|
+
|
16
|
+
<meta name="apple-mobile-web-app-title" content=“Quattle”>
|
17
|
+
<meta name="apple-mobile-web-app-capable" content="yes">
|
18
|
+
|
19
|
+
<link rel="manifest" href="/manifest.json">
|
20
|
+
|
21
|
+
<title>
|
22
|
+
{% if page.title == "Home" %}
|
23
|
+
{{ site.title }}{% if site.tagline %} · {{ site.tagline }}{% endif %}
|
24
|
+
{% else %}
|
25
|
+
{{ page.title }} · {{ site.title }}
|
26
|
+
{% endif %}
|
27
|
+
</title>
|
28
|
+
|
29
|
+
<link rel="stylesheet" href="{{ site.baseurl }}/styles.css">
|
30
|
+
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="{{ site.baseurl }}/assets/apple-touch-icon-precomposed.png">
|
31
|
+
<link rel="shortcut icon" href="{{ site.baseurl }}/assets/fav.ico">
|
32
|
+
<link rel="alternate" type="application/atom+xml" title="{{ site.title }}" href="{{ site.baseurl }}/feed.xml">
|
33
|
+
|
34
|
+
{% seo title=false %}
|
35
|
+
|
36
|
+
</head>
|
37
|
+
|
38
|
+
<body>
|
39
|
+
|
40
|
+
<div class="container content">
|
41
|
+
<header class="masthead">
|
42
|
+
|
43
|
+
<h2 class="masthead-title">
|
44
|
+
<a href="{{ site.baseurl }}/" title="Home">{{ site.title }}</a><br>
|
45
|
+
<small>{{ site.tagline }}</small>
|
46
|
+
</h2>
|
47
|
+
|
48
|
+
<!-- Change navigation links here -->
|
49
|
+
<div class="navigation">
|
50
|
+
<ul id="navigation-list">
|
51
|
+
<li><a href="/archive/">archive</a></li>
|
52
|
+
<li><a href="/styles/">styles</a></li>
|
53
|
+
<li><a href="/about/">about</a></li>
|
54
|
+
</ul>
|
55
|
+
</div>
|
56
|
+
|
57
|
+
</header>
|
58
|
+
|
59
|
+
<main>
|
60
|
+
{{ content | smartify }}
|
61
|
+
</main>
|
62
|
+
|
63
|
+
<br><footer class="footer">
|
64
|
+
<p>Made with ❤️ on a Mac 💻</p>
|
65
|
+
</footer>
|
66
|
+
</div>
|
67
|
+
|
68
|
+
{% if site.ga_analytics %}
|
69
|
+
<script>
|
70
|
+
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
71
|
+
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
72
|
+
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
73
|
+
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
74
|
+
ga('create', '{{ site.ga_analytics }}', 'auto');
|
75
|
+
ga('send', 'pageview');
|
76
|
+
</script>
|
77
|
+
{% endif %}
|
78
|
+
|
79
|
+
{% include cookie-consent.html%}
|
80
|
+
|
81
|
+
</body>
|
82
|
+
</html>
|
data/_layouts/page.html
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
---
|
2
|
-
layout: default
|
3
|
-
---
|
4
|
-
|
5
|
-
<article class="page">
|
6
|
-
{{ content | smartify }}
|
7
|
-
</article>
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
---
|
4
|
+
|
5
|
+
<article class="page">
|
6
|
+
{{ content | smartify }}
|
7
|
+
</article>
|
data/_layouts/post.html
CHANGED
@@ -1,62 +1,62 @@
|
|
1
|
-
---
|
2
|
-
layout: default
|
3
|
-
---
|
4
|
-
|
5
|
-
<article class="post">
|
6
|
-
{% if page.link %}
|
7
|
-
<h2 class="post-title"><a href="{{ page.link }}">
|
8
|
-
{{ page.title | smartify }} <span class="link-arrow">→</span></a>
|
9
|
-
</h2>
|
10
|
-
{% else %}
|
11
|
-
<h2 class="post-title">{{ page.title | smartify }}</h2>
|
12
|
-
{% endif %}
|
13
|
-
|
14
|
-
<time datetime="{{ page.date | date_to_xmlschema }}" class="post-date">{{ page.date | date_to_long_string: "ordinal", "US" }}
|
15
|
-
{% if post %}
|
16
|
-
{% assign categories = post.categories %}
|
17
|
-
{% else %}
|
18
|
-
{% assign categories = page.categories %}
|
19
|
-
{% endif %}
|
20
|
-
{% if categories.size > 0 %}•{% endif %}
|
21
|
-
{% for category in categories %}
|
22
|
-
<a href="{{site.baseurl}}/categories/#{{category|slugize}}">{{category}}</a>{% unless forloop.last %},{% endunless %}
|
23
|
-
{% endfor %}
|
24
|
-
{%- if page.last_modified_at -%}
|
25
|
-
<br><i>Last updated on: {{ page.last_modified_at | date_to_long_string: "ordinal", "US" }}</i>
|
26
|
-
{%- endif -%}
|
27
|
-
<br><span class="author">{% include author.html %}</span>
|
28
|
-
</time>
|
29
|
-
|
30
|
-
{{ content | smartify }}
|
31
|
-
|
32
|
-
<br><br>
|
33
|
-
<div class="tag-list">
|
34
|
-
{% if post %}
|
35
|
-
{% assign tags = post.tags %}
|
36
|
-
{% else %}
|
37
|
-
{% assign tags = page.tags %}
|
38
|
-
{% endif %}
|
39
|
-
{% for tag in tags %}
|
40
|
-
<a href="{{site.baseurl}}/tags/#{{tag|slugize}}">{{tag}}</a>
|
41
|
-
{% unless forloop.last %} {% endunless %}
|
42
|
-
{% endfor %}
|
43
|
-
</div>
|
44
|
-
|
45
|
-
{% if page.link %}
|
46
|
-
<br>
|
47
|
-
<span class="source" role="doc-endnotes">
|
48
|
-
source: <a href="{{ page.link }}">{{ page.link | remove:'http://' | remove:'www.' | remove:'https://' | split:'/' | first }}</a>
|
49
|
-
</span><br>
|
50
|
-
{% endif %}
|
51
|
-
<br>
|
52
|
-
|
53
|
-
</article>
|
54
|
-
|
55
|
-
<div class="PageNavigation">
|
56
|
-
{% if page.previous.url %}
|
57
|
-
<br><a class="prev" href="{{page.previous.url}}">← Previous</a>
|
58
|
-
{% endif %}
|
59
|
-
{% if page.next.url %}
|
60
|
-
<br><a class="next" href="{{page.next.url}}">Next →</a>
|
61
|
-
{% endif %}
|
62
|
-
</div>
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
---
|
4
|
+
|
5
|
+
<article class="post">
|
6
|
+
{% if page.link %}
|
7
|
+
<h2 class="post-title"><a href="{{ page.link }}">
|
8
|
+
{{ page.title | smartify }} <span class="link-arrow">→</span></a>
|
9
|
+
</h2>
|
10
|
+
{% else %}
|
11
|
+
<h2 class="post-title">{{ page.title | smartify }}</h2>
|
12
|
+
{% endif %}
|
13
|
+
|
14
|
+
<time datetime="{{ page.date | date_to_xmlschema }}" class="post-date">{{ page.date | date_to_long_string: "ordinal", "US" }}
|
15
|
+
{% if post %}
|
16
|
+
{% assign categories = post.categories %}
|
17
|
+
{% else %}
|
18
|
+
{% assign categories = page.categories %}
|
19
|
+
{% endif %}
|
20
|
+
{% if categories.size > 0 %}•{% endif %}
|
21
|
+
{% for category in categories %}
|
22
|
+
<a href="{{site.baseurl}}/categories/#{{category|slugize}}">{{category}}</a>{% unless forloop.last %},{% endunless %}
|
23
|
+
{% endfor %}
|
24
|
+
{%- if page.last_modified_at -%}
|
25
|
+
<br><i>Last updated on: {{ page.last_modified_at | date_to_long_string: "ordinal", "US" }}</i>
|
26
|
+
{%- endif -%}
|
27
|
+
<br><span class="author">{% include author.html %}</span>
|
28
|
+
</time>
|
29
|
+
|
30
|
+
{{ content | smartify }}
|
31
|
+
|
32
|
+
<br><br>
|
33
|
+
<div class="tag-list">
|
34
|
+
{% if post %}
|
35
|
+
{% assign tags = post.tags %}
|
36
|
+
{% else %}
|
37
|
+
{% assign tags = page.tags %}
|
38
|
+
{% endif %}
|
39
|
+
{% for tag in tags %}
|
40
|
+
<a href="{{site.baseurl}}/tags/#{{tag|slugize}}">{{tag}}</a>
|
41
|
+
{% unless forloop.last %} {% endunless %}
|
42
|
+
{% endfor %}
|
43
|
+
</div>
|
44
|
+
|
45
|
+
{% if page.link %}
|
46
|
+
<br>
|
47
|
+
<span class="source" role="doc-endnotes">
|
48
|
+
source: <a href="{{ page.link }}">{{ page.link | remove:'http://' | remove:'www.' | remove:'https://' | split:'/' | first }}</a>
|
49
|
+
</span><br>
|
50
|
+
{% endif %}
|
51
|
+
<br>
|
52
|
+
|
53
|
+
</article>
|
54
|
+
|
55
|
+
<div class="PageNavigation">
|
56
|
+
{% if page.previous.url %}
|
57
|
+
<br><a class="prev" href="{{page.previous.url}}">← Previous</a>
|
58
|
+
{% endif %}
|
59
|
+
{% if page.next.url %}
|
60
|
+
<br><a class="next" href="{{page.next.url}}">Next →</a>
|
61
|
+
{% endif %}
|
62
|
+
</div>
|