jekyll-theme-abd3lraouf 5.2.4 → 5.2.7

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.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +21 -21
  3. data/README.md +105 -105
  4. data/_config.yml +207 -206
  5. data/_data/assets/cross_origin.yml +62 -62
  6. data/_data/assets/self_host.yml +51 -51
  7. data/_data/authors.yml +17 -17
  8. data/_data/contact.yml +30 -30
  9. data/_data/locales/bg-BG.yml +83 -83
  10. data/_data/locales/en.yml +83 -83
  11. data/_data/locales/es-ES.yml +79 -79
  12. data/_data/locales/fr-FR.yml +79 -79
  13. data/_data/locales/hu-HU.yml +81 -81
  14. data/_data/locales/id-ID.yml +79 -79
  15. data/_data/locales/ko-KR.yml +79 -79
  16. data/_data/locales/my-MM.yml +79 -79
  17. data/_data/locales/pt-BR.yml +79 -79
  18. data/_data/locales/ru-RU.yml +79 -79
  19. data/_data/locales/tr-TR.yml +79 -79
  20. data/_data/locales/uk-UA.yml +79 -79
  21. data/_data/locales/vi-VN.yml +77 -77
  22. data/_data/locales/zh-CN.yml +78 -78
  23. data/_data/share.yml +27 -27
  24. data/_includes/assets-origin.html +12 -12
  25. data/_includes/comments/disqus.html +54 -54
  26. data/_includes/comments/giscus.html +56 -56
  27. data/_includes/comments/utterances.html +51 -51
  28. data/_includes/comments.html +5 -5
  29. data/_includes/datetime.html +21 -21
  30. data/_includes/favicons.html +17 -17
  31. data/_includes/footer.html +17 -36
  32. data/_includes/google-analytics.html +14 -14
  33. data/_includes/head.html +116 -116
  34. data/_includes/js-selector.html +104 -104
  35. data/_includes/jsdelivr-combine.html +32 -32
  36. data/_includes/lang.html +8 -8
  37. data/_includes/language-alias.html +70 -70
  38. data/_includes/mermaid.html +57 -57
  39. data/_includes/mode-toggle.html +129 -129
  40. data/_includes/no-linenos.html +10 -10
  41. data/_includes/post-nav.html +30 -30
  42. data/_includes/post-paginator.html +88 -88
  43. data/_includes/post-sharing.html +27 -27
  44. data/_includes/read-time.html +30 -30
  45. data/_includes/refactor-content.html +282 -282
  46. data/_includes/related-posts.html +103 -103
  47. data/_includes/search-loader.html +46 -46
  48. data/_includes/search-results.html +11 -11
  49. data/_includes/sidebar.html +93 -93
  50. data/_includes/toc.html +16 -16
  51. data/_includes/topbar.html +70 -70
  52. data/_includes/trending-tags.html +50 -50
  53. data/_includes/update-list.html +40 -40
  54. data/_layouts/archives.html +48 -48
  55. data/_layouts/categories.html +120 -120
  56. data/_layouts/category.html +24 -24
  57. data/_layouts/compress.html +10 -10
  58. data/_layouts/default.html +74 -74
  59. data/_layouts/home.html +103 -103
  60. data/_layouts/page.html +64 -64
  61. data/_layouts/post.html +159 -159
  62. data/_layouts/tag.html +23 -23
  63. data/_layouts/tags.html +23 -23
  64. data/_plugins/posts-lastmod-hook.rb +14 -14
  65. data/_sass/addon/commons.scss +1678 -1680
  66. data/_sass/addon/module.scss +151 -151
  67. data/_sass/addon/syntax.scss +289 -289
  68. data/_sass/addon/variables.scss +34 -34
  69. data/_sass/colors/dark-syntax.scss +88 -88
  70. data/_sass/colors/dark-typography.scss +157 -157
  71. data/_sass/colors/light-syntax.scss +84 -84
  72. data/_sass/colors/light-typography.scss +94 -94
  73. data/_sass/jekyll-theme-abd3lraouf.scss +1 -1
  74. data/_sass/layout/archives.scss +147 -147
  75. data/_sass/layout/categories.scss +67 -67
  76. data/_sass/layout/category-tag.scss +73 -73
  77. data/_sass/layout/home.scss +184 -184
  78. data/_sass/layout/post.scss +369 -369
  79. data/_sass/layout/tags.scss +19 -19
  80. data/_sass/variables-hook.scss +3 -3
  81. data/_tabs/about.md +8 -8
  82. data/_tabs/archives.md +7 -7
  83. data/_tabs/categories.md +6 -6
  84. data/_tabs/tags.md +6 -6
  85. data/assets/404.html +16 -16
  86. data/assets/css/style.scss +12 -12
  87. data/assets/feed.xml +61 -61
  88. data/assets/img/favicons/browserconfig.xml +13 -13
  89. data/assets/img/favicons/site.webmanifest +26 -26
  90. data/assets/js/data/search.json +18 -18
  91. data/assets/js/data/swcache.js +55 -55
  92. data/assets/js/dist/categories.min.js +1 -1
  93. data/assets/js/dist/commons.min.js +1 -1
  94. data/assets/js/dist/home.min.js +1 -1
  95. data/assets/js/dist/misc.min.js +1 -1
  96. data/assets/js/dist/page.min.js +1 -1
  97. data/assets/js/dist/post.min.js +1 -1
  98. data/assets/js/dist/pvreport.min.js +1 -1
  99. data/assets/js/pwa/app.js +47 -47
  100. data/assets/js/pwa/sw.js +89 -89
  101. data/assets/js/pwa/unregister.js +12 -12
  102. data/assets/robots.txt +10 -10
  103. data/index.html +4 -4
  104. metadata +7 -7
@@ -1,56 +1,56 @@
1
- <!-- https://giscus.app/ -->
2
- <script type="text/javascript">
3
- $(function () {
4
- const origin = "https://giscus.app";
5
- const iframe = "iframe.giscus-frame";
6
- const lightTheme = "light";
7
- const darkTheme = "dark_dimmed";
8
- let initTheme = lightTheme;
9
-
10
- if ($("html[data-mode=dark]").length > 0
11
- || ($("html[data-mode]").length == 0
12
- && window.matchMedia("(prefers-color-scheme: dark)").matches)) {
13
- initTheme = darkTheme;
14
- }
15
-
16
- let giscusAttributes = {
17
- "src": "https://giscus.app/client.js",
18
- "data-repo": "{{ site.comments.giscus.repo}}",
19
- "data-repo-id": "{{ site.comments.giscus.repo_id }}",
20
- "data-category": "{{ site.comments.giscus.category }}",
21
- "data-category-id": "{{ site.comments.giscus.category_id }}",
22
- "data-mapping": "{{ site.comments.giscus.mapping | default: 'pathname' }}",
23
- "data-reactions-enabled": "1",
24
- "data-emit-metadata": "0",
25
- "data-theme": initTheme,
26
- "data-input-position": "{{ site.comments.giscus.input_position | default: 'bottom' }}",
27
- "data-lang": "{{ site.comments.giscus.lang | default: lang }}",
28
- "crossorigin": "anonymous",
29
- "async": ""
30
- };
31
-
32
- let giscusScript = document.createElement("script");
33
- Object.entries(giscusAttributes).forEach(([key, value]) => giscusScript.setAttribute(key, value));
34
- document.getElementById("tail-wrapper").appendChild(giscusScript);
35
-
36
- addEventListener("message", (event) => {
37
- if (event.source === window && event.data &&
38
- event.data.direction === ModeToggle.ID) {
39
- /* global theme mode changed */
40
- const mode = event.data.message;
41
- const theme = (mode === ModeToggle.DARK_MODE ? darkTheme : lightTheme);
42
-
43
- const message = {
44
- setConfig: {
45
- theme: theme
46
- }
47
- };
48
-
49
- const giscus = document.querySelector(iframe).contentWindow;
50
- giscus.postMessage({ giscus: message }, origin);
51
- }
52
-
53
- });
54
-
55
- });
56
- </script>
1
+ <!-- https://giscus.app/ -->
2
+ <script type="text/javascript">
3
+ $(function () {
4
+ const origin = "https://giscus.app";
5
+ const iframe = "iframe.giscus-frame";
6
+ const lightTheme = "light";
7
+ const darkTheme = "dark_dimmed";
8
+ let initTheme = lightTheme;
9
+
10
+ if ($("html[data-mode=dark]").length > 0
11
+ || ($("html[data-mode]").length == 0
12
+ && window.matchMedia("(prefers-color-scheme: dark)").matches)) {
13
+ initTheme = darkTheme;
14
+ }
15
+
16
+ let giscusAttributes = {
17
+ "src": "https://giscus.app/client.js",
18
+ "data-repo": "{{ site.comments.giscus.repo}}",
19
+ "data-repo-id": "{{ site.comments.giscus.repo_id }}",
20
+ "data-category": "{{ site.comments.giscus.category }}",
21
+ "data-category-id": "{{ site.comments.giscus.category_id }}",
22
+ "data-mapping": "{{ site.comments.giscus.mapping | default: 'pathname' }}",
23
+ "data-reactions-enabled": "1",
24
+ "data-emit-metadata": "0",
25
+ "data-theme": initTheme,
26
+ "data-input-position": "{{ site.comments.giscus.input_position | default: 'bottom' }}",
27
+ "data-lang": "{{ site.comments.giscus.lang | default: lang }}",
28
+ "crossorigin": "anonymous",
29
+ "async": ""
30
+ };
31
+
32
+ let giscusScript = document.createElement("script");
33
+ Object.entries(giscusAttributes).forEach(([key, value]) => giscusScript.setAttribute(key, value));
34
+ document.getElementById("tail-wrapper").appendChild(giscusScript);
35
+
36
+ addEventListener("message", (event) => {
37
+ if (event.source === window && event.data &&
38
+ event.data.direction === ModeToggle.ID) {
39
+ /* global theme mode changed */
40
+ const mode = event.data.message;
41
+ const theme = (mode === ModeToggle.DARK_MODE ? darkTheme : lightTheme);
42
+
43
+ const message = {
44
+ setConfig: {
45
+ theme: theme
46
+ }
47
+ };
48
+
49
+ const giscus = document.querySelector(iframe).contentWindow;
50
+ giscus.postMessage({ giscus: message }, origin);
51
+ }
52
+
53
+ });
54
+
55
+ });
56
+ </script>
@@ -1,51 +1,51 @@
1
- <!-- https://utteranc.es/ -->
2
- <script src="https://utteranc.es/client.js"
3
- repo="{{ site.comments.utterances.repo }}"
4
- issue-term="{{ site.comments.utterances.issue_term }}"
5
- crossorigin="anonymous"
6
- async>
7
- </script>
8
-
9
- <script type="text/javascript">
10
- $(function() {
11
- const origin = "https://utteranc.es";
12
- const iframe = "iframe.utterances-frame";
13
- const lightTheme = "github-light";
14
- const darkTheme = "github-dark";
15
- let initTheme = lightTheme;
16
-
17
- if ($("html[data-mode=dark]").length > 0
18
- || ($("html[data-mode]").length == 0
19
- && window.matchMedia("(prefers-color-scheme: dark)").matches)) {
20
- initTheme = darkTheme;
21
- }
22
-
23
- addEventListener("message", (event) => {
24
- let theme;
25
-
26
- /* credit to <https://github.com/utterance/utterances/issues/170#issuecomment-594036347> */
27
- if (event.origin === origin) {
28
- /* page initial */
29
- theme = initTheme;
30
-
31
- } else if (event.source === window && event.data &&
32
- event.data.direction === ModeToggle.ID) {
33
- /* global theme mode changed */
34
- const mode = event.data.message;
35
- theme = (mode === ModeToggle.DARK_MODE ? darkTheme : lightTheme);
36
-
37
- } else {
38
- return;
39
- }
40
-
41
- const message = {
42
- type: "set-theme",
43
- theme: theme
44
- };
45
-
46
- const utterances = document.querySelector(iframe).contentWindow;
47
- utterances.postMessage(message, origin);
48
- });
49
-
50
- });
51
- </script>
1
+ <!-- https://utteranc.es/ -->
2
+ <script src="https://utteranc.es/client.js"
3
+ repo="{{ site.comments.utterances.repo }}"
4
+ issue-term="{{ site.comments.utterances.issue_term }}"
5
+ crossorigin="anonymous"
6
+ async>
7
+ </script>
8
+
9
+ <script type="text/javascript">
10
+ $(function() {
11
+ const origin = "https://utteranc.es";
12
+ const iframe = "iframe.utterances-frame";
13
+ const lightTheme = "github-light";
14
+ const darkTheme = "github-dark";
15
+ let initTheme = lightTheme;
16
+
17
+ if ($("html[data-mode=dark]").length > 0
18
+ || ($("html[data-mode]").length == 0
19
+ && window.matchMedia("(prefers-color-scheme: dark)").matches)) {
20
+ initTheme = darkTheme;
21
+ }
22
+
23
+ addEventListener("message", (event) => {
24
+ let theme;
25
+
26
+ /* credit to <https://github.com/utterance/utterances/issues/170#issuecomment-594036347> */
27
+ if (event.origin === origin) {
28
+ /* page initial */
29
+ theme = initTheme;
30
+
31
+ } else if (event.source === window && event.data &&
32
+ event.data.direction === ModeToggle.ID) {
33
+ /* global theme mode changed */
34
+ const mode = event.data.message;
35
+ theme = (mode === ModeToggle.DARK_MODE ? darkTheme : lightTheme);
36
+
37
+ } else {
38
+ return;
39
+ }
40
+
41
+ const message = {
42
+ type: "set-theme",
43
+ theme: theme
44
+ };
45
+
46
+ const utterances = document.querySelector(iframe).contentWindow;
47
+ utterances.postMessage(message, origin);
48
+ });
49
+
50
+ });
51
+ </script>
@@ -1,5 +1,5 @@
1
- <!-- The comments switcher -->
2
- {% if page.comments and site.comments.active %}
3
- {% capture path %}comments/{{ site.comments.active }}.html{% endcapture %}
4
- {% include {{ path }} %}
5
- {% endif %}
1
+ <!-- The comments switcher -->
2
+ {% if page.comments and site.comments.active %}
3
+ {% capture path %}comments/{{ site.comments.active }}.html{% endcapture %}
4
+ {% include {{ path }} %}
5
+ {% endif %}
@@ -1,21 +1,21 @@
1
- <!--
2
- Date format snippet
3
- See: ${JS_ROOT}/utils/locale-dateime.js
4
- -->
5
-
6
- {% assign wrap_elem = include.wrap | default: 'em' %}
7
-
8
- {% if site.prefer_datetime_locale == 'en' or lang == 'en' %}
9
- {% assign df_strftime = '%b %e, %Y' %}
10
- {% assign df_dayjs = 'll' %}
11
- {% else %}
12
- {% assign df_strftime = '%F' %}
13
- {% assign df_dayjs = 'YYYY-MM-DD' %}
14
- {% endif %}
15
-
16
- <{{ wrap_elem }} class="{% if include.class %}{{ include.class }}{% endif %}"
17
- data-ts="{{ include.date | date: '%s' }}"
18
- data-df="{{ df_dayjs }}"
19
- {% if include.tooltip %}data-toggle="tooltip" data-placement="bottom"{% endif %}>
20
- {{ include.date | date: df_strftime }}
21
- </{{ wrap_elem }}>
1
+ <!--
2
+ Date format snippet
3
+ See: ${JS_ROOT}/utils/locale-dateime.js
4
+ -->
5
+
6
+ {% assign wrap_elem = include.wrap | default: 'em' %}
7
+
8
+ {% if site.prefer_datetime_locale == 'en' or lang == 'en' %}
9
+ {% assign df_strftime = '%b %e, %Y' %}
10
+ {% assign df_dayjs = 'll' %}
11
+ {% else %}
12
+ {% assign df_strftime = '%F' %}
13
+ {% assign df_dayjs = 'YYYY-MM-DD' %}
14
+ {% endif %}
15
+
16
+ <{{ wrap_elem }} class="{% if include.class %}{{ include.class }}{% endif %}"
17
+ data-ts="{{ include.date | date: '%s' }}"
18
+ data-df="{{ df_dayjs }}"
19
+ {% if include.tooltip %}data-toggle="tooltip" data-placement="bottom"{% endif %}>
20
+ {{ include.date | date: df_strftime }}
21
+ </{{ wrap_elem }}>
@@ -1,17 +1,17 @@
1
- <!--
2
- The Favicons for Web, Android, Microsoft, and iOS (iPhone and iPad) Apps
3
- Generated by: https://realfavicongenerator.net/
4
- -->
5
-
6
- {% capture favicon_path %}{{ '/assets/img/favicons' | relative_url }}{% endcapture %}
7
-
8
- <link rel="apple-touch-icon" sizes="180x180" href="{{ favicon_path }}/apple-touch-icon.png">
9
- <link rel="icon" type="image/png" sizes="32x32" href="{{ favicon_path }}/favicon-32x32.png">
10
- <link rel="icon" type="image/png" sizes="16x16" href="{{ favicon_path }}/favicon-16x16.png">
11
- <link rel="manifest" href="{{ favicon_path }}/site.webmanifest">
12
- <link rel="shortcut icon" href="{{ favicon_path }}/favicon.ico">
13
- <meta name="apple-mobile-web-app-title" content="{{ site.title }}">
14
- <meta name="application-name" content="{{ site.title }}">
15
- <meta name="msapplication-TileColor" content="#da532c">
16
- <meta name="msapplication-config" content="{{ favicon_path }}/browserconfig.xml">
17
- <meta name="theme-color" content="#ffffff">
1
+ <!--
2
+ The Favicons for Web, Android, Microsoft, and iOS (iPhone and iPad) Apps
3
+ Generated by: https://realfavicongenerator.net/
4
+ -->
5
+
6
+ {% capture favicon_path %}{{ '/assets/img/favicons' | relative_url }}{% endcapture %}
7
+
8
+ <link rel="apple-touch-icon" sizes="180x180" href="{{ favicon_path }}/apple-touch-icon.png">
9
+ <link rel="icon" type="image/png" sizes="32x32" href="{{ favicon_path }}/favicon-32x32.png">
10
+ <link rel="icon" type="image/png" sizes="16x16" href="{{ favicon_path }}/favicon-16x16.png">
11
+ <link rel="manifest" href="{{ favicon_path }}/site.webmanifest">
12
+ <link rel="shortcut icon" href="{{ favicon_path }}/favicon.ico">
13
+ <meta name="apple-mobile-web-app-title" content="{{ site.title }}">
14
+ <meta name="application-name" content="{{ site.title }}">
15
+ <meta name="msapplication-TileColor" content="#da532c">
16
+ <meta name="msapplication-config" content="{{ favicon_path }}/browserconfig.xml">
17
+ <meta name="theme-color" content="#ffffff">
@@ -1,36 +1,17 @@
1
- <!-- The Footer -->
2
-
3
- <footer class="row pl-3 pr-3">
4
- <div class="col-12 d-flex justify-content-between align-items-center text-muted pl-0 pr-0">
5
- <div class="footer-left">
6
- <p class="mb-0">
7
- © {{ 'now' | date: "%Y" }}
8
- <a href="{{ site.social.links[0] }}">{{ site.social.name }}</a>.
9
- {% if site.data.locales[lang].copyright.brief %}
10
- <span data-toggle="tooltip" data-placement="top"
11
- title="{{ site.data.locales[lang].copyright.verbose }}">{{ site.data.locales[lang].copyright.brief }}</span>
12
- {% endif %}
13
- </p>
14
- </div>
15
-
16
- <div class="footer-right">
17
- <p class="mb-0">
18
- {% capture _platform %}
19
- <a href="https://jekyllrb.com" target="_blank" rel="noopener">Jekyll</a>
20
- {% endcapture %}
21
-
22
- {% capture _theme %}
23
- <a href="https://github.com/abd3lraouf/jekyll-theme-abd3lraouf" target="_blank" rel="noopener">Chirpy</a>
24
- {% endcapture %}
25
-
26
- {{ site.data.locales[lang].meta
27
- | default: 'Powered by :PLATFORM with :THEME theme.'
28
- | replace: ':PLATFORM', _platform | replace: ':THEME', _theme
29
- }}
30
-
31
- </p>
32
- </div>
33
-
34
- </div>
35
-
36
- </footer>
1
+ <!-- The Footer -->
2
+
3
+ <footer class="row pl-3 pr-3">
4
+ <div class="col-12 d-flex justify-content-between align-items-center text-muted pl-0 pr-0">
5
+ <div class="footer-left">
6
+ <p class="mb-0">
7
+ © {{ 'now' | date: "%Y" }}
8
+ <a href="{{ site.social.links[0] }}">{{ site.social.name }}</a>.
9
+ {% if site.data.locales[lang].copyright.brief %}
10
+ <span data-toggle="tooltip" data-placement="top"
11
+ title="{{ site.data.locales[lang].copyright.verbose }}">{{ site.data.locales[lang].copyright.brief }}</span>
12
+ {% endif %}
13
+ </p>
14
+ </div>
15
+ </div>
16
+
17
+ </footer>
@@ -1,14 +1,14 @@
1
- <!--
2
- The GA snippet
3
- -->
4
- <!-- Global site tag (gtag.js) - Google Analytics -->
5
- <script defer src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics.id }}"></script>
6
- <script>
7
- document.addEventListener("DOMContentLoaded", function(event) {
8
- window.dataLayer = window.dataLayer || [];
9
- function gtag(){dataLayer.push(arguments);}
10
-
11
- gtag('js', new Date());
12
- gtag('config', '{{ site.google_analytics.id }}');
13
- });
14
- </script>
1
+ <!--
2
+ The GA snippet
3
+ -->
4
+ <!-- Global site tag (gtag.js) - Google Analytics -->
5
+ <script defer src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics.id }}"></script>
6
+ <script>
7
+ document.addEventListener("DOMContentLoaded", function(event) {
8
+ window.dataLayer = window.dataLayer || [];
9
+ function gtag(){dataLayer.push(arguments);}
10
+
11
+ gtag('js', new Date());
12
+ gtag('config', '{{ site.google_analytics.id }}');
13
+ });
14
+ </script>
data/_includes/head.html CHANGED
@@ -1,116 +1,116 @@
1
- <!--
2
- The Head
3
- -->
4
-
5
- <head>
6
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7
- <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
8
-
9
- <!-- Allow having a localized datetime different from the appearance language -->
10
- {% if site.prefer_datetime_locale %}
11
- <meta name="prefer-datetime-locale" content="{{ site.prefer_datetime_locale }}">
12
- {% endif %}
13
-
14
- {% if page.layout == 'home' or page.layout == 'post' %}
15
-
16
- {% if site.google_analytics.pv.proxy_endpoint %}
17
- <meta name="pv-proxy-endpoint" content="{{ site.google_analytics.pv.proxy_endpoint }}">
18
- {% endif %}
19
-
20
- {% if site.google_analytics.pv.cache_path %}
21
- <meta name="pv-cache-path" content="{{ site.google_analytics.pv.cache_path | relative_url }}">
22
- {% endif %}
23
-
24
- {% endif %}
25
-
26
- {% capture seo_tags %}
27
- {% seo title=false %}
28
- {% endcapture %}
29
-
30
- {% if site.img_cdn and seo_tags contains 'og:image' %}
31
- {% assign properties = 'og:image,twitter:image' | split: ',' %}
32
-
33
- {% for prop in properties %}
34
- {% if site.img_cdn contains '//' %}
35
- <!-- `site.img_cdn` is a cross-origin URL -->
36
- {% capture target %}<meta property="{{ prop }}" content="{{ site.url }}{% endcapture %}
37
- {% capture replacement %}<meta property="{{ prop }}" content="{{ site.img_cdn }}{% endcapture %}
38
- {% else %}
39
- <!-- `site.img_cdn` is a local file path -->
40
- {% capture target %}<meta property="{{ prop }}" content="{{ site.url }}{{ site.baseurl }}{% endcapture %}
41
- {% assign replacement = target | append: site.img_cdn %}
42
- {% endif %}
43
-
44
- {% assign seo_tags = seo_tags | replace: target, replacement %}
45
-
46
- {% endfor %}
47
- {% endif %}
48
-
49
- {{ seo_tags }}
50
-
51
- <title>
52
- {%- unless page.layout == "home" -%}
53
- {{ page.title | append: " | "}}
54
- {%- endunless -%}
55
- {{ site.title }}
56
- </title>
57
-
58
- {% include favicons.html %}
59
-
60
- {% if site.resources.ignore_env != jekyll.environment and site.resources.self_hosted %}
61
-
62
- <link href="{{ site.data.assets[origin].webfonts | relative_url }}" rel="stylesheet">
63
-
64
- {% else %}
65
-
66
- {% for cdn in site.data.assets[origin].cdns %}
67
- <link rel="preconnect" href="{{ cdn.url }}" {{ cdn.args }}>
68
- <link rel="dns-prefetch" href="{{ cdn.url }}" {{ cdn.args }}>
69
- {% endfor %}
70
-
71
- <link rel="stylesheet" href="{{ site.data.assets[origin].webfonts | relative_url }}">
72
-
73
- {% endif %}
74
-
75
- <!-- GA -->
76
- {% if jekyll.environment == 'production'
77
- and site.google_analytics.id != empty and site.google_analytics.id %}
78
- <link rel="preconnect" href="https://www.google-analytics.com" crossorigin="use-credentials">
79
- <link rel="dns-prefetch" href="https://www.google-analytics.com">
80
-
81
- <link rel="preconnect" href="https://www.googletagmanager.com" crossorigin="anonymous">
82
- <link rel="dns-prefetch" href="https://www.googletagmanager.com">
83
-
84
- {% if site.google_analytics.pv.proxy_endpoint %}
85
- {% assign proxy_url = site.google_analytics.pv.proxy_endpoint
86
- | replace: "https://", "" | split: "/" | first | prepend: "https://" %}
87
- <link rel="preconnect" href="{{ proxy_url }}" crossorigin="use-credentials">
88
- <link rel="dns-prefetch" href="{{ proxy_url }}">
89
- {% endif %}
90
- {% endif %}
91
-
92
- <!-- Bootstrap -->
93
- <link rel="stylesheet" href="{{ site.data.assets[origin].bootstrap.css | relative_url}}">
94
-
95
- <!-- Font Awesome -->
96
- <link rel="stylesheet" href="{{ site.data.assets[origin].fontawesome.css | relative_url }}">
97
-
98
- <link rel="stylesheet" href="{{ '/assets/css/style.css' | relative_url }}">
99
-
100
- {% if site.toc and page.toc %}
101
- <link rel="stylesheet" href="{{ site.data.assets[origin].bootstrap-toc.css | relative_url }}">
102
- {% endif %}
103
-
104
- {% if page.layout == 'page' or page.layout == 'post' %}
105
- <!-- Manific Popup -->
106
- <link rel="stylesheet" href="{{ site.data.assets[origin].magnific-popup.css | relative_url }}">
107
- {% endif %}
108
-
109
- <!-- JavaScript -->
110
-
111
- <script src="{{ site.data.assets[origin].jquery.js | relative_url }}"></script>
112
-
113
- {% unless site.theme_mode %}
114
- {% include mode-toggle.html %}
115
- {% endunless %}
116
- </head>
1
+ <!--
2
+ The Head
3
+ -->
4
+
5
+ <head>
6
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
8
+
9
+ <!-- Allow having a localized datetime different from the appearance language -->
10
+ {% if site.prefer_datetime_locale %}
11
+ <meta name="prefer-datetime-locale" content="{{ site.prefer_datetime_locale }}">
12
+ {% endif %}
13
+
14
+ {% if page.layout == 'home' or page.layout == 'post' %}
15
+
16
+ {% if site.google_analytics.pv.proxy_endpoint %}
17
+ <meta name="pv-proxy-endpoint" content="{{ site.google_analytics.pv.proxy_endpoint }}">
18
+ {% endif %}
19
+
20
+ {% if site.google_analytics.pv.cache_path %}
21
+ <meta name="pv-cache-path" content="{{ site.google_analytics.pv.cache_path | relative_url }}">
22
+ {% endif %}
23
+
24
+ {% endif %}
25
+
26
+ {% capture seo_tags %}
27
+ {% seo title=false %}
28
+ {% endcapture %}
29
+
30
+ {% if site.img_cdn and seo_tags contains 'og:image' %}
31
+ {% assign properties = 'og:image,twitter:image' | split: ',' %}
32
+
33
+ {% for prop in properties %}
34
+ {% if site.img_cdn contains '//' %}
35
+ <!-- `site.img_cdn` is a cross-origin URL -->
36
+ {% capture target %}<meta property="{{ prop }}" content="{{ site.url }}{% endcapture %}
37
+ {% capture replacement %}<meta property="{{ prop }}" content="{{ site.img_cdn }}{% endcapture %}
38
+ {% else %}
39
+ <!-- `site.img_cdn` is a local file path -->
40
+ {% capture target %}<meta property="{{ prop }}" content="{{ site.url }}{{ site.baseurl }}{% endcapture %}
41
+ {% assign replacement = target | append: site.img_cdn %}
42
+ {% endif %}
43
+
44
+ {% assign seo_tags = seo_tags | replace: target, replacement %}
45
+
46
+ {% endfor %}
47
+ {% endif %}
48
+
49
+ {{ seo_tags }}
50
+
51
+ <title>
52
+ {%- unless page.layout == "home" -%}
53
+ {{ page.title | append: " | "}}
54
+ {%- endunless -%}
55
+ {{ site.title }}
56
+ </title>
57
+
58
+ {% include favicons.html %}
59
+
60
+ {% if site.resources.ignore_env != jekyll.environment and site.resources.self_hosted %}
61
+
62
+ <link href="{{ site.data.assets[origin].webfonts | relative_url }}" rel="stylesheet">
63
+
64
+ {% else %}
65
+
66
+ {% for cdn in site.data.assets[origin].cdns %}
67
+ <link rel="preconnect" href="{{ cdn.url }}" {{ cdn.args }}>
68
+ <link rel="dns-prefetch" href="{{ cdn.url }}" {{ cdn.args }}>
69
+ {% endfor %}
70
+
71
+ <link rel="stylesheet" href="{{ site.data.assets[origin].webfonts | relative_url }}">
72
+
73
+ {% endif %}
74
+
75
+ <!-- GA -->
76
+ {% if jekyll.environment == 'production'
77
+ and site.google_analytics.id != empty and site.google_analytics.id %}
78
+ <link rel="preconnect" href="https://www.google-analytics.com" crossorigin="use-credentials">
79
+ <link rel="dns-prefetch" href="https://www.google-analytics.com">
80
+
81
+ <link rel="preconnect" href="https://www.googletagmanager.com" crossorigin="anonymous">
82
+ <link rel="dns-prefetch" href="https://www.googletagmanager.com">
83
+
84
+ {% if site.google_analytics.pv.proxy_endpoint %}
85
+ {% assign proxy_url = site.google_analytics.pv.proxy_endpoint
86
+ | replace: "https://", "" | split: "/" | first | prepend: "https://" %}
87
+ <link rel="preconnect" href="{{ proxy_url }}" crossorigin="use-credentials">
88
+ <link rel="dns-prefetch" href="{{ proxy_url }}">
89
+ {% endif %}
90
+ {% endif %}
91
+
92
+ <!-- Bootstrap -->
93
+ <link rel="stylesheet" href="{{ site.data.assets[origin].bootstrap.css | relative_url}}">
94
+
95
+ <!-- Font Awesome -->
96
+ <link rel="stylesheet" href="{{ site.data.assets[origin].fontawesome.css | relative_url }}">
97
+
98
+ <link rel="stylesheet" href="{{ '/assets/css/style.css' | relative_url }}">
99
+
100
+ {% if site.toc and page.toc %}
101
+ <link rel="stylesheet" href="{{ site.data.assets[origin].bootstrap-toc.css | relative_url }}">
102
+ {% endif %}
103
+
104
+ {% if page.layout == 'page' or page.layout == 'post' %}
105
+ <!-- Manific Popup -->
106
+ <link rel="stylesheet" href="{{ site.data.assets[origin].magnific-popup.css | relative_url }}">
107
+ {% endif %}
108
+
109
+ <!-- JavaScript -->
110
+
111
+ <script src="{{ site.data.assets[origin].jquery.js | relative_url }}"></script>
112
+
113
+ {% unless site.theme_mode %}
114
+ {% include mode-toggle.html %}
115
+ {% endunless %}
116
+ </head>