jekyll-theme-abd3lraouf 5.2.6 → 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 (95) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +21 -21
  3. data/README.md +105 -105
  4. data/_data/assets/cross_origin.yml +62 -62
  5. data/_data/assets/self_host.yml +51 -51
  6. data/_data/authors.yml +17 -17
  7. data/_data/contact.yml +30 -30
  8. data/_data/locales/bg-BG.yml +83 -83
  9. data/_data/locales/en.yml +83 -83
  10. data/_data/locales/es-ES.yml +79 -79
  11. data/_data/locales/fr-FR.yml +79 -79
  12. data/_data/locales/hu-HU.yml +81 -81
  13. data/_data/locales/id-ID.yml +79 -79
  14. data/_data/locales/ko-KR.yml +79 -79
  15. data/_data/locales/my-MM.yml +79 -79
  16. data/_data/locales/pt-BR.yml +79 -79
  17. data/_data/locales/ru-RU.yml +79 -79
  18. data/_data/locales/tr-TR.yml +79 -79
  19. data/_data/locales/uk-UA.yml +79 -79
  20. data/_data/locales/vi-VN.yml +77 -77
  21. data/_data/locales/zh-CN.yml +78 -78
  22. data/_data/share.yml +27 -27
  23. data/_includes/assets-origin.html +12 -12
  24. data/_includes/comments/disqus.html +54 -54
  25. data/_includes/comments/giscus.html +56 -56
  26. data/_includes/comments/utterances.html +51 -51
  27. data/_includes/comments.html +5 -5
  28. data/_includes/datetime.html +21 -21
  29. data/_includes/favicons.html +17 -17
  30. data/_includes/footer.html +17 -36
  31. data/_includes/google-analytics.html +14 -14
  32. data/_includes/head.html +116 -116
  33. data/_includes/js-selector.html +104 -104
  34. data/_includes/jsdelivr-combine.html +32 -32
  35. data/_includes/lang.html +8 -8
  36. data/_includes/language-alias.html +70 -70
  37. data/_includes/mermaid.html +57 -57
  38. data/_includes/mode-toggle.html +129 -129
  39. data/_includes/no-linenos.html +10 -10
  40. data/_includes/post-nav.html +30 -30
  41. data/_includes/post-paginator.html +88 -88
  42. data/_includes/post-sharing.html +27 -27
  43. data/_includes/read-time.html +30 -30
  44. data/_includes/refactor-content.html +282 -282
  45. data/_includes/related-posts.html +103 -103
  46. data/_includes/search-loader.html +46 -46
  47. data/_includes/search-results.html +11 -11
  48. data/_includes/sidebar.html +93 -93
  49. data/_includes/toc.html +16 -16
  50. data/_includes/topbar.html +70 -70
  51. data/_includes/trending-tags.html +50 -50
  52. data/_includes/update-list.html +40 -40
  53. data/_layouts/archives.html +48 -48
  54. data/_layouts/categories.html +120 -120
  55. data/_layouts/category.html +24 -24
  56. data/_layouts/compress.html +10 -10
  57. data/_layouts/default.html +74 -74
  58. data/_layouts/home.html +103 -103
  59. data/_layouts/page.html +64 -64
  60. data/_layouts/post.html +159 -159
  61. data/_layouts/tag.html +23 -23
  62. data/_layouts/tags.html +23 -23
  63. data/_plugins/posts-lastmod-hook.rb +14 -14
  64. data/_sass/addon/commons.scss +1678 -1680
  65. data/_sass/addon/module.scss +151 -151
  66. data/_sass/addon/syntax.scss +289 -289
  67. data/_sass/addon/variables.scss +34 -34
  68. data/_sass/colors/dark-syntax.scss +88 -88
  69. data/_sass/colors/dark-typography.scss +157 -157
  70. data/_sass/colors/light-syntax.scss +84 -84
  71. data/_sass/colors/light-typography.scss +94 -94
  72. data/_sass/layout/archives.scss +147 -147
  73. data/_sass/layout/categories.scss +67 -67
  74. data/_sass/layout/category-tag.scss +73 -73
  75. data/_sass/layout/home.scss +184 -184
  76. data/_sass/layout/post.scss +369 -369
  77. data/_sass/layout/tags.scss +19 -19
  78. data/_sass/variables-hook.scss +3 -3
  79. data/_tabs/about.md +8 -8
  80. data/_tabs/archives.md +7 -7
  81. data/_tabs/categories.md +6 -6
  82. data/_tabs/tags.md +6 -6
  83. data/assets/404.html +16 -16
  84. data/assets/css/style.scss +12 -12
  85. data/assets/feed.xml +61 -61
  86. data/assets/img/favicons/browserconfig.xml +13 -13
  87. data/assets/img/favicons/site.webmanifest +26 -26
  88. data/assets/js/data/search.json +18 -18
  89. data/assets/js/data/swcache.js +55 -55
  90. data/assets/js/pwa/app.js +47 -47
  91. data/assets/js/pwa/sw.js +89 -89
  92. data/assets/js/pwa/unregister.js +12 -12
  93. data/assets/robots.txt +10 -10
  94. data/index.html +4 -4
  95. metadata +7 -7
@@ -1,129 +1,129 @@
1
- <!--
2
- Switch the mode between dark and light.
3
- -->
4
-
5
- <script type="text/javascript">
6
- class ModeToggle {
7
- static get MODE_KEY() { return "mode"; }
8
- static get MODE_ATTR() { return "data-mode"; }
9
- static get DARK_MODE() { return "dark"; }
10
- static get LIGHT_MODE() { return "light"; }
11
- static get ID() { return "mode-toggle"; }
12
-
13
- constructor() {
14
- if (this.hasMode) {
15
- if (this.isDarkMode) {
16
- if (!this.isSysDarkPrefer) {
17
- this.setDark();
18
- }
19
- } else {
20
- if (this.isSysDarkPrefer) {
21
- this.setLight();
22
- }
23
- }
24
- }
25
-
26
- let self = this;
27
-
28
- /* always follow the system prefers */
29
- this.sysDarkPrefers.addEventListener("change", () => {
30
- if (self.hasMode) {
31
- if (self.isDarkMode) {
32
- if (!self.isSysDarkPrefer) {
33
- self.setDark();
34
- }
35
-
36
- } else {
37
- if (self.isSysDarkPrefer) {
38
- self.setLight();
39
- }
40
- }
41
-
42
- self.clearMode();
43
- }
44
-
45
- self.notify();
46
-
47
- });
48
-
49
- } /* constructor() */
50
-
51
- get sysDarkPrefers() { return window.matchMedia("(prefers-color-scheme: dark)"); }
52
-
53
- get isSysDarkPrefer() { return this.sysDarkPrefers.matches; }
54
-
55
- get isDarkMode() { return this.mode === ModeToggle.DARK_MODE; }
56
-
57
- get isLightMode() { return this.mode === ModeToggle.LIGHT_MODE; }
58
-
59
- get hasMode() { return this.mode != null; }
60
-
61
- get mode() { return sessionStorage.getItem(ModeToggle.MODE_KEY); }
62
-
63
- /* get the current mode on screen */
64
- get modeStatus() {
65
- if (this.isDarkMode
66
- || (!this.hasMode && this.isSysDarkPrefer)) {
67
- return ModeToggle.DARK_MODE;
68
- } else {
69
- return ModeToggle.LIGHT_MODE;
70
- }
71
- }
72
-
73
- setDark() {
74
- $('html').attr(ModeToggle.MODE_ATTR, ModeToggle.DARK_MODE);
75
- sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.DARK_MODE);
76
- }
77
-
78
- setLight() {
79
- $('html').attr(ModeToggle.MODE_ATTR, ModeToggle.LIGHT_MODE);
80
- sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.LIGHT_MODE);
81
- }
82
-
83
- clearMode() {
84
- $('html').removeAttr(ModeToggle.MODE_ATTR);
85
- sessionStorage.removeItem(ModeToggle.MODE_KEY);
86
- }
87
-
88
- /* Notify another plugins that the theme mode has changed */
89
- notify() {
90
- window.postMessage({
91
- direction: ModeToggle.ID,
92
- message: this.modeStatus
93
- }, "*");
94
- }
95
-
96
- } /* ModeToggle */
97
-
98
- const toggle = new ModeToggle();
99
-
100
- function flipMode() {
101
- if (toggle.hasMode) {
102
- if (toggle.isSysDarkPrefer) {
103
- if (toggle.isLightMode) {
104
- toggle.clearMode();
105
- } else {
106
- toggle.setLight();
107
- }
108
-
109
- } else {
110
- if (toggle.isDarkMode) {
111
- toggle.clearMode();
112
- } else {
113
- toggle.setDark();
114
- }
115
- }
116
-
117
- } else {
118
- if (toggle.isSysDarkPrefer) {
119
- toggle.setLight();
120
- } else {
121
- toggle.setDark();
122
- }
123
- }
124
-
125
- toggle.notify();
126
-
127
- } /* flipMode() */
128
-
129
- </script>
1
+ <!--
2
+ Switch the mode between dark and light.
3
+ -->
4
+
5
+ <script type="text/javascript">
6
+ class ModeToggle {
7
+ static get MODE_KEY() { return "mode"; }
8
+ static get MODE_ATTR() { return "data-mode"; }
9
+ static get DARK_MODE() { return "dark"; }
10
+ static get LIGHT_MODE() { return "light"; }
11
+ static get ID() { return "mode-toggle"; }
12
+
13
+ constructor() {
14
+ if (this.hasMode) {
15
+ if (this.isDarkMode) {
16
+ if (!this.isSysDarkPrefer) {
17
+ this.setDark();
18
+ }
19
+ } else {
20
+ if (this.isSysDarkPrefer) {
21
+ this.setLight();
22
+ }
23
+ }
24
+ }
25
+
26
+ let self = this;
27
+
28
+ /* always follow the system prefers */
29
+ this.sysDarkPrefers.addEventListener("change", () => {
30
+ if (self.hasMode) {
31
+ if (self.isDarkMode) {
32
+ if (!self.isSysDarkPrefer) {
33
+ self.setDark();
34
+ }
35
+
36
+ } else {
37
+ if (self.isSysDarkPrefer) {
38
+ self.setLight();
39
+ }
40
+ }
41
+
42
+ self.clearMode();
43
+ }
44
+
45
+ self.notify();
46
+
47
+ });
48
+
49
+ } /* constructor() */
50
+
51
+ get sysDarkPrefers() { return window.matchMedia("(prefers-color-scheme: dark)"); }
52
+
53
+ get isSysDarkPrefer() { return this.sysDarkPrefers.matches; }
54
+
55
+ get isDarkMode() { return this.mode === ModeToggle.DARK_MODE; }
56
+
57
+ get isLightMode() { return this.mode === ModeToggle.LIGHT_MODE; }
58
+
59
+ get hasMode() { return this.mode != null; }
60
+
61
+ get mode() { return sessionStorage.getItem(ModeToggle.MODE_KEY); }
62
+
63
+ /* get the current mode on screen */
64
+ get modeStatus() {
65
+ if (this.isDarkMode
66
+ || (!this.hasMode && this.isSysDarkPrefer)) {
67
+ return ModeToggle.DARK_MODE;
68
+ } else {
69
+ return ModeToggle.LIGHT_MODE;
70
+ }
71
+ }
72
+
73
+ setDark() {
74
+ $('html').attr(ModeToggle.MODE_ATTR, ModeToggle.DARK_MODE);
75
+ sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.DARK_MODE);
76
+ }
77
+
78
+ setLight() {
79
+ $('html').attr(ModeToggle.MODE_ATTR, ModeToggle.LIGHT_MODE);
80
+ sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.LIGHT_MODE);
81
+ }
82
+
83
+ clearMode() {
84
+ $('html').removeAttr(ModeToggle.MODE_ATTR);
85
+ sessionStorage.removeItem(ModeToggle.MODE_KEY);
86
+ }
87
+
88
+ /* Notify another plugins that the theme mode has changed */
89
+ notify() {
90
+ window.postMessage({
91
+ direction: ModeToggle.ID,
92
+ message: this.modeStatus
93
+ }, "*");
94
+ }
95
+
96
+ } /* ModeToggle */
97
+
98
+ const toggle = new ModeToggle();
99
+
100
+ function flipMode() {
101
+ if (toggle.hasMode) {
102
+ if (toggle.isSysDarkPrefer) {
103
+ if (toggle.isLightMode) {
104
+ toggle.clearMode();
105
+ } else {
106
+ toggle.setLight();
107
+ }
108
+
109
+ } else {
110
+ if (toggle.isDarkMode) {
111
+ toggle.clearMode();
112
+ } else {
113
+ toggle.setDark();
114
+ }
115
+ }
116
+
117
+ } else {
118
+ if (toggle.isSysDarkPrefer) {
119
+ toggle.setLight();
120
+ } else {
121
+ toggle.setDark();
122
+ }
123
+ }
124
+
125
+ toggle.notify();
126
+
127
+ } /* flipMode() */
128
+
129
+ </script>
@@ -1,10 +1,10 @@
1
- {% comment %}
2
- Remove the line number of the code snippet.
3
- {% endcomment %}
4
-
5
- {% assign content = include.content %}
6
-
7
- {% if content contains '<td class="rouge-gutter gl"><pre class="lineno">' %}
8
- {% assign content = content | replace: '<td class="rouge-gutter gl"><pre class="lineno">', '<!-- <td class="rouge-gutter gl"><pre class="lineno">'%}
9
- {% assign content = content | replace: '</td><td class="rouge-code">', '</td> --><td class="rouge-code">' %}
10
- {% endif %}
1
+ {% comment %}
2
+ Remove the line number of the code snippet.
3
+ {% endcomment %}
4
+
5
+ {% assign content = include.content %}
6
+
7
+ {% if content contains '<td class="rouge-gutter gl"><pre class="lineno">' %}
8
+ {% assign content = content | replace: '<td class="rouge-gutter gl"><pre class="lineno">', '<!-- <td class="rouge-gutter gl"><pre class="lineno">'%}
9
+ {% assign content = content | replace: '</td><td class="rouge-code">', '</td> --><td class="rouge-code">' %}
10
+ {% endif %}
@@ -1,30 +1,30 @@
1
- <!--
2
- Navigation buttons at the bottom of the post.
3
- -->
4
-
5
- <div class="post-navigation d-flex justify-content-between">
6
- {% if page.previous.url %}
7
- <a href="{{ site.baseurl }}{{ page.previous.url }}" class="btn btn-outline-primary"
8
- prompt="{{ site.data.locales[lang].post.button.previous }}">
9
- <p>{{ page.previous.title }}</p>
10
- </a>
11
- {% else %}
12
- <div class="btn btn-outline-primary disabled"
13
- prompt="{{ site.data.locales[lang].post.button.previous }}">
14
- <p>-</p>
15
- </div>
16
- {% endif %}
17
-
18
- {% if page.next.url %}
19
- <a href="{{ site.baseurl }}{{page.next.url}}" class="btn btn-outline-primary"
20
- prompt="{{ site.data.locales[lang].post.button.next }}">
21
- <p>{{ page.next.title }}</p>
22
- </a>
23
- {% else %}
24
- <div class="btn btn-outline-primary disabled"
25
- prompt="{{ site.data.locales[lang].post.button.next }}">
26
- <p>-</p>
27
- </div>
28
- {% endif %}
29
-
30
- </div>
1
+ <!--
2
+ Navigation buttons at the bottom of the post.
3
+ -->
4
+
5
+ <div class="post-navigation d-flex justify-content-between">
6
+ {% if page.previous.url %}
7
+ <a href="{{ site.baseurl }}{{ page.previous.url }}" class="btn btn-outline-primary"
8
+ prompt="{{ site.data.locales[lang].post.button.previous }}">
9
+ <p>{{ page.previous.title }}</p>
10
+ </a>
11
+ {% else %}
12
+ <div class="btn btn-outline-primary disabled"
13
+ prompt="{{ site.data.locales[lang].post.button.previous }}">
14
+ <p>-</p>
15
+ </div>
16
+ {% endif %}
17
+
18
+ {% if page.next.url %}
19
+ <a href="{{ site.baseurl }}{{page.next.url}}" class="btn btn-outline-primary"
20
+ prompt="{{ site.data.locales[lang].post.button.next }}">
21
+ <p>{{ page.next.title }}</p>
22
+ </a>
23
+ {% else %}
24
+ <div class="btn btn-outline-primary disabled"
25
+ prompt="{{ site.data.locales[lang].post.button.next }}">
26
+ <p>-</p>
27
+ </div>
28
+ {% endif %}
29
+
30
+ </div>
@@ -1,88 +1,88 @@
1
- <!--
2
- The paginator for post list on HomgPage.
3
- -->
4
-
5
- <ul class="pagination align-items-center mt-4 mb-5 pl-lg-2">
6
- <!-- left arrow -->
7
- {% if paginator.previous_page %}
8
- {% assign prev_url = paginator.previous_page_path | relative_url %}
9
- {% else %}
10
- {% assign prev_url = "#" %}
11
- {% endif %}
12
-
13
- <li class="page-item {% unless paginator.previous_page %}disabled{% endunless %}">
14
- <a class="page-link btn-box-shadow" href="{{ prev_url }}" aria-label="previous-page">
15
- <i class="fas fa-angle-left"></i>
16
- </a>
17
- </li>
18
-
19
- <!-- page numbers -->
20
- {% assign left_ellipsis = false %}
21
- {% assign right_ellipsis = false %}
22
-
23
- {% for i in (1..paginator.total_pages) %}
24
-
25
- {% assign pre = paginator.page | minus: 1 %}
26
- {% assign next = paginator.page | plus: 1 %}
27
- {% assign pre_less = pre | minus: 1 %}
28
- {% assign next_more = next | plus: 1 %}
29
- {% assign show = false %}
30
-
31
- {% if paginator.page == 1 %}
32
- {% if i <= 3 or i == paginator.total_pages %}
33
- {% assign show = true %}
34
- {% endif %}
35
- {% elsif paginator.page == paginator.total_pages %}
36
- {% if i == 1 or i >= pre_less %}
37
- {% assign show = true %}
38
- {% endif %}
39
- {% else %}
40
- {% if i == 1 or i == paginator.total_pages%}
41
- {% assign show = true %}
42
- {% elsif i >= pre and i <= next %}
43
- {% assign show = true %}
44
- {% endif %}
45
- {% endif %}
46
-
47
- {% if show %}
48
- <!-- show number -->
49
- <li class="page-item {% if i == paginator.page %} active{% endif %}">
50
- <a class="page-link btn-box-shadow" href="{% if i > 1 %}{{ site.paginate_path | replace: ':num', i | relative_url }}{% else %}{{ '/' | relative_url }}{% endif %}">{{ i }}</a>
51
- </li>
52
- {% else %}
53
- <!-- hide number -->
54
- {% if i < pre and left_ellipsis == false %}
55
- <li class="page-item disabled">
56
- <span class="page-link btn-box-shadow">...</span>
57
- </li>
58
- {% assign left_ellipsis = true %}
59
- {% elsif i > next and right_ellipsis == false %}
60
- <li class="page-item disabled">
61
- <span class="page-link btn-box-shadow">...</span>
62
- </li>
63
- {% assign right_ellipsis = true %}
64
- {% endif %}
65
- {% endif %}
66
-
67
- {% endfor %}
68
-
69
- <!-- mobile pagination -->
70
- <li class="page-index align-middle">
71
- <span>{{ paginator.page }}</span>
72
- <span class="text-muted">/ {{ paginator.total_pages }}</span>
73
- </li>
74
-
75
- <!-- right arrow -->
76
- {% if paginator.next_page_path %}
77
- {% assign next_url = paginator.next_page_path | relative_url %}
78
- {% else %}
79
- {% assign next_url = "#" %}
80
- {% endif %}
81
-
82
- <li class="page-item {% unless paginator.next_page_path %}disabled{% endunless %}">
83
- <a class="page-link btn-box-shadow" href="{{ next_url }}" aria-label="next-page">
84
- <i class="fas fa-angle-right"></i>
85
- </a>
86
- </li>
87
-
88
- </ul> <!-- .pagination -->
1
+ <!--
2
+ The paginator for post list on HomgPage.
3
+ -->
4
+
5
+ <ul class="pagination align-items-center mt-4 mb-5 pl-lg-2">
6
+ <!-- left arrow -->
7
+ {% if paginator.previous_page %}
8
+ {% assign prev_url = paginator.previous_page_path | relative_url %}
9
+ {% else %}
10
+ {% assign prev_url = "#" %}
11
+ {% endif %}
12
+
13
+ <li class="page-item {% unless paginator.previous_page %}disabled{% endunless %}">
14
+ <a class="page-link btn-box-shadow" href="{{ prev_url }}" aria-label="previous-page">
15
+ <i class="fas fa-angle-left"></i>
16
+ </a>
17
+ </li>
18
+
19
+ <!-- page numbers -->
20
+ {% assign left_ellipsis = false %}
21
+ {% assign right_ellipsis = false %}
22
+
23
+ {% for i in (1..paginator.total_pages) %}
24
+
25
+ {% assign pre = paginator.page | minus: 1 %}
26
+ {% assign next = paginator.page | plus: 1 %}
27
+ {% assign pre_less = pre | minus: 1 %}
28
+ {% assign next_more = next | plus: 1 %}
29
+ {% assign show = false %}
30
+
31
+ {% if paginator.page == 1 %}
32
+ {% if i <= 3 or i == paginator.total_pages %}
33
+ {% assign show = true %}
34
+ {% endif %}
35
+ {% elsif paginator.page == paginator.total_pages %}
36
+ {% if i == 1 or i >= pre_less %}
37
+ {% assign show = true %}
38
+ {% endif %}
39
+ {% else %}
40
+ {% if i == 1 or i == paginator.total_pages%}
41
+ {% assign show = true %}
42
+ {% elsif i >= pre and i <= next %}
43
+ {% assign show = true %}
44
+ {% endif %}
45
+ {% endif %}
46
+
47
+ {% if show %}
48
+ <!-- show number -->
49
+ <li class="page-item {% if i == paginator.page %} active{% endif %}">
50
+ <a class="page-link btn-box-shadow" href="{% if i > 1 %}{{ site.paginate_path | replace: ':num', i | relative_url }}{% else %}{{ '/' | relative_url }}{% endif %}">{{ i }}</a>
51
+ </li>
52
+ {% else %}
53
+ <!-- hide number -->
54
+ {% if i < pre and left_ellipsis == false %}
55
+ <li class="page-item disabled">
56
+ <span class="page-link btn-box-shadow">...</span>
57
+ </li>
58
+ {% assign left_ellipsis = true %}
59
+ {% elsif i > next and right_ellipsis == false %}
60
+ <li class="page-item disabled">
61
+ <span class="page-link btn-box-shadow">...</span>
62
+ </li>
63
+ {% assign right_ellipsis = true %}
64
+ {% endif %}
65
+ {% endif %}
66
+
67
+ {% endfor %}
68
+
69
+ <!-- mobile pagination -->
70
+ <li class="page-index align-middle">
71
+ <span>{{ paginator.page }}</span>
72
+ <span class="text-muted">/ {{ paginator.total_pages }}</span>
73
+ </li>
74
+
75
+ <!-- right arrow -->
76
+ {% if paginator.next_page_path %}
77
+ {% assign next_url = paginator.next_page_path | relative_url %}
78
+ {% else %}
79
+ {% assign next_url = "#" %}
80
+ {% endif %}
81
+
82
+ <li class="page-item {% unless paginator.next_page_path %}disabled{% endunless %}">
83
+ <a class="page-link btn-box-shadow" href="{{ next_url }}" aria-label="next-page">
84
+ <i class="fas fa-angle-right"></i>
85
+ </a>
86
+ </li>
87
+
88
+ </ul> <!-- .pagination -->
@@ -1,27 +1,27 @@
1
- <!--
2
- Post sharing snippet
3
- -->
4
-
5
- <div class="share-wrapper">
6
- <span class="share-label text-muted mr-1">{{ site.data.locales[lang].post.share }}</span>
7
- <span class="share-icons">
8
- {% capture title %}{{ page.title }} - {{ site.title }}{% endcapture %}
9
- {% assign title = title | url_encode %}
10
- {% assign url = page.url | absolute_url | url_encode %}
11
-
12
- {% for share in site.data.share.platforms %}
13
- {% assign link = share.link | replace: 'TITLE', title | replace: 'URL', url %}
14
- <a href="{{ link }}" data-toggle="tooltip" data-placement="top"
15
- title="{{ share.type }}" target="_blank" rel="noopener" aria-label="{{ share.type }}">
16
- <i class="fa-fw {{ share.icon }}"></i>
17
- </a>
18
- {% endfor %}
19
-
20
- <i id="copy-link" class="fa-fw fas fa-link small"
21
- data-toggle="tooltip" data-placement="top"
22
- title="{{ site.data.locales[lang].post.button.share_link.title }}"
23
- data-title-succeed="{{ site.data.locales[lang].post.button.share_link.succeed }}">
24
- </i>
25
-
26
- </span>
27
- </div>
1
+ <!--
2
+ Post sharing snippet
3
+ -->
4
+
5
+ <div class="share-wrapper">
6
+ <span class="share-label text-muted mr-1">{{ site.data.locales[lang].post.share }}</span>
7
+ <span class="share-icons">
8
+ {% capture title %}{{ page.title }} - {{ site.title }}{% endcapture %}
9
+ {% assign title = title | url_encode %}
10
+ {% assign url = page.url | absolute_url | url_encode %}
11
+
12
+ {% for share in site.data.share.platforms %}
13
+ {% assign link = share.link | replace: 'TITLE', title | replace: 'URL', url %}
14
+ <a href="{{ link }}" data-toggle="tooltip" data-placement="top"
15
+ title="{{ share.type }}" target="_blank" rel="noopener" aria-label="{{ share.type }}">
16
+ <i class="fa-fw {{ share.icon }}"></i>
17
+ </a>
18
+ {% endfor %}
19
+
20
+ <i id="copy-link" class="fa-fw fas fa-link small"
21
+ data-toggle="tooltip" data-placement="top"
22
+ title="{{ site.data.locales[lang].post.button.share_link.title }}"
23
+ data-title-succeed="{{ site.data.locales[lang].post.button.share_link.succeed }}">
24
+ </i>
25
+
26
+ </span>
27
+ </div>
@@ -1,30 +1,30 @@
1
- <!--
2
- Calculate the post's reading time, and display the word count in tooltip
3
- -->
4
-
5
- {% assign words = include.content | strip_html | number_of_words: "auto" %}
6
-
7
- <!-- words per minute -->
8
-
9
- {% assign wpm = 180 %}
10
- {% assign min_time = 1 %}
11
-
12
- {% assign read_time = words | divided_by: wpm %}
13
-
14
- {% unless read_time > 0 %}
15
- {% assign read_time = min_time %}
16
- {% endunless %}
17
-
18
- {% capture read_prompt %}
19
- {{- site.data.locales[lang].post.read_time.prompt -}}
20
- {% endcapture %}
21
-
22
- <!-- return element -->
23
- <span class="readtime" data-toggle="tooltip" data-placement="bottom"
24
- title="{{ words }} {{ site.data.locales[lang].post.words }}">
25
- <em>{{- read_time -}}{{" "}}{{- site.data.locales[lang].post.read_time.unit -}}</em>
26
- {%- if include.prompt -%}
27
- {%- assign _prompt_words = read_prompt | number_of_words: 'auto' -%}
28
- {%- unless _prompt_words > 1 -%}{{ " " }}{%- endunless -%}{{ read_prompt }}
29
- {%- endif -%}
30
- </span>
1
+ <!--
2
+ Calculate the post's reading time, and display the word count in tooltip
3
+ -->
4
+
5
+ {% assign words = include.content | strip_html | number_of_words: "auto" %}
6
+
7
+ <!-- words per minute -->
8
+
9
+ {% assign wpm = 180 %}
10
+ {% assign min_time = 1 %}
11
+
12
+ {% assign read_time = words | divided_by: wpm %}
13
+
14
+ {% unless read_time > 0 %}
15
+ {% assign read_time = min_time %}
16
+ {% endunless %}
17
+
18
+ {% capture read_prompt %}
19
+ {{- site.data.locales[lang].post.read_time.prompt -}}
20
+ {% endcapture %}
21
+
22
+ <!-- return element -->
23
+ <span class="readtime" data-toggle="tooltip" data-placement="bottom"
24
+ title="{{ words }} {{ site.data.locales[lang].post.words }}">
25
+ <em>{{- read_time -}}{{" "}}{{- site.data.locales[lang].post.read_time.unit -}}</em>
26
+ {%- if include.prompt -%}
27
+ {%- assign _prompt_words = read_prompt | number_of_words: 'auto' -%}
28
+ {%- unless _prompt_words > 1 -%}{{ " " }}{%- endunless -%}{{ read_prompt }}
29
+ {%- endif -%}
30
+ </span>