jekyll-theme-chirpy 5.0.2 → 6.2.2

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 (114) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +64 -74
  3. data/_data/locales/ar.yml +91 -0
  4. data/_data/locales/bg-BG.yml +81 -0
  5. data/_data/locales/cs-CZ.yml +89 -0
  6. data/_data/locales/de-DE.yml +80 -0
  7. data/_data/locales/el-GR.yml +91 -0
  8. data/_data/locales/en.yml +23 -23
  9. data/_data/locales/es-ES.yml +77 -0
  10. data/_data/locales/fi-FI.yml +90 -0
  11. data/_data/locales/fr-FR.yml +77 -0
  12. data/_data/locales/hu-HU.yml +79 -0
  13. data/_data/locales/id-ID.yml +5 -19
  14. data/_data/locales/it-IT.yml +90 -0
  15. data/_data/locales/ko-KR.yml +12 -19
  16. data/_data/locales/my-MM.yml +77 -0
  17. data/_data/locales/pt-BR.yml +77 -0
  18. data/_data/locales/ru-RU.yml +77 -0
  19. data/_data/locales/sl-SI.yml +91 -0
  20. data/_data/locales/sv-SE.yml +91 -0
  21. data/_data/locales/th.yml +91 -0
  22. data/_data/locales/tr-TR.yml +77 -0
  23. data/_data/locales/uk-UA.yml +77 -0
  24. data/_data/locales/vi-VN.yml +76 -0
  25. data/_data/locales/zh-CN.yml +13 -20
  26. data/_data/locales/zh-TW.yml +83 -0
  27. data/_data/origin/basic.yml +48 -0
  28. data/_data/origin/cors.yml +59 -0
  29. data/_includes/comments/disqus.html +27 -31
  30. data/_includes/comments/giscus.html +64 -0
  31. data/_includes/comments/utterances.html +2 -2
  32. data/_includes/datetime.html +20 -0
  33. data/_includes/embed/twitch.html +4 -0
  34. data/_includes/embed/youtube.html +6 -0
  35. data/_includes/footer.html +31 -32
  36. data/_includes/head.html +66 -46
  37. data/_includes/js-selector.html +83 -45
  38. data/_includes/jsdelivr-combine.html +26 -0
  39. data/_includes/lang.html +1 -1
  40. data/_includes/mermaid.html +30 -29
  41. data/_includes/metadata-hook.html +1 -0
  42. data/_includes/mode-toggle.html +66 -51
  43. data/_includes/notification.html +24 -0
  44. data/_includes/origin-type.html +13 -0
  45. data/_includes/post-nav.html +26 -22
  46. data/_includes/post-paginator.html +79 -76
  47. data/_includes/post-sharing.html +27 -16
  48. data/_includes/read-time.html +17 -10
  49. data/_includes/refactor-content.html +129 -73
  50. data/_includes/related-posts.html +48 -58
  51. data/_includes/search-loader.html +32 -31
  52. data/_includes/search-results.html +4 -5
  53. data/_includes/sidebar.html +79 -67
  54. data/_includes/toc.html +4 -7
  55. data/_includes/topbar.html +62 -56
  56. data/_includes/trending-tags.html +15 -19
  57. data/_includes/update-list.html +14 -15
  58. data/_layouts/archives.html +25 -29
  59. data/_layouts/categories.html +97 -58
  60. data/_layouts/category.html +8 -10
  61. data/_layouts/default.html +67 -31
  62. data/_layouts/home.html +67 -56
  63. data/_layouts/page.html +20 -58
  64. data/_layouts/post.html +85 -94
  65. data/_layouts/tag.html +8 -10
  66. data/_layouts/tags.html +6 -5
  67. data/_sass/addon/commons.scss +679 -878
  68. data/_sass/addon/module.scss +70 -23
  69. data/_sass/addon/syntax.scss +127 -110
  70. data/_sass/addon/variables.scss +16 -18
  71. data/_sass/colors/syntax-dark.scss +138 -0
  72. data/_sass/colors/syntax-light.scss +179 -0
  73. data/_sass/colors/{dark-typography.scss → typography-dark.scss} +58 -56
  74. data/_sass/colors/typography-light.scss +110 -0
  75. data/_sass/layout/archives.scss +86 -89
  76. data/_sass/layout/categories.scss +29 -13
  77. data/_sass/layout/category-tag.scss +9 -10
  78. data/_sass/layout/home.scss +132 -114
  79. data/_sass/layout/post.scss +213 -173
  80. data/_sass/layout/tags.scss +1 -1
  81. data/_sass/main.scss +13 -0
  82. data/assets/404.html +1 -20
  83. data/assets/css/jekyll-theme-chirpy.scss +6 -0
  84. data/assets/feed.xml +2 -2
  85. data/assets/js/data/search.json +8 -5
  86. data/assets/js/data/swcache.js +14 -29
  87. data/assets/js/dist/categories.min.js +2 -4
  88. data/assets/js/dist/commons.min.js +2 -4
  89. data/assets/js/dist/home.min.js +2 -4
  90. data/assets/js/dist/misc.min.js +4 -0
  91. data/assets/js/dist/page.min.js +2 -4
  92. data/assets/js/dist/post.min.js +2 -4
  93. data/assets/js/pwa/app.js +42 -4
  94. data/assets/js/pwa/sw.js +46 -44
  95. data/assets/js/pwa/unregister.js +12 -0
  96. metadata +64 -32
  97. data/_config.yml +0 -175
  98. data/_data/contact.yml +0 -30
  99. data/_data/share.yml +0 -27
  100. data/_includes/css-selector.html +0 -15
  101. data/_includes/no-zero-date.html +0 -13
  102. data/_includes/timeago.html +0 -26
  103. data/_plugins/posts-lastmod-hook.rb +0 -14
  104. data/_sass/colors/dark-syntax.scss +0 -87
  105. data/_sass/colors/light-syntax.scss +0 -79
  106. data/_sass/colors/light-typography.scss +0 -81
  107. data/_sass/jekyll-theme-chirpy.scss +0 -24
  108. data/_tabs/about.md +0 -8
  109. data/_tabs/archives.md +0 -7
  110. data/_tabs/categories.md +0 -6
  111. data/_tabs/tags.md +0 -6
  112. data/assets/css/style.scss +0 -12
  113. data/assets/js/dist/pvreport.min.js +0 -6
  114. data/index.html +0 -4
@@ -10,14 +10,14 @@
10
10
  }
11
11
  }
12
12
 
13
- @mixin btn-post-nav {
13
+ %btn-post-nav {
14
14
  width: 50%;
15
15
  position: relative;
16
16
  border-color: var(--btn-border-color);
17
17
  }
18
18
 
19
19
  @mixin dot($pl: 0.25rem, $pr: 0.25rem) {
20
- content: "\2022";
20
+ content: '\2022';
21
21
  padding-left: $pl;
22
22
  padding-right: $pr;
23
23
  }
@@ -26,27 +26,40 @@
26
26
  color: var(--text-color);
27
27
  }
28
28
 
29
- h1 + .post-meta {
30
- span + span::before {
31
- @include dot;
32
- }
29
+ .preview-img {
30
+ overflow: hidden;
31
+ aspect-ratio: 40 / 21;
33
32
 
34
- em {
35
- @extend %text-color;
33
+ @extend %rounded;
36
34
 
37
- a {
38
- @extend %text-color;
35
+ &:not(.no-bg) {
36
+ img.lazyloaded {
37
+ background: var(--img-bg);
39
38
  }
40
39
  }
40
+
41
+ img {
42
+ -o-object-fit: cover;
43
+ object-fit: cover;
44
+
45
+ @extend %rounded;
46
+ }
41
47
  }
42
48
 
43
- img.preview-img {
44
- margin-top: 3.75rem;
45
- margin-bottom: 0;
46
- border-radius: 6px;
49
+ h1 + .post-meta {
50
+ > span + span::before {
51
+ @include dot;
52
+ }
47
53
 
48
- &.bg[data-loaded=true] {
49
- background: var(--preview-img-bg);
54
+ em,
55
+ time {
56
+ color: var(--text-color);
57
+ }
58
+
59
+ em {
60
+ a {
61
+ color: inherit;
62
+ }
50
63
  }
51
64
  }
52
65
 
@@ -55,41 +68,122 @@ img.preview-img {
55
68
  border-bottom: 1px double var(--main-border-color);
56
69
  font-size: 0.85rem;
57
70
 
58
- .post-meta a {
71
+ .post-tail-bottom a {
72
+ color: inherit;
73
+ }
74
+
75
+ .license-wrapper {
76
+ line-height: 1.2rem;
77
+
78
+ > a {
79
+ @extend %text-highlight;
80
+
81
+ &:hover {
82
+ @extend %link-hover;
83
+ }
84
+ }
85
+
86
+ span:last-child {
87
+ font-size: 0.85rem;
88
+ }
89
+ } /* .license-wrapper */
90
+
91
+ .post-meta a:not(:hover) {
59
92
  @extend %link-underline;
60
93
  }
94
+
95
+ .share-wrapper {
96
+ vertical-align: middle;
97
+ -webkit-user-select: none;
98
+ -moz-user-select: none;
99
+ -ms-user-select: none;
100
+ user-select: none;
101
+
102
+ .share-icons {
103
+ font-size: 1.2rem;
104
+
105
+ > * {
106
+ margin-left: 0.25rem;
107
+
108
+ &:hover {
109
+ i {
110
+ @extend %btn-share-hovor;
111
+ }
112
+ }
113
+ }
114
+
115
+ button {
116
+ position: relative;
117
+ bottom: 2px;
118
+ padding: 0;
119
+
120
+ @extend %cursor-pointer;
121
+ }
122
+
123
+ a :hover {
124
+ text-decoration: none;
125
+ }
126
+
127
+ .fa-square-x-twitter {
128
+ @include btn-sharing-color(black);
129
+ }
130
+
131
+ .fa-facebook-square {
132
+ @include btn-sharing-color(rgb(66, 95, 156));
133
+ }
134
+
135
+ .fa-telegram {
136
+ @include btn-sharing-color(rgb(39, 159, 217));
137
+ }
138
+
139
+ .fa-linkedin {
140
+ @include btn-sharing-color(rgb(0, 119, 181));
141
+ }
142
+
143
+ .fa-weibo {
144
+ @include btn-sharing-color(rgb(229, 20, 43));
145
+ }
146
+ } /* .share-icons */
147
+
148
+ .fas.fa-link {
149
+ @include btn-sharing-color(rgb(171, 171, 171));
150
+ }
151
+ } /* .share-wrapper */
61
152
  }
62
153
 
63
154
  .post-tags {
64
155
  line-height: 2rem;
156
+
157
+ .post-tag {
158
+ &:hover {
159
+ @extend %link-hover;
160
+ @extend %tag-hover;
161
+ @extend %no-bottom-border;
162
+ }
163
+ }
65
164
  }
66
165
 
67
166
  .post-navigation {
68
- padding-top: 3rem;
69
- padding-bottom: 4rem;
70
-
71
167
  .btn {
72
- @include btn-post-nav;
168
+ @extend %btn-post-nav;
73
169
 
74
- color: var(--link-color);
170
+ &:not(:hover) {
171
+ color: var(--link-color);
172
+ }
75
173
 
76
174
  &:hover {
77
- background: #2a408e;
78
- color: #fff;
79
- border-color: #2a408e;
175
+ &:not(.disabled)::before {
176
+ color: whitesmoke;
177
+ }
80
178
  }
81
179
 
82
180
  &.disabled {
83
- @include btn-post-nav;
181
+ @extend %btn-post-nav;
84
182
 
85
183
  pointer-events: auto;
86
184
  cursor: not-allowed;
87
185
  background: none;
88
186
  color: gray;
89
-
90
- &:hover {
91
- border-color: none;
92
- }
93
187
  }
94
188
 
95
189
  &.btn-outline-primary.disabled:focus {
@@ -100,18 +194,16 @@ img.preview-img {
100
194
  color: var(--text-muted-color);
101
195
  font-size: 0.65rem;
102
196
  text-transform: uppercase;
103
- content: attr(prompt);
197
+ content: attr(aria-label);
104
198
  }
105
199
 
106
200
  &:first-child {
107
- border-top-right-radius: 0;
108
- border-bottom-right-radius: 0;
201
+ border-radius: $base-radius 0 0 $base-radius;
109
202
  left: 0.5px;
110
203
  }
111
204
 
112
205
  &:last-child {
113
- border-top-left-radius: 0;
114
- border-bottom-left-radius: 0;
206
+ border-radius: 0 $base-radius $base-radius 0;
115
207
  right: 0.5px;
116
208
  }
117
209
  }
@@ -122,15 +214,38 @@ img.preview-img {
122
214
  margin-top: 0.3rem;
123
215
  white-space: normal;
124
216
  }
125
-
126
217
  } /* .post-navigation */
127
218
 
219
+ @media (hover: hover) {
220
+ .post-navigation {
221
+ .btn,
222
+ .btn::before {
223
+ transition: all 0.35s ease-in-out;
224
+ }
225
+ }
226
+ }
227
+
228
+ @-webkit-keyframes fade-up {
229
+ from {
230
+ opacity: 0;
231
+ position: relative;
232
+ top: 2rem;
233
+ }
234
+
235
+ to {
236
+ opacity: 1;
237
+ position: relative;
238
+ top: 0;
239
+ }
240
+ }
241
+
128
242
  @keyframes fade-up {
129
243
  from {
130
244
  opacity: 0;
131
245
  position: relative;
132
246
  top: 2rem;
133
247
  }
248
+
134
249
  to {
135
250
  opacity: 1;
136
251
  position: relative;
@@ -144,22 +259,58 @@ img.preview-img {
144
259
  position: sticky;
145
260
  top: 4rem;
146
261
  transition: top 0.2s ease-in-out;
262
+ -webkit-animation: fade-up 0.8s;
147
263
  animation: fade-up 0.8s;
148
- }
149
264
 
150
- #toc li a {
151
- font-size: 0.8rem;
265
+ ul {
266
+ list-style: none;
267
+ font-size: 0.85rem;
268
+ line-height: 1.25;
269
+ padding-left: 0;
270
+
271
+ li {
272
+ &:not(:last-child) {
273
+ margin: 0.4rem 0;
274
+ }
152
275
 
153
- &.nav-link:not(.active) {
154
- color: inherit;
155
- }
276
+ a {
277
+ padding: 0.2rem 0 0.2rem 1.25rem;
278
+ }
279
+ }
156
280
 
157
- }
281
+ /* Overwrite TOC plugin style */
158
282
 
159
- nav[data-toggle=toc] {
160
- .nav {
161
- .nav > li > a.active {
162
- font-weight: 600 !important;
283
+ .toc-link {
284
+ display: block;
285
+ white-space: nowrap;
286
+ overflow: hidden;
287
+ text-overflow: ellipsis;
288
+
289
+ &:hover {
290
+ color: var(--toc-highlight);
291
+ text-decoration: none;
292
+ }
293
+
294
+ &::before {
295
+ display: none;
296
+ }
297
+ }
298
+
299
+ .is-active-link {
300
+ color: var(--toc-highlight) !important;
301
+ font-weight: 600;
302
+
303
+ &::before {
304
+ display: inline-block;
305
+ width: 1px;
306
+ left: -1px;
307
+ height: 1.25rem;
308
+ background-color: var(--toc-highlight) !important;
309
+ }
310
+ }
311
+
312
+ ul {
313
+ padding-left: 0.75rem;
163
314
  }
164
315
  }
165
316
  }
@@ -171,31 +322,10 @@ nav[data-toggle=toc] {
171
322
  @include label(1.1rem, 600);
172
323
  }
173
324
 
174
- em {
325
+ time {
175
326
  @extend %normal-font-style;
176
- }
177
-
178
- .card {
179
- border-color: var(--card-border-color);
180
- background-color: var(--card-bg);
181
- box-shadow: 0 0 5px 0 var(--card-box-shadow);
182
- -webkit-transition: all 0.3s ease-in-out;
183
- -moz-transition: all 0.3s ease-in-out;
184
- transition: all 0.3s ease-in-out;
185
-
186
- h3 {
187
- @extend %text-color;
188
- }
189
327
 
190
- &:hover {
191
- -webkit-transform: translate3d(0, -3px, 0);
192
- transform: translate3d(0, -3px, 0);
193
- box-shadow: 0 10px 15px -4px rgba(0, 0, 0, 0.15);
194
- }
195
- }
196
-
197
- .timeago {
198
- color: var(--relate-post-date);
328
+ color: var(--text-muted-color);
199
329
  }
200
330
 
201
331
  p {
@@ -208,24 +338,10 @@ nav[data-toggle=toc] {
208
338
  -webkit-box-orient: vertical;
209
339
  }
210
340
 
211
- a:hover {
212
- text-decoration: none;
213
- }
214
-
215
- ul {
216
- list-style-type: none;
217
- padding-inline-start: 1.5rem;
218
-
219
- > li::before {
220
- background: #c2c9d4;
221
- width: 5px;
222
- height: 5px;
223
- border-radius: 1px;
224
- display: block;
225
- content: "";
226
- position: relative;
227
- top: 1rem;
228
- right: 1rem;
341
+ .card {
342
+ h4 {
343
+ @extend %text-color;
344
+ @extend %text-clip;
229
345
  }
230
346
  }
231
347
  }
@@ -233,114 +349,38 @@ nav[data-toggle=toc] {
233
349
  #tail-wrapper {
234
350
  min-height: 2rem;
235
351
 
236
- > div:last-of-type {
237
- margin-bottom: 2rem;
352
+ > *:not(:last-child) {
353
+ margin-top: 3rem;
354
+ }
355
+
356
+ > *:nth-last-child(2) {
357
+ margin-bottom: 3rem;
238
358
  }
239
359
 
360
+ /* stylelint-disable-next-line selector-id-pattern */
240
361
  #disqus_thread {
241
362
  min-height: 8.5rem;
242
363
  }
243
-
244
- }
245
-
246
- .post-tail-bottom a {
247
- color: inherit;
248
364
  }
249
365
 
250
366
  %btn-share-hovor {
251
367
  color: var(--btn-share-hover-color) !important;
252
368
  }
253
369
 
254
- .share-wrapper {
255
- vertical-align: middle;
256
- user-select: none;
257
-
258
- .share-icons {
259
- font-size: 1.2rem;
260
-
261
- a {
262
- &:not(:last-child) {
263
- margin-right: 0.25rem;
264
- }
265
-
266
- &:hover {
267
- text-decoration: none;
268
-
269
- > i {
270
- @extend %btn-share-hovor;
271
- }
272
- }
273
- }
274
-
275
- > i {
276
- position: relative;
277
- bottom: 1px;
278
-
279
- @extend %cursor-pointer;
280
-
281
- &:hover {
282
- @extend %btn-share-hovor;
283
- }
284
- }
285
-
286
- .fab {
287
- &.fa-twitter {
288
- @include btn-sharing-color(rgba(29, 161, 242, 1));
289
- }
290
-
291
- &.fa-facebook-square {
292
- @include btn-sharing-color(rgb(66, 95, 156));
293
- }
294
-
295
- &.fa-telegram {
296
- @include btn-sharing-color(rgb(39, 159, 217));
297
- }
298
-
299
- &.fa-weibo {
300
- @include btn-sharing-color(rgb(229, 20, 43));
301
- }
302
- }
303
-
304
- } /* .share-icons */
305
-
306
- .fas.fa-link {
307
- @include btn-sharing-color(rgb(171, 171, 171));
308
- }
309
-
310
- } /* .share-wrapper */
311
-
312
370
  .share-label {
313
371
  @include label(inherit, 400, inherit);
314
372
 
315
373
  &::after {
316
- content: ":";
374
+ content: ':';
317
375
  }
318
376
  }
319
377
 
320
- .license-wrapper {
321
- line-height: 1.2rem;
322
-
323
- > a {
324
- color: var(--text-color);
325
-
326
- &:hover {
327
- @extend %link-hover;
328
- }
329
- }
330
-
331
- span:last-child {
332
- font-size: 0.85rem;
333
- }
334
-
335
- } /* .license-wrapper */
336
-
337
378
  @media all and (max-width: 576px) {
338
379
  .preview-img[data-src] {
339
380
  margin-top: 2.2rem;
340
381
  }
341
382
 
342
383
  .post-tail-bottom {
343
- -ms-flex-wrap: wrap-reverse !important;
344
384
  flex-wrap: wrap-reverse !important;
345
385
 
346
386
  > div:first-child {
@@ -351,7 +391,7 @@ nav[data-toggle=toc] {
351
391
  }
352
392
 
353
393
  @media all and (max-width: 768px) {
354
- .post-content > p > img {
394
+ .content > p > img {
355
395
  max-width: calc(100% + 1rem);
356
396
  }
357
397
  }
@@ -14,6 +14,6 @@
14
14
  span {
15
15
  margin-left: 0.6em;
16
16
  font-size: 0.7em;
17
- font-family: 'Oswald', sans-serif;
17
+ font-family: Oswald, sans-serif;
18
18
  }
19
19
  }
data/_sass/main.scss ADDED
@@ -0,0 +1,13 @@
1
+ @import 'colors/typography-light';
2
+ @import 'colors/typography-dark';
3
+ @import 'addon/variables';
4
+ @import 'variables-hook';
5
+ @import 'addon/module';
6
+ @import 'addon/syntax';
7
+ @import 'addon/commons';
8
+ @import 'layout/home';
9
+ @import 'layout/post';
10
+ @import 'layout/tags';
11
+ @import 'layout/archives';
12
+ @import 'layout/categories';
13
+ @import 'layout/category-tag';
data/assets/404.html CHANGED
@@ -7,27 +7,8 @@ redirect_from:
7
7
  - /norobots/
8
8
  - /assets/
9
9
  - /posts/
10
-
11
- dynamic_title: true
12
10
  ---
13
11
 
14
12
  {% include lang.html %}
15
13
 
16
- <div class="lead">
17
-
18
- {%- capture _head_back -%}
19
- <a href="{{ '/' | relative_url }}">{{ site.data.locales[lang].not_found.head_back }}</a>
20
- {%- endcapture -%}
21
-
22
- {%- capture _archives_page -%}
23
- <a href="{{ 'archives' | relative_url }}">{{ site.data.locales[lang].not_found.archives_page }}</a>
24
- {%- endcapture -%}
25
-
26
- <p>{{site.data.locales[lang].not_found.statment }}</p>
27
-
28
- <p>{{ site.data.locales[lang].not_found.hint_template
29
- | replace: ':HEAD_BAK', _head_back
30
- | replace: ':ARCHIVES_PAGE', _archives_page }}
31
- </p>
32
-
33
- </div>
14
+ <p class="lead">{{ site.data.locales[lang].not_found.statment }}</p>
@@ -0,0 +1,6 @@
1
+ ---
2
+ ---
3
+
4
+ @import 'main';
5
+
6
+ /* append your custom style below */
data/assets/feed.xml CHANGED
@@ -15,7 +15,7 @@ permalink: /feed.xml
15
15
  <uri>{{ "/" | absolute_url }}</uri>
16
16
  </author>
17
17
  <link rel="self" type="application/atom+xml" href="{{ page.url | absolute_url }}"/>
18
- <link rel="alternate" type="text/html" hreflang="{{ site.lang }}"
18
+ <link rel="alternate" type="text/html" hreflang="{{ site.alt_lang | default: site.lang }}"
19
19
  href="{{ '/' | absolute_url }}"/>
20
20
  <generator uri="https://jekyllrb.com/" version="{{ jekyll.version }}">Jekyll</generator>
21
21
  <rights> © {{ 'now' | date: '%Y' }} {{ site.social.name }} </rights>
@@ -26,7 +26,7 @@ permalink: /feed.xml
26
26
  {% assign post_absolute_url = post.url | absolute_url %}
27
27
  <entry>
28
28
  <title>{{ post.title }}</title>
29
- <link href="{{ post_absolute_url }}" rel="alternate" type="text/html" title="{{ post.title }}" />
29
+ <link href="{{ post_absolute_url }}" rel="alternate" type="text/html" title="{{ post.title | xml_escape }}" />
30
30
  <published>{{ post.date | date_to_xmlschema }}</published>
31
31
  {% if post.last_modified_at %}
32
32
  <updated>{{ post.last_modified_at | date_to_xmlschema }}</updated>
@@ -1,17 +1,20 @@
1
1
  ---
2
2
  layout: compress
3
+ swcache: true
3
4
  ---
4
5
 
5
6
  [
6
7
  {% for post in site.posts %}
7
8
  {
8
- "title": "{{ post.title | escape }}",
9
- "url": "{{ post.url | relative_url }}",
10
- "categories": "{{ post.categories | join: ', '}}",
11
- "tags": "{{ post.tags | join: ', ' }}",
9
+ "title": {{ post.title | jsonify }},
10
+ "url": {{ post.url | relative_url | jsonify }},
11
+ "categories": {{ post.categories | join: ', ' | jsonify }},
12
+ "tags": {{ post.tags | join: ', ' | jsonify }},
12
13
  "date": "{{ post.date }}",
13
14
  {% include no-linenos.html content=post.content %}
14
- "snippet": "{{ content | strip_html | strip_newlines | remove_chars | escape | replace: '\', '\\\\' }}"
15
+ {% assign _content = content | strip_html | strip_newlines %}
16
+ "snippet": {{ _content | truncate: 200 | jsonify }},
17
+ "content": {{ _content | jsonify }}
15
18
  }{% unless forloop.last %},{% endunless %}
16
19
  {% endfor %}
17
20
  ]