jekyll-commonmark-codetabs 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: ac955fb3de2835e32158962399f8220cf747f8a11701f541b51ff4f91de9d0e9
4
+ data.tar.gz: 7f25257ee0b692bbd7d093df05192bb284f5eab6e92a17c27ed0ecd6151ff580
5
+ SHA512:
6
+ metadata.gz: 72fc96cec24ac005b984fef49dad859a12b176a2b76e963a4ce545b36bfca324bd78aa85a0927ebd07a0e5487b8f151606763dde5b36c39bd443b330f57118dc
7
+ data.tar.gz: 9c22d0fc0436cce1591fb0016b82b6a31505fc475278b78817562b131c0d8e9e1b7d8225b5ecd27d194f07e7ed480ba0940006d682253059d4eb49abbefce934
@@ -0,0 +1,841 @@
1
+ html,
2
+ html[data-code-block-theme="light"] {
3
+ --code-block-background-color: #F9F9F9;
4
+ --code-block-default-text-color: #555;
5
+ --code-block-action-button-color: #666666;
6
+ --code-block-bp-color: #366;
7
+ --code-block-c-color: #999;
8
+ --code-block-c1-color: #999;
9
+ --code-block-cd-color: #555;
10
+ --code-block-ch-color: #555;
11
+ --code-block-cm-color: #09f;
12
+ --code-block-cp-color: #099;
13
+ --code-block-cpf-color: #555;
14
+ --code-block-cs-color: #999;
15
+ --code-block-dl-color: #555;
16
+ --code-block-err-color: #a00;
17
+ --code-block-err-background-color: #faa;
18
+ --code-block-gd-color: #555;
19
+ --code-block-gd-background-color: #fcc;
20
+ --code-block-gh-color: #030;
21
+ --code-block-gi-color: #555;
22
+ --code-block-gi-background-color: #cfc;
23
+ --code-block-gi-border-color: #0c0;
24
+ --code-block-go-color: #aaa;
25
+ --code-block-gp-color: #009;
26
+ --code-block-gr-color: #f00;
27
+ --code-block-gt-color: #9c6;
28
+ --code-block-gu-color: #030;
29
+ --code-block-il-color: #f60;
30
+ --code-block-k-color: #069;
31
+ --code-block-kc-color: #069;
32
+ --code-block-kd-color: #069;
33
+ --code-block-kn-color: #069;
34
+ --code-block-kp-color: #069;
35
+ --code-block-kr-color: #069;
36
+ --code-block-kt-color: #078;
37
+ --code-block-m-color: #f60;
38
+ --code-block-mb-color: #f60;
39
+ --code-block-mf-color: #f60;
40
+ --code-block-mh-color: #f60;
41
+ --code-block-mi-color: #f60;
42
+ --code-block-mo-color: #f60;
43
+ --code-block-mx-color: #f60;
44
+ --code-block-na-color: #4f9fcf;
45
+ --code-block-nb-color: #366;
46
+ --code-block-nc-color: #0a8;
47
+ --code-block-nd-color: #99f;
48
+ --code-block-ne-color: #c00;
49
+ --code-block-nf-color: #c0f;
50
+ --code-block-ni-color: #999;
51
+ --code-block-nl-color: #99f;
52
+ --code-block-nn-color: #0cf;
53
+ --code-block-no-color: #360;
54
+ --code-block-nt-color: #2f6f9f;
55
+ --code-block-nv-color: #033;
56
+ --code-block-o-color: #555;
57
+ --code-block-ow-color: #000;
58
+ --code-block-p-color: #555;
59
+ --code-block-pi-color: #555;
60
+ --code-block-s-color: #d44950;
61
+ --code-block-s1-color: #c30;
62
+ --code-block-s2-color: #c30;
63
+ --code-block-sa-color: #555;
64
+ --code-block-sb-color: #c30;
65
+ --code-block-sc-color: #c30;
66
+ --code-block-sd-color: #c30;
67
+ --code-block-se-color: #c30;
68
+ --code-block-sh-color: #c30;
69
+ --code-block-si-color: #a00;
70
+ --code-block-sr-color: #3aa;
71
+ --code-block-ss-color: #fc3;
72
+ --code-block-sx-color: #c30;
73
+ --code-block-vc-color: #033;
74
+ --code-block-vg-color: #033;
75
+ --code-block-vi-color: #033;
76
+ --code-block-w-color: #bbb;
77
+ }
78
+
79
+ html[data-code-block-theme="dark"] {
80
+ --code-block-background-color: #272822;
81
+ --code-block-default-text-color: #f8f8f2;
82
+ --code-block-action-button-color: #a8a8a8;
83
+ --code-block-bp-color: #f8f8f2;
84
+ --code-block-c-color: #75715e;
85
+ --code-block-c1-color: #75715e;
86
+ --code-block-cd-color: #75715e;
87
+ --code-block-ch-color: #75715e;
88
+ --code-block-cm-color: #75715e;
89
+ --code-block-cp-color: #f4bf75;
90
+ --code-block-cpf-color: #75715e;
91
+ --code-block-cs-color: #75715e;
92
+ --code-block-dl-color: #a6e22e;
93
+ --code-block-err-color: #272822;
94
+ --code-block-err-background-color: #f92672;
95
+ --code-block-gd-color: #f92672;
96
+ --code-block-gd-background-color: transparent;
97
+ --code-block-gh-background-color: #272822;
98
+ --code-block-gh-color: #66d9ef;
99
+ --code-block-gh-font-weight: bold;
100
+ --code-block-gi-color: #a6e22e;
101
+ --code-block-gi-background-color: transparent;
102
+ --code-block-gi-border-color: transparent;
103
+ --code-block-go-color: #f8f8f2;
104
+ --code-block-gp-color: #f8f8f2;
105
+ --code-block-gr-color: #f8f8f2;
106
+ --code-block-gt-color: #f8f8f2;
107
+ --code-block-gu-color: #f8f8f2;
108
+ --code-block-il-color: #a6e22e;
109
+ --code-block-k-color: #ae81ff;
110
+ --code-block-kc-color: #fd971f;
111
+ --code-block-kd-color: #fd971f;
112
+ --code-block-kn-color: #ae81ff;
113
+ --code-block-kp-color: #ae81ff;
114
+ --code-block-kr-color: #ae81ff;
115
+ --code-block-kt-color: #fd971f;
116
+ --code-block-kv-color: #ae81ff;
117
+ --code-block-m-color: #a6e22e;
118
+ --code-block-mb-color: #a6e22e;
119
+ --code-block-mf-color: #a6e22e;
120
+ --code-block-mh-color: #a6e22e;
121
+ --code-block-mi-color: #a6e22e;
122
+ --code-block-mo-color: #a6e22e;
123
+ --code-block-mx-color: #a6e22e;
124
+ --code-block-na-color: #66d9ef;
125
+ --code-block-nb-color: #f8f8f2;
126
+ --code-block-nc-color: #f4bf75;
127
+ --code-block-nd-color: #f8f8f2;
128
+ --code-block-ne-color: #f8f8f2;
129
+ --code-block-nf-color: #f8f8f2;
130
+ --code-block-ni-color: #f8f8f2;
131
+ --code-block-nl-color: #f8f8f2;
132
+ --code-block-nn-color: #f4bf75;
133
+ --code-block-no-color: #f4bf75;
134
+ --code-block-nt-color: #f4bf75;
135
+ --code-block-nv-color: #f8f8f2;
136
+ --code-block-o-color: #f8f8f2;
137
+ --code-block-ow-color: #f8f8f2;
138
+ --code-block-p-color: #f8f8f2;
139
+ --code-block-pi-color: #f8f8f2;
140
+ --code-block-s-color: #a6e22e;
141
+ --code-block-s1-color: #a6e22e;
142
+ --code-block-s2-color: #a6e22e;
143
+ --code-block-sa-color: #ae81ff;
144
+ --code-block-sb-color: #a6e22e;
145
+ --code-block-sc-color: #a6e22e;
146
+ --code-block-sd-color: #a6e22e;
147
+ --code-block-se-color: #cc6633;
148
+ --code-block-sh-color: #a6e22e;
149
+ --code-block-si-color: #cc6633;
150
+ --code-block-sr-color: #a1efe4;
151
+ --code-block-ss-color: #a6e22e;
152
+ --code-block-sx-color: #a6e22e;
153
+ --code-block-vc-color: #f8f8f2;
154
+ --code-block-vg-color: #f8f8f2;
155
+ --code-block-vi-color: #f8f8f2;
156
+ --code-block-w-color: #f8f8f2;
157
+ }
158
+
159
+ @media (prefers-color-scheme: dark) {
160
+ html,
161
+ html[data-code-block-theme="dark"] {
162
+ --code-block-background-color: #272822;
163
+ --code-block-default-text-color: #f8f8f2;
164
+ --code-block-action-button-color: #a8a8a8;
165
+ --code-block-bp-color: #f8f8f2;
166
+ --code-block-c-color: #75715e;
167
+ --code-block-c1-color: #75715e;
168
+ --code-block-cd-color: #75715e;
169
+ --code-block-ch-color: #75715e;
170
+ --code-block-cm-color: #75715e;
171
+ --code-block-cp-color: #f4bf75;
172
+ --code-block-cpf-color: #75715e;
173
+ --code-block-cs-color: #75715e;
174
+ --code-block-dl-color: #a6e22e;
175
+ --code-block-err-color: #272822;
176
+ --code-block-err-background-color: #f92672;
177
+ --code-block-gd-color: #f92672;
178
+ --code-block-gd-background-color: transparent;
179
+ --code-block-gh-background-color: #272822;
180
+ --code-block-gh-color: #66d9ef;
181
+ --code-block-gh-font-weight: bold;
182
+ --code-block-gi-color: #a6e22e;
183
+ --code-block-gi-background-color: transparent;
184
+ --code-block-gi-border-color: transparent;
185
+ --code-block-go-color: #f8f8f2;
186
+ --code-block-gp-color: #f8f8f2;
187
+ --code-block-gr-color: #f8f8f2;
188
+ --code-block-gt-color: #f8f8f2;
189
+ --code-block-gu-color: #f8f8f2;
190
+ --code-block-il-color: #a6e22e;
191
+ --code-block-k-color: #ae81ff;
192
+ --code-block-kc-color: #fd971f;
193
+ --code-block-kd-color: #fd971f;
194
+ --code-block-kn-color: #ae81ff;
195
+ --code-block-kp-color: #ae81ff;
196
+ --code-block-kr-color: #ae81ff;
197
+ --code-block-kt-color: #fd971f;
198
+ --code-block-kv-color: #ae81ff;
199
+ --code-block-m-color: #a6e22e;
200
+ --code-block-mb-color: #a6e22e;
201
+ --code-block-mf-color: #a6e22e;
202
+ --code-block-mh-color: #a6e22e;
203
+ --code-block-mi-color: #a6e22e;
204
+ --code-block-mo-color: #a6e22e;
205
+ --code-block-mx-color: #a6e22e;
206
+ --code-block-na-color: #66d9ef;
207
+ --code-block-nb-color: #f8f8f2;
208
+ --code-block-nc-color: #f4bf75;
209
+ --code-block-nd-color: #f8f8f2;
210
+ --code-block-ne-color: #f8f8f2;
211
+ --code-block-nf-color: #f8f8f2;
212
+ --code-block-ni-color: #f8f8f2;
213
+ --code-block-nl-color: #f8f8f2;
214
+ --code-block-nn-color: #f4bf75;
215
+ --code-block-no-color: #f4bf75;
216
+ --code-block-nt-color: #f4bf75;
217
+ --code-block-nv-color: #f8f8f2;
218
+ --code-block-o-color: #f8f8f2;
219
+ --code-block-ow-color: #f8f8f2;
220
+ --code-block-p-color: #f8f8f2;
221
+ --code-block-pi-color: #f8f8f2;
222
+ --code-block-s-color: #a6e22e;
223
+ --code-block-s1-color: #a6e22e;
224
+ --code-block-s2-color: #a6e22e;
225
+ --code-block-sa-color: #ae81ff;
226
+ --code-block-sb-color: #a6e22e;
227
+ --code-block-sc-color: #a6e22e;
228
+ --code-block-sd-color: #a6e22e;
229
+ --code-block-se-color: #cc6633;
230
+ --code-block-sh-color: #a6e22e;
231
+ --code-block-si-color: #cc6633;
232
+ --code-block-sr-color: #a1efe4;
233
+ --code-block-ss-color: #a6e22e;
234
+ --code-block-sx-color: #a6e22e;
235
+ --code-block-vc-color: #f8f8f2;
236
+ --code-block-vg-color: #f8f8f2;
237
+ --code-block-vi-color: #f8f8f2;
238
+ --code-block-w-color: #f8f8f2;
239
+ }
240
+ html[data-code-block-theme="light"] {
241
+ --code-block-background-color: #F9F9F9;
242
+ --code-block-default-text-color: #555;
243
+ --code-block-action-button-color: #666666;
244
+ --code-block-bp-color: #366;
245
+ --code-block-c-color: #999;
246
+ --code-block-c1-color: #999;
247
+ --code-block-cd-color: #555;
248
+ --code-block-ch-color: #555;
249
+ --code-block-cm-color: #09f;
250
+ --code-block-cp-color: #099;
251
+ --code-block-cpf-color: #555;
252
+ --code-block-cs-color: #999;
253
+ --code-block-dl-color: #555;
254
+ --code-block-err-color: #a00;
255
+ --code-block-err-background-color: #faa;
256
+ --code-block-gd-color: #555;
257
+ --code-block-gd-background-color: #fcc;
258
+ --code-block-gh-color: #030;
259
+ --code-block-gi-color: #555;
260
+ --code-block-gi-background-color: #cfc;
261
+ --code-block-gi-border-color: #0c0;
262
+ --code-block-go-color: #aaa;
263
+ --code-block-gp-color: #009;
264
+ --code-block-gr-color: #f00;
265
+ --code-block-gt-color: #9c6;
266
+ --code-block-gu-color: #030;
267
+ --code-block-il-color: #f60;
268
+ --code-block-k-color: #069;
269
+ --code-block-kc-color: #069;
270
+ --code-block-kd-color: #069;
271
+ --code-block-kn-color: #069;
272
+ --code-block-kp-color: #069;
273
+ --code-block-kr-color: #069;
274
+ --code-block-kt-color: #078;
275
+ --code-block-m-color: #f60;
276
+ --code-block-mb-color: #f60;
277
+ --code-block-mf-color: #f60;
278
+ --code-block-mh-color: #f60;
279
+ --code-block-mi-color: #f60;
280
+ --code-block-mo-color: #f60;
281
+ --code-block-mx-color: #f60;
282
+ --code-block-na-color: #4f9fcf;
283
+ --code-block-nb-color: #366;
284
+ --code-block-nc-color: #0a8;
285
+ --code-block-nd-color: #99f;
286
+ --code-block-ne-color: #c00;
287
+ --code-block-nf-color: #c0f;
288
+ --code-block-ni-color: #999;
289
+ --code-block-nl-color: #99f;
290
+ --code-block-nn-color: #0cf;
291
+ --code-block-no-color: #360;
292
+ --code-block-nt-color: #2f6f9f;
293
+ --code-block-nv-color: #033;
294
+ --code-block-o-color: #555;
295
+ --code-block-ow-color: #000;
296
+ --code-block-p-color: #555;
297
+ --code-block-pi-color: #555;
298
+ --code-block-s-color: #d44950;
299
+ --code-block-s1-color: #c30;
300
+ --code-block-s2-color: #c30;
301
+ --code-block-sa-color: #555;
302
+ --code-block-sb-color: #c30;
303
+ --code-block-sc-color: #c30;
304
+ --code-block-sd-color: #c30;
305
+ --code-block-se-color: #c30;
306
+ --code-block-sh-color: #c30;
307
+ --code-block-si-color: #a00;
308
+ --code-block-sr-color: #3aa;
309
+ --code-block-ss-color: #fc3;
310
+ --code-block-sx-color: #c30;
311
+ --code-block-vc-color: #033;
312
+ --code-block-vg-color: #033;
313
+ --code-block-vi-color: #033;
314
+ --code-block-w-color: #bbb;
315
+ }
316
+ }
317
+
318
+ .highlight {
319
+ color: var(--code-block-default-text-color);
320
+ }
321
+
322
+ .highlight .bp {
323
+ color: var(--code-block-bp-color);
324
+ }
325
+
326
+ .highlight .c {
327
+ color: var(--code-block-c-color);
328
+ }
329
+
330
+ .highlight .c1 {
331
+ color: var(--code-block-c1-color);
332
+ }
333
+
334
+ .highlight .cd {
335
+ color: var(--code-block-cd-color);
336
+ }
337
+
338
+ .highlight .ch {
339
+ color: var(--code-block-ch-color);
340
+ }
341
+
342
+ .highlight .cm {
343
+ color: var(--code-block-cm-color);
344
+ }
345
+
346
+ .highlight .cp {
347
+ color: var(--code-block-cp-color);
348
+ }
349
+
350
+ .highlight .cpf {
351
+ color: var(--code-block-cpf-color);
352
+ }
353
+
354
+ .highlight .cs {
355
+ color: var(--code-block-cs-color);
356
+ }
357
+
358
+ .highlight .dl {
359
+ color: var(--code-block-dl-color, --code-block-default-text-color);
360
+ }
361
+
362
+ .highlight .err {
363
+ color: var(--code-block-err-color);
364
+ background-color: var(--code-block-err-background-color);
365
+ }
366
+
367
+ .highlight .gd {
368
+ color: var(--code-block-gd-color);
369
+ background-color: var(--code-block-gd-background-color);
370
+ }
371
+
372
+ .highlight .ge {
373
+ font-style: italic;
374
+ }
375
+
376
+ .highlight .gh {
377
+ font-weight: var(--code-block-gh-font-weight, normal);
378
+ background-color: var(--code-block-gh-background-color, transparent);
379
+ color: var(--code-block-gh-color);
380
+ }
381
+
382
+ .highlight .gi {
383
+ color: var(--code-block-gi-color);
384
+ background-color: var(--code-block-gi-background-color);
385
+ border: 1px solid var(--code-block-gi-border-color);
386
+ }
387
+
388
+ .highlight .go {
389
+ color: var(--code-block-go-color);
390
+ }
391
+
392
+ .highlight .gp {
393
+ color: var(--code-block-gp-color);
394
+ }
395
+
396
+ .highlight .gr {
397
+ color: var(--code-block-gr-color);
398
+ }
399
+
400
+ .highlight .gs {}
401
+
402
+ .highlight .gt {
403
+ color: var(--code-block-gt-color);
404
+ }
405
+
406
+ .highlight .gu {
407
+ color: var(--code-block-gu-color);
408
+ }
409
+
410
+ .highlight .hll {
411
+ background-color: var(--code-block-background-color);
412
+ }
413
+
414
+ .highlight .il {
415
+ color: var(--code-block-il-color);
416
+ }
417
+
418
+ .highlight .k {
419
+ color: var(--code-block-k-color);
420
+ }
421
+
422
+ .highlight .kc {
423
+ color: var(--code-block-kc-color);
424
+ }
425
+
426
+ .highlight .kd {
427
+ color: var(--code-block-kd-color);
428
+ }
429
+
430
+ .highlight .kn {
431
+ color: var(--code-block-kn-color);
432
+ }
433
+
434
+ .highlight .kp {
435
+ color: var(--code-block-kp-color);
436
+ }
437
+
438
+ .highlight .kr {
439
+ color: var(--code-block-kr-color);
440
+ }
441
+
442
+ .highlight .kt {
443
+ color: var(--code-block-kt-color);
444
+ }
445
+
446
+ .highlight .kv {
447
+ color: var(--code-block-kv-color, --code-block-default-text-color);
448
+ }
449
+
450
+ .highlight .m {
451
+ color: var(--code-block-m-color);
452
+ }
453
+
454
+ .highlight .mb {
455
+ color: var(--code-block-mb-color);
456
+ }
457
+
458
+ .highlight .mf {
459
+ color: var(--code-block-mf-color);
460
+ }
461
+
462
+ .highlight .mh {
463
+ color: var(--code-block-mh-color);
464
+ }
465
+
466
+ .highlight .mi {
467
+ color: var(--code-block-mi-color);
468
+ }
469
+
470
+ .highlight .mo {
471
+ color: var(--code-block-mo-color);
472
+ }
473
+
474
+ .highlight .mx {
475
+ color: var(--code-block-mx-color);
476
+ }
477
+
478
+ .highlight .na {
479
+ color: var(--code-block-na-color);
480
+ }
481
+
482
+ .highlight .nb {
483
+ color: var(--code-block-nb-color);
484
+ }
485
+
486
+ .highlight .nc {
487
+ color: var(--code-block-nc-color);
488
+ }
489
+
490
+ .highlight .nd {
491
+ color: var(--code-block-nd-color);
492
+ }
493
+
494
+ .highlight .ne {
495
+ color: var(--code-block-ne-color);
496
+ }
497
+
498
+ .highlight .nf {
499
+ color: var(--code-block-nf-color);
500
+ }
501
+
502
+ .highlight .ni {
503
+ color: var(--code-block-ni-color);
504
+ }
505
+
506
+ .highlight .nl {
507
+ color: var(--code-block-nl-color);
508
+ }
509
+
510
+ .highlight .nn {
511
+ color: var(--code-block-nn-color);
512
+ }
513
+
514
+ .highlight .no {
515
+ color: var(--code-block-no-color);
516
+ }
517
+
518
+ .highlight .nt {
519
+ color: var(--code-block-nt-color);
520
+ }
521
+
522
+ .highlight .nv {
523
+ color: var(--code-block-nv-color);
524
+ }
525
+
526
+ .highlight .o {
527
+ color: var(--code-block-o-color);
528
+ }
529
+
530
+ .highlight .ow {
531
+ color: var(--code-block-ow-color);
532
+ }
533
+
534
+ .highlight .p {
535
+ color: var(--code-block-p-color);
536
+ }
537
+
538
+ .highlight .pi {
539
+ color: var(--code-block-pi-color);
540
+ }
541
+
542
+ .highlight .s {
543
+ color: var(--code-block-s-color);
544
+ }
545
+
546
+ .highlight .sa {
547
+ color: var(--code-block-sa-color, --code-block-default-text-color)
548
+ }
549
+
550
+ .highlight .s1 {
551
+ color: var(--code-block-s1-color);
552
+ }
553
+
554
+ .highlight .s2 {
555
+ color: var(--code-block-s2-color);
556
+ }
557
+
558
+ .highlight .sb {
559
+ color: var(--code-block-sb-color);
560
+ }
561
+
562
+ .highlight .sc {
563
+ color: var(--code-block-sc-color);
564
+ }
565
+
566
+ .highlight .sd {
567
+ color: var(--code-block-sd-color);
568
+ font-style: italic;
569
+ }
570
+
571
+ .highlight .se {
572
+ color: var(--code-block-se-color);
573
+ }
574
+
575
+ .highlight .sh {
576
+ color: var(--code-block-sh-color);
577
+ }
578
+
579
+ .highlight .si {
580
+ color: var(--code-block-si-color);
581
+ }
582
+
583
+ .highlight .sr {
584
+ color: var(--code-block-sr-color);
585
+ }
586
+
587
+ .highlight .ss {
588
+ color: var(--code-block-ss-color);
589
+ }
590
+
591
+ .highlight .sx {
592
+ color: var(--code-block-sx-color);
593
+ }
594
+
595
+ .highlight .vc {
596
+ color: var(--code-block-vc-color);
597
+ }
598
+
599
+ .highlight .vg {
600
+ color: var(--code-block-vg-color);
601
+ }
602
+
603
+ .highlight .vi {
604
+ color: var(--code-block-vi-color);
605
+ }
606
+
607
+ .highlight .w {
608
+ color: var(--code-block-w-color);
609
+ }
610
+
611
+ pre,
612
+ code {
613
+ font-family: 'Monaco', 'Roboto Mono', monospace;
614
+ }
615
+
616
+ code {
617
+ background-color: #F9F9F9;
618
+ border-radius: 3px;
619
+ font-size: 85%;
620
+ padding: 0.25em 0.5em;
621
+ }
622
+
623
+ .highlight code {
624
+ background-color: var(--code-block-background-color);
625
+ padding: 0 0;
626
+ }
627
+
628
+ pre {
629
+ margin: 0 0 1rem;
630
+ }
631
+
632
+ pre code {
633
+ background-color: transparent;
634
+ color: inherit;
635
+ font-size: 90%;
636
+ padding: 0;
637
+ white-space: pre;
638
+ }
639
+
640
+ .highlight {
641
+ background-color: var(--code-block-background-color);
642
+ border-radius: 8px;
643
+ line-height: 1.4;
644
+ margin: 0 0 1rem;
645
+ padding: 1rem;
646
+ border: 1px solid #e8eaed;
647
+ }
648
+
649
+ .highlight pre {
650
+ margin-bottom: 0;
651
+ overflow-x: auto;
652
+ }
653
+
654
+ .highlight .lineno {
655
+ color: #aaa;
656
+ display: inline-block;
657
+ padding: 0 0.75rem 0 0.25rem;
658
+ -webkit-user-select: none;
659
+ -moz-user-select: none;
660
+ user-select: none;
661
+ }
662
+
663
+ .highlight .highlight {
664
+ border: none;
665
+ margin: 0;
666
+ }
667
+
668
+ .code-tab-container {
669
+ display: flex;
670
+ flex-wrap: wrap;
671
+ list-style: none;
672
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
673
+ font-size: 20px;
674
+ font-weight: 400;
675
+ -webkit-text-size-adjust: 100%;
676
+ background: #fff;
677
+ border-radius: 8px 8px 0px 0px;
678
+ border: 1px solid #e8eaed;
679
+ margin: 0;
680
+ padding: 0;
681
+ list-style-type: none;
682
+ }
683
+
684
+ .code-tab-container a:hover,
685
+ .code-tab-container a:visited,
686
+ .code-tab-container a:link,
687
+ .code-tab-container a:active {
688
+ text-decoration: none !important;
689
+ }
690
+
691
+ .code-tab-container a:hover {
692
+ color: #000;
693
+ border-color: #bcbcbc;
694
+ }
695
+
696
+ .code-tab-container>* {
697
+ flex: none;
698
+ padding-left: 20px;
699
+ position: relative;
700
+ }
701
+
702
+ .code-tab-container a {
703
+ display: flex;
704
+ align-items: center;
705
+ column-gap: 0.25em;
706
+ justify-content: center;
707
+ padding: 10px;
708
+ color: #5f6368;
709
+ border-radius: 3px 3px 0px 0px;
710
+ border-bottom: 3px solid transparent;
711
+ font-size: 14px;
712
+ transition: color 0.1s ease-in-out;
713
+ text-decoration: none;
714
+ cursor: pointer;
715
+ }
716
+
717
+ .code-tab-container .active-tab>a {
718
+ color: #1769e0;
719
+ border-color: #1769e0;
720
+ }
721
+
722
+ .code-tab-container li::before {
723
+ content: '';
724
+ }
725
+
726
+ .code-tab-container li {
727
+ margin: 0;
728
+ list-style-type: none;
729
+ }
730
+
731
+ .code-tab-switcher li::before {
732
+ content: '';
733
+ }
734
+
735
+ .code-tab-switcher li {
736
+ margin: 0;
737
+ list-style-type: none;
738
+ }
739
+
740
+ .code-tab-switcher {
741
+ margin: 0;
742
+ padding: 0;
743
+ list-style: none;
744
+ border-radius: 0px 0px 8px 8px;
745
+ }
746
+
747
+ .code-tab-switcher> :not(.active-tab) {
748
+ display: none;
749
+ }
750
+
751
+ .code-tab-switcher>*> :last-child {
752
+ margin-bottom: 0;
753
+ }
754
+
755
+ .code-tab-switcher .highlight {
756
+ border-radius: 0px 0px 8px 8px;
757
+ border-top: 0px solid;
758
+ }
759
+
760
+ .code_switcher_container_parent {
761
+ position: relative;
762
+ }
763
+
764
+ .code_switcher_code_action_container {
765
+ position: absolute;
766
+ right: 6px;
767
+ top: 6px;
768
+ z-index: 1;
769
+ }
770
+
771
+ .code_switcher_copy_button {
772
+ background-size: 18px 18px;
773
+ border: none;
774
+ font-size: 18px;
775
+ min-width: 18px;
776
+ min-height: 18px;
777
+ height: 18px;
778
+ width: 18px;
779
+ background-color: var(--code-block-action-button-color, #666666);;
780
+ -webkit-mask-image: url(icon_copy.svg);
781
+ mask-image: url(icon_copy.svg);
782
+ -webkit-mask-size: cover;
783
+ margin-right: 4px;
784
+ }
785
+
786
+ .code_switcher_theme_button {
787
+ background-size: 18px 18px;
788
+ border: none;
789
+ font-size: 18px;
790
+ min-width: 18px;
791
+ min-height: 18px;
792
+ height: 18px;
793
+ width: 18px;
794
+ background-color: var(--code-block-action-button-color, #666666);
795
+ -webkit-mask-image: url(icon_theme.svg);
796
+ mask-image: url(icon_theme.svg);
797
+ -webkit-mask-size: cover;
798
+ }
799
+
800
+ #code_copied_snackbar {
801
+ visibility: hidden;
802
+ min-width: 240px;
803
+ margin-left: -125px;
804
+ background-color: #333;
805
+ color: #fff;
806
+ text-align: center;
807
+ border-radius: 10px;
808
+ padding: 16px;
809
+ position: fixed;
810
+ z-index: 1;
811
+ left: 50%;
812
+ bottom: 30px;
813
+ font-family: 'Monaco', 'Roboto Mono', monospace;
814
+ }
815
+
816
+ #code_copied_snackbar.show {
817
+ visibility: visible;
818
+ -webkit-animation: code_copied_snackbar_fade_in 0.3s, code_copied_snackbar_fade_out 0.3s 1.5s;
819
+ animation: code_copied_snackbar_fade_in 0.3s, code_copied_snackbar_fade_out 0.3s 1.5s;
820
+ }
821
+
822
+ /* Animations to fade the snackbar in and out */
823
+ @-webkit-keyframes code_copied_snackbar_fade_in {
824
+ from {bottom: 0; opacity: 0;}
825
+ to {bottom: 30px; opacity: 1;}
826
+ }
827
+
828
+ @keyframes code_copied_snackbar_fade_in {
829
+ from {bottom: 0; opacity: 0;}
830
+ to {bottom: 30px; opacity: 1;}
831
+ }
832
+
833
+ @-webkit-keyframes code_copied_snackbar_fade_out {
834
+ from {bottom: 30px; opacity: 1;}
835
+ to {bottom: 0; opacity: 0;}
836
+ }
837
+
838
+ @keyframes code_copied_snackbar_fade_out {
839
+ from {bottom: 30px; opacity: 1;}
840
+ to {bottom: 0; opacity: 0;}
841
+ }
@@ -0,0 +1,93 @@
1
+ function selectTab(codeLangClass, tabClass, tabIndex) {
2
+ var tabbedItemsWithMatchingLanguage = [...new Set(Array.prototype.slice.call(document.getElementsByClassName(codeLangClass))
3
+ .map(item => item.parentNode))];
4
+
5
+ tabbedItemsWithMatchingLanguage
6
+ .flatMap(item => Array.prototype.slice.call(item.children))
7
+ .forEach(item => item.classList.remove("active-tab"));
8
+
9
+
10
+ tabbedItemsWithMatchingLanguage.forEach((element) => {
11
+ Array.prototype.slice.call(element.children)
12
+ .filter( item => item.matches("." + codeLangClass))[0]
13
+ .classList.add("active-tab");
14
+ });
15
+
16
+ var tabsMatchingTabClass = [...new Set(Array.prototype.slice.call(document.getElementsByClassName(tabClass)))];
17
+
18
+ tabsMatchingTabClass
19
+ .flatMap(item => Array.prototype.slice.call(item.children))
20
+ .forEach(item => item.classList.remove("active-tab"));
21
+
22
+
23
+ tabsMatchingTabClass.forEach((tab) => {
24
+ Array.prototype.slice.call(tab.children)[tabIndex].classList.add("active-tab");
25
+ });
26
+ };
27
+
28
+ function isNumeric(str) {
29
+ return !isNaN(str) && !isNaN(parseFloat(str))
30
+ }
31
+
32
+ function getRange(text) {
33
+ if (!text?.length) {
34
+ return [];
35
+ }
36
+ var elements = text.split("-").map(i => parseInt(i));
37
+ var a = Math.min(...elements);
38
+ var b = Math.max(...elements);
39
+ return Array.from(new Array(Math.abs(a - b) + 1), (x, i) => i + Math.min(a, b));
40
+ };
41
+
42
+ function copyText(codeBlockClass, copyRange) {
43
+ var copyButton = document.getElementById("code_switcher_copy_button");
44
+ copyButton.setAttribute("disabled", "true");
45
+ var lines = [...new Set(copyRange.replace(/\s/g, "").split(",").flatMap(item => getRange(item)))];
46
+ lines.sort();
47
+
48
+ var copiedText = document.getElementsByClassName(codeBlockClass)[0].innerText;
49
+ if (lines !== undefined && lines.length > 0) {
50
+ copiedText = lines.map(lineNumber => copiedText.split("\n")[lineNumber])
51
+ .filter(item => item?.length)
52
+ .join("\n")
53
+ }
54
+ navigator.clipboard.writeText(copiedText);
55
+ var snackbar = document.getElementById("code_copied_snackbar");
56
+ snackbar.classList.add("show")
57
+ setTimeout(function() { snackbar.classList.remove("show"); copyButton.removeAttribute("disabled"); }, 1790);
58
+ };
59
+
60
+ var darkModeMatcher = window.matchMedia("(prefers-color-scheme: dark)");
61
+
62
+ darkModeMatcher.addListener(matcher => {
63
+ localStorage.setItem("code-block-theme", "");
64
+ updateTheme(false);
65
+ });
66
+
67
+ function updateTheme(switchTheme) {
68
+ var theme = localStorage.getItem("code-block-theme");
69
+
70
+ var isCurrentThemeDark = false;
71
+ if (theme == "dark") {
72
+ isCurrentThemeDark = true;
73
+ } else if (theme == "light") {
74
+ isCurrentThemeDark = false;
75
+ } else if (darkModeMatcher.matches) {
76
+ isCurrentThemeDark = true;
77
+ } else {
78
+ isCurrentThemeDark = false;
79
+ }
80
+
81
+ var updatedTheme = "dark";
82
+ /* This is performing a logical XNOR */
83
+ if (isCurrentThemeDark == switchTheme) {
84
+ updatedTheme = "light";
85
+ }
86
+
87
+ document.documentElement.setAttribute("data-code-block-theme", updatedTheme);
88
+ localStorage.setItem("code-block-theme", updatedTheme);
89
+ };
90
+
91
+ updateTheme(false);
92
+
93
+ window.onload = function() { updateTheme(false); };
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#666666"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69zm-2 5.79V18h-3.52L12 20.48 9.52 18H6v-3.52L3.52 12 6 9.52V6h3.52L12 3.52 14.48 6H18v3.52L20.48 12 18 14.48zM12 6.5v11c3.03 0 5.5-2.47 5.5-5.5S15.03 6.5 12 6.5z"/></svg>
@@ -0,0 +1,187 @@
1
+ require "commonmarker"
2
+ require "jekyll-commonmark-ghpages"
3
+ require "jekyll"
4
+ require "securerandom"
5
+
6
+ class CodeTabsCustomerRenderer < JekyllCommonMarkCustomRenderer
7
+ @added_copy_snackbar = false
8
+
9
+ def code_block(node)
10
+ #Determine what objects this code block is surrounded by.
11
+ previous_node_type = node&.previous&.type&.to_s
12
+ next_node_type = node&.next&.type&.to_s
13
+
14
+ #If this item has neighboring code blocks or a custom tab header, it should show tabs
15
+ using_custom_label = (split_lanugage_fence_info(node)&.size || 0) > 1
16
+ is_header_item = previous_node_type != "code_block" && (next_node_type == "code_block" || using_custom_label)
17
+ is_alone = previous_node_type != "code_block" && next_node_type != "code_block" && !using_custom_label
18
+
19
+ #Get a unique ID per code block in order to allow code copying
20
+ individual_code_block_id = SecureRandom.uuid
21
+
22
+ if (is_copy_action_enabled(node))
23
+ if (!@added_copy_snackbar)
24
+ out("<div id=\"code_copied_snackbar\">Copied!</div>")
25
+ @added_copy_snackbar = true
26
+ end
27
+ end
28
+
29
+ #Create a header if necessary and then creates the wrapper for each item
30
+ #This allows tabs to be selected individaully
31
+ if (is_header_item)
32
+ create_tabbed_code_header(node)
33
+ out("<li class=\"code_switcher_container_parent active-tab #{get_code_language_switcher_class(node)} #{individual_code_block_id}\">")
34
+ elsif (!is_alone)
35
+ out("<li class=\"code_switcher_container_parent #{get_code_language_switcher_class(node)} #{individual_code_block_id}\">")
36
+ else
37
+ out("<div class=\"code_switcher_container_parent #{individual_code_block_id}\">")
38
+ end
39
+
40
+ #Add the action buttons for this code block
41
+ #Changing theme button is added to all code blocks, but the copy button is configurable.
42
+ out("<div class=\"code_switcher_code_action_container\">")
43
+ if (is_copy_action_enabled(node))
44
+ out("<button id=\"code_switcher_copy_button\" class=\"code_switcher_copy_button\" title=\"Copy\" onclick=\"copyText(\'#{individual_code_block_id}\', \'#{get_code_copy_Lines(node)}\')\"></button>")
45
+ end
46
+ out("<button class=\"code_switcher_theme_button\" onclick=\"updateTheme(true)\"></button>")
47
+ out("</div>")
48
+
49
+ #Generate the actual code block from markdown using the super class
50
+ super(node)
51
+
52
+ #Close this code block's container
53
+ if (!is_alone)
54
+ out("</li>")
55
+ else
56
+ out("</div>")
57
+ end
58
+
59
+ #Closee the entire tab container if this is the last code block in a tabbed container
60
+ if (next_node_type != "code_block" && !is_alone)
61
+ out("</ul>")
62
+ end
63
+ end
64
+
65
+ #Splits the code fence into the language and extra info
66
+ #Removes the CopyDisable item which is just a flag used to enable showing a copy action button
67
+ def split_lanugage_fence_info(node)
68
+ node&.fence_info&.sub(/ CopyDisable=?"?([\ \-\,0-9]*)"?/, "")&.split(/[\s,]/, 2)
69
+ end
70
+
71
+ #Gets the language used in the code fence (the part typically immediately after a triple backtick in markdown)
72
+ def get_code_language(node)
73
+ split_lanugage_fence_info(node)&.first || "unknown"
74
+ end
75
+
76
+ #Gets the label shown to the user. This is the rest of code fence after the first space
77
+ def get_code_language_label(node)
78
+ split_lanugage_fence_info(node)&.last || "Code"
79
+ end
80
+
81
+ #Gets language class name used for the code switcher. This allows selection of the same language across
82
+ #multiple code tab items.
83
+ def get_code_language_switcher_class(node)
84
+ lang = get_code_language(node)
85
+ lang == "unknown" ? "" : "code_switcher_#{lang&.downcase}"
86
+ end
87
+
88
+ #Determines whether the copy action should be shown for a given code block based on info in the code fence info
89
+ def is_copy_action_enabled(node)
90
+ !node&.fence_info&.include?("CopyDisable")
91
+ end
92
+
93
+ def get_code_copy_Lines(node)
94
+ node&.fence_info[/ CopyDisable=?"?([\ \-\,0-9]*)"?/, 1] || ""
95
+ end
96
+
97
+ #Creates the tab header portion of the code switcher
98
+ def create_tabbed_code_header(node)
99
+ uuid = SecureRandom.uuid
100
+
101
+ out("<ul class=\"code-tab-container #{uuid}\">")
102
+
103
+ tab_number = 0
104
+ tab_node = node
105
+ while tab_node&.type&.to_s == 'code_block'
106
+ label = get_code_language_label(tab_node)
107
+
108
+ active_tab_class = (tab_number == 0) ? "active-tab" : ""
109
+ code_lang_class = get_code_language_switcher_class(tab_node)
110
+ out("<li class=\"#{active_tab_class} #{code_lang_class}\">")
111
+ out("<a onclick=\"selectTab('#{code_lang_class}', '#{uuid}', #{tab_number})\">#{label}</a>")
112
+ out("</li>")
113
+
114
+ tab_node = tab_node&.next
115
+ tab_number = tab_number + 1
116
+ end
117
+
118
+ out("</ul>")
119
+
120
+ out("<ul class=\"code-tab-switcher #{uuid}\">")
121
+ end
122
+ end
123
+
124
+ class Jekyll::Converters::Markdown
125
+ # A Markdown renderer which uses CodeTabsCustomerRenderer to output the
126
+ # final document. The CodeTabsCustomerRenderer renderer mainly uses the
127
+ # parent render but updates code blocks to allow for tabbing behavior
128
+ class CommonMarkCodeTabs < CommonMarkGhPages
129
+ def convert(content)
130
+ doc = CommonMarker.render_doc(content, @parse_options, @extensions)
131
+ html = CodeTabsCustomerRenderer.new(
132
+ :options => @render_options,
133
+ :extensions => @extensions
134
+ ).render(doc)
135
+ html.gsub(/<br data-jekyll-commonmark-ghpages>/, "\n")
136
+ end
137
+ end
138
+ end
139
+
140
+ def get_resource_string(site)
141
+ return "<link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Roboto+Mono\"/>" +
142
+ "<link rel=\"stylesheet\" href=\"#{site.baseurl}/assets/codeblock.css\"/>" +
143
+ "<script src=\"#{site.baseurl}/assets/codeblock.js\"></script>"
144
+ end
145
+
146
+ def add_resource_links_in_html_head(site)
147
+ site_directory = "#{site.in_dest_dir("/")}"
148
+
149
+ # For every html file in the generated site
150
+ Dir.glob("**/*.html", base: site_directory).each do |file_name|
151
+ file_plus_path = "#{site_directory}#{file_name}"
152
+
153
+ # Check if the file contains a code switcher and skip it if it does not
154
+ if (!File.foreach(file_plus_path).grep(/code_switcher_container_parent/).any?)
155
+ next
156
+ end
157
+
158
+ # If the file has a code switcher and a head element, add the resource links to the end of the head element
159
+ if (File.foreach(file_plus_path).grep(/<\/head>/).any?)
160
+ File.write(file_plus_path, File.open(file_plus_path, &:read).sub("</head>","#{get_resource_string(site)}</head>"))
161
+ # Otherwise if it has a html element add a head element with the resource links
162
+ elsif (File.foreach(file_plus_path).grep(/<\/html>/).any?)
163
+ File.write(file_plus_path, File.open(file_plus_path, &:read).sub(/(<html.*>)/,"#{$1}<head>#{get_resource_string(site)}</head>"))
164
+ end
165
+ end
166
+ end
167
+
168
+ #After the site is written, the necessary files this plugin's generateed code needs are also written
169
+ Jekyll::Hooks.register :site, :post_write do |site|
170
+ #Copy CSS required for code tabs
171
+ css = File.expand_path("../../assets/codeblock.css", __FILE__)
172
+ FileUtils.mkdir_p("#{site.in_dest_dir("assets/")}")
173
+ FileUtils.cp(css, "#{site.in_dest_dir("assets/codeblock.css")}")
174
+
175
+ #Copy required javascript
176
+ js = File.expand_path("../../assets/codeblock.js", __FILE__)
177
+ FileUtils.cp(js, "#{site.in_dest_dir("assets/codeblock.js")}")
178
+
179
+ #Copy icons for copy and theme actions
180
+ copy_icon = File.expand_path("../../assets/icon_copy.svg", __FILE__)
181
+ FileUtils.cp(copy_icon, "#{site.in_dest_dir("assets/icon_copy.svg")}")
182
+ theme_icon = File.expand_path("../../assets/icon_theme.svg", __FILE__)
183
+ FileUtils.cp(theme_icon, "#{site.in_dest_dir("assets/icon_theme.svg")}")
184
+
185
+ #Add CSS & JS references to files that use code tabs
186
+ add_resource_links_in_html_head(site)
187
+ end
metadata ADDED
@@ -0,0 +1,115 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jekyll-commonmark-codetabs
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - vveicc
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-03-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: securerandom
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: jekyll-commonmark-ghpages
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rouge
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '3'
48
+ - - "<"
49
+ - !ruby/object:Gem::Version
50
+ version: '4'
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '3'
58
+ - - "<"
59
+ - !ruby/object:Gem::Version
60
+ version: '4'
61
+ - !ruby/object:Gem::Dependency
62
+ name: jekyll
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '4.2'
68
+ - - "<"
69
+ - !ruby/object:Gem::Version
70
+ version: '5.0'
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '4.2'
78
+ - - "<"
79
+ - !ruby/object:Gem::Version
80
+ version: '5.0'
81
+ description:
82
+ email: vveicc@163.com
83
+ executables: []
84
+ extensions: []
85
+ extra_rdoc_files: []
86
+ files:
87
+ - assets/codeblock.css
88
+ - assets/codeblock.js
89
+ - assets/icon_copy.svg
90
+ - assets/icon_theme.svg
91
+ - lib/jekyll-commonmark-codetabs.rb
92
+ homepage: https://github.com/vveicc/jekyll-commonmark-codetabs
93
+ licenses:
94
+ - MIT
95
+ metadata: {}
96
+ post_install_message:
97
+ rdoc_options: []
98
+ require_paths:
99
+ - lib
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: 2.6.0
105
+ required_rubygems_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ requirements: []
111
+ rubygems_version: 3.0.3.1
112
+ signing_key:
113
+ specification_version: 4
114
+ summary: CommonMark generator for Jekyll that adds tabbed code functionality
115
+ test_files: []