jekyll-spaceship 0.3.0 → 0.4.0
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 +4 -4
- data/README.md +279 -62
- data/jekyll-spaceship.gemspec +1 -1
- data/lib/jekyll-spaceship/processors/mathjax-processor.rb +1 -1
- data/lib/jekyll-spaceship/processors/table-processor.rb +31 -14
- data/lib/jekyll-spaceship/processors/video-processor.rb +97 -0
- data/lib/jekyll-spaceship/version.rb +1 -1
- data/lib/jekyll-spaceship.rb +1 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f948e78348f6b74d101dff999356e1188dc973cdc7e1eb697f74777406755ce0
|
4
|
+
data.tar.gz: cfae2fbfc444d4db48c1c68824c96fd6d8c4cf4ca1f3b01c5c987fff252673a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65e2c45a6b175cb712c4900644537d53fa6fd73632c8a7f685dcd83d4e1a019adfcb5c7e3ee6f5b7053de16556cf5e73d9ffee0f07bd908a9f2565f1843dbc11
|
7
|
+
data.tar.gz: 68f7e48bc2f10217c99a2bf7f75530dedceb1cf90a062d1bdfe80d6c0951af058ca5708059ceca03c9206a6c253eb71334ca11efa2fff4a69135101d5941b56b
|
data/README.md
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
[](https://codeclimate.com/github/jeffreytse/jekyll-spaceship)
|
6
6
|
[](https://codeclimate.com/github/jeffreytse/jekyll-spaceship/test_coverage)
|
7
7
|
|
8
|
-
A Jekyll plugin to provide powerful supports for table, mathjax, plantuml, etc.
|
8
|
+
A Jekyll plugin to provide powerful supports for table, mathjax, plantuml, youtube, etc.
|
9
9
|
|
10
10
|
## Table of Contents
|
11
11
|
|
@@ -17,14 +17,23 @@ A Jekyll plugin to provide powerful supports for table, mathjax, plantuml, etc.
|
|
17
17
|
- [1.2 Multiline](#multiline)
|
18
18
|
- [1.3 Headerless](#headerless)
|
19
19
|
- [1.4 Cell Alignment](#cell-alignment)
|
20
|
+
- [1.5 Cell Markdown](#cell-markdown)
|
20
21
|
- [2. MathJax Usage](#2-mathjax-usage)
|
21
22
|
- [3. PlantUML Usage](#3-plantuml-usage)
|
23
|
+
- [4. Video Usage](#4-video-usage)
|
24
|
+
- [4.1 Youtube Usage](#youtube-usage)
|
25
|
+
- [4.2 Vimeo Usage](#vimeo-usage)
|
26
|
+
- [4.3 DailyMotion Usage](#dailymotion-usage)
|
27
|
+
- [5. Hybrid HTML with Markdown](#5-hybrid-html-with-markdown)
|
28
|
+
- [6. Markdown Polyfill](#6-markdown-polyfill)
|
29
|
+
- [6.1 Escape Ordered List](#escape-ordered-list)
|
22
30
|
- [Credits](#credits)
|
23
31
|
- [Contributing](#contributing)
|
24
32
|
- [License](#license)
|
25
33
|
|
26
34
|
## Requirements
|
27
|
-
|
35
|
+
|
36
|
+
- Ruby >= 2.3.0
|
28
37
|
|
29
38
|
## Installation
|
30
39
|
|
@@ -47,28 +56,29 @@ plugins:
|
|
47
56
|
|
48
57
|
**For now, these extended features are provided:**
|
49
58
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
59
|
+
- Cells spanning multiple columns
|
60
|
+
- Cells spanning multiple rows
|
61
|
+
- Cells text align separately
|
62
|
+
- Table header not required
|
63
|
+
- Grouped table header rows or data rows
|
55
64
|
|
56
65
|
Noted that GitHub filters out style property, so the example displays with the obsolete align property. But in actual this plugin outputs style property with text-align CSS attribute.
|
57
66
|
|
58
67
|
#### Rowspan and Colspan
|
68
|
+
|
59
69
|
^^ in a cell indicates it should be merged with the cell above.
|
60
70
|
This feature is contributed by [pmccloghrylaing](https://github.com/pmccloghrylaing).
|
61
71
|
|
62
72
|
```markdown
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|Glycolysis |
|
66
|
-
|
67
|
-
|Pyruvaye oxidation |
|
68
|
-
|Citric acid cycle
|
69
|
-
|
70
|
-
|
71
|
-
|
|
73
|
+
| Stage | Direct Products | ATP Yields |
|
74
|
+
| -----------------: | --------------: | ---------: |
|
75
|
+
| Glycolysis | 2 ATP | |
|
76
|
+
| ^^ | 2 NADH | 3--5 ATP |
|
77
|
+
| Pyruvaye oxidation | 2 NADH | 5 ATP |
|
78
|
+
| Citric acid cycle | 2 ATP ||
|
79
|
+
| ^^ | 6 NADH | 15 ATP |
|
80
|
+
| ^^ | 2 FADH | 3 ATP |
|
81
|
+
| 30--32 ATP |||
|
72
82
|
```
|
73
83
|
|
74
84
|
Code above would be parsed as:
|
@@ -114,18 +124,19 @@ Code above would be parsed as:
|
|
114
124
|
</table>
|
115
125
|
|
116
126
|
#### Multiline
|
127
|
+
|
117
128
|
A backslash at end to join cell contents with the following lines.
|
118
129
|
This feature is contributed by [Lucas-C](https://github.com/Lucas-C).
|
119
130
|
|
120
131
|
```markdown
|
121
|
-
|
122
|
-
|
123
|
-
| Apple | Banana |
|
124
|
-
| Apple | Banana |
|
125
|
-
| Apple | Banana |
|
126
|
-
| Apple | Banana |
|
127
|
-
| Apple | Banana |
|
128
|
-
| Apple | Banana |
|
132
|
+
| : Easy Multiline : |||
|
133
|
+
| :----- | :----- | :------ |
|
134
|
+
| Apple | Banana | Orange \
|
135
|
+
| Apple | Banana | Orange \
|
136
|
+
| Apple | Banana | Orange
|
137
|
+
| Apple | Banana | Orange \
|
138
|
+
| Apple | Banana | Orange |
|
139
|
+
| Apple | Banana | Orange |
|
129
140
|
```
|
130
141
|
|
131
142
|
Code above would be parsed as:
|
@@ -156,18 +167,19 @@ Code above would be parsed as:
|
|
156
167
|
</table>
|
157
168
|
|
158
169
|
#### Headerless
|
170
|
+
|
159
171
|
Table header can be eliminated.
|
160
172
|
|
161
173
|
```markdown
|
162
174
|
|--|--|--|--|--|--|--|--|
|
163
|
-
|♜|
|
164
|
-
|
|
165
|
-
|♟|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|♙|♙|♙|♙|
|
170
|
-
|♖|♘|♗|♕|♔|
|
175
|
+
|♜| |♝|♛|♚|♝|♞|♜|
|
176
|
+
| |♟|♟|♟| |♟|♟|♟|
|
177
|
+
|♟| |♞| | | | | |
|
178
|
+
| |♗| | |♟| | | |
|
179
|
+
| | | | |♙| | | |
|
180
|
+
| | | | | |♘| | |
|
181
|
+
|♙|♙|♙|♙| |♙|♙|♙|
|
182
|
+
|♖|♘|♗|♕|♔| | |♖|
|
171
183
|
```
|
172
184
|
|
173
185
|
Code above would be parsed as:
|
@@ -258,21 +270,22 @@ Code above would be parsed as:
|
|
258
270
|
</table>
|
259
271
|
|
260
272
|
#### Cell Alignment
|
273
|
+
|
261
274
|
Markdown table syntax use colons ":" for forcing column alignment.
|
262
|
-
Therefore, here we also use it for foring cell alignment.
|
275
|
+
Therefore, here we also use it for foring cell alignment.
|
263
276
|
|
264
277
|
Table cell can be set alignment separately.
|
265
278
|
|
266
|
-
```
|
267
|
-
|
268
|
-
|
269
|
-
| Apple
|
270
|
-
| Banana
|
271
|
-
| Orange
|
272
|
-
|
273
|
-
|^^
|
274
|
-
|^^
|
275
|
-
|^^
|
279
|
+
```markdown
|
280
|
+
| : Fruits \|\| Food : |||
|
281
|
+
| :--------- | :-------- | :-------- |
|
282
|
+
| Apple | : Apple :| Apple \
|
283
|
+
| Banana | Banana | Banana \
|
284
|
+
| Orange | Orange | Orange |
|
285
|
+
| : Rowspan is 4 : || How's it? |
|
286
|
+
|^^ A. Peach || 1. Fine :|
|
287
|
+
|^^ B. Orange ||^^ 2. Bad |
|
288
|
+
|^^ C. Banana || It's OK! |
|
276
289
|
```
|
277
290
|
|
278
291
|
Code above would be parsed as:
|
@@ -309,22 +322,79 @@ Rowspan is 4
|
|
309
322
|
</tbody>
|
310
323
|
</table>
|
311
324
|
|
325
|
+
#### Cell Markdown
|
326
|
+
|
327
|
+
Sometimes we may need some abundant content (e.g., mathjax, image, video) in Markdown table
|
328
|
+
Therefore, here we also make markown syntax possible inside a cell.
|
329
|
+
|
330
|
+
```markdown
|
331
|
+
| : MathJax \|\| Image : |||
|
332
|
+
| :------------ | :-------- | :----------------------------- |
|
333
|
+
| Apple | : Apple : | Apple \
|
334
|
+
| Banana | Banana | Banana \
|
335
|
+
| Orange | Orange | Orange |
|
336
|
+
| : Rowspan is 4 : || : How's it? : |
|
337
|
+
| ^^ A. Peach || 1. ![example][cell-image] |
|
338
|
+
| ^^ B. Orange || ^^ 2. $I = \int \rho R^{2} dV$ |
|
339
|
+
| ^^ C. Banana || **It's OK!** |
|
340
|
+
|
341
|
+
[cell-image]: https://jekyllrb.com/img/octojekyll.png "An exemplary image"
|
342
|
+
```
|
343
|
+
|
344
|
+
Code above would be parsed as:
|
345
|
+
|
346
|
+
<table>
|
347
|
+
<thead>
|
348
|
+
<tr>
|
349
|
+
<th align="center" colspan="3">MathJax || Image
|
350
|
+
</tr>
|
351
|
+
</thead>
|
352
|
+
<tbody>
|
353
|
+
<tr>
|
354
|
+
<td align="left">Apple<br>Banana<br>Orange</td>
|
355
|
+
<td align="center">Apple<br>Banana<br>Orange</td>
|
356
|
+
<td align="left">Apple<br>Banana<br>Orange</td>
|
357
|
+
</tr>
|
358
|
+
<tr>
|
359
|
+
<td align="center" rowspan="4" colspan="2">
|
360
|
+
Rowspan is 4
|
361
|
+
<br>A. Peach
|
362
|
+
<br>B. Orange
|
363
|
+
<br>C. Banana
|
364
|
+
</td>
|
365
|
+
</tr>
|
366
|
+
<tr>
|
367
|
+
<td align="center">How's it?</td>
|
368
|
+
</tr>
|
369
|
+
<tr>
|
370
|
+
<td align="left">
|
371
|
+
<ol>
|
372
|
+
<li><img width="100" src="http://latex2png.com/pngs/82b913db54a9f303bed7197d11347d74.png"></img></li>
|
373
|
+
<li><img width="150" src="https://jekyllrb.com/img/octojekyll.png" title="An exemplary image"></img></li>
|
374
|
+
</ol>
|
375
|
+
</td>
|
376
|
+
</tr>
|
377
|
+
<tr>
|
378
|
+
<td align="left"><b>It' OK!</b></td>
|
379
|
+
</tr>
|
380
|
+
</tbody>
|
381
|
+
</table>
|
312
382
|
|
313
383
|
### 2. MathJax Usage
|
384
|
+
|
314
385
|
[MathJax](http://www.mathjax.org/) is an open-source JavaScript display engine for LaTeX, MathML, and AsciiMath notation that works in all modern browsers.
|
315
386
|
|
316
387
|
**Some of the main features of MathJax include:**
|
317
388
|
|
318
|
-
|
319
|
-
|
389
|
+
- High-quality display of LaTeX, MathML, and AsciiMath notation in HTML pages
|
390
|
+
- Supported in most browsers with no plug-ins, extra fonts, or special
|
320
391
|
setup for the reader
|
321
|
-
|
322
|
-
|
392
|
+
- Easy for authors, flexible for publishers, extensible for developers
|
393
|
+
- Supports math accessibility, cut-and-paste interoperability, and other
|
323
394
|
advanced functionality
|
324
|
-
|
325
|
-
|
395
|
+
- Powerful API for integration with other web applications
|
326
396
|
|
327
|
-
Put your math expression within
|
397
|
+
Put your math expression within \\\\\\\\\$...\$
|
328
398
|
|
329
399
|
```markdown
|
330
400
|
$ a * b = c ^ b $
|
@@ -339,31 +409,177 @@ $ \int\_a^b f(x)\,dx. $
|
|
339
409
|
```
|
340
410
|
|
341
411
|
### 3. PlantUML Usage
|
412
|
+
|
342
413
|
[PlantUML](http://plantuml.sourceforge.net/) is a component that allows to quickly write:
|
343
|
-
* sequence diagram,
|
344
|
-
* use case diagram,
|
345
|
-
* class diagram,
|
346
|
-
* activity diagram,
|
347
|
-
* component diagram,
|
348
|
-
* state diagram
|
349
|
-
* object diagram
|
350
414
|
|
415
|
+
- sequence diagram,
|
416
|
+
- use case diagram,
|
417
|
+
- class diagram,
|
418
|
+
- activity diagram,
|
419
|
+
- component diagram,
|
420
|
+
- state diagram
|
421
|
+
- object diagram
|
351
422
|
|
352
423
|
There are two ways to create a diagram in your Jekyll blog page:
|
353
424
|
|
425
|
+
````markdown
|
426
|
+
```plantuml
|
427
|
+
Bob -> Alice : hello world
|
428
|
+
```
|
429
|
+
````
|
430
|
+
|
431
|
+
or
|
432
|
+
|
354
433
|
```markdown
|
355
434
|
@startuml
|
356
435
|
Bob -> Alice : hello
|
357
436
|
@enduml
|
358
437
|
```
|
359
438
|
|
360
|
-
|
439
|
+
### 4. Video Usage
|
361
440
|
|
362
|
-
|
363
|
-
|
364
|
-
|
441
|
+
How often did you find yourself googling "**How to embed a video in markdown?**"
|
442
|
+
|
443
|
+
While its not possible to embed a video in markdown, the best and easiest way is to extract a frame from the video. To add videos to your markdown files easier I developped this tool for you, and it will parse the video link inside the image block automatically.
|
444
|
+
|
445
|
+
**For now, these video links parsing are provided:**
|
446
|
+
|
447
|
+
- Youtube
|
448
|
+
- Vimeo
|
449
|
+
- DailyMotion
|
450
|
+
|
451
|
+
There are two ways to embed a video in your Jekyll blog page:
|
452
|
+
|
453
|
+
Inline-style:
|
454
|
+
|
455
|
+
```markdown
|
456
|
+

|
457
|
+
```
|
458
|
+
|
459
|
+
Reference-style:
|
460
|
+
|
461
|
+
```markdown
|
462
|
+
![][{reference}]
|
463
|
+
|
464
|
+
[{reference}]: {video-link}
|
465
|
+
```
|
466
|
+
|
467
|
+
For configuring video attributes (e.g, width, height), just adding query string to
|
468
|
+
the link as below:
|
469
|
+
|
470
|
+
```markdown
|
471
|
+

|
472
|
+
```
|
473
|
+
|
474
|
+
```markdown
|
475
|
+

|
476
|
+
```
|
477
|
+
|
478
|
+
#### Youtube Usage
|
479
|
+
|
480
|
+
```markdown
|
481
|
+

|
482
|
+
```
|
483
|
+
|
484
|
+
```markdown
|
485
|
+

|
486
|
+
```
|
487
|
+
|
488
|
+
#### Vimeo Usage
|
489
|
+
|
490
|
+
```markdown
|
491
|
+

|
492
|
+
```
|
493
|
+
|
494
|
+
```markdown
|
495
|
+

|
496
|
+
```
|
497
|
+
|
498
|
+
#### DailyMotion Usage
|
499
|
+
|
500
|
+
```markdown
|
501
|
+

|
502
|
+
```
|
503
|
+
|
504
|
+
```markdown
|
505
|
+

|
506
|
+
```
|
507
|
+
|
508
|
+
### 5. Hybrid HTML with Markdown
|
509
|
+
|
510
|
+
As markdown is not only a lightweight markup language with plain-text-formatting syntax, but also an easy-to-read and easy-to-write plain text format, so writing a hybrid HTML with markdown is an awesome choice.
|
511
|
+
|
512
|
+
It's easy to write markdown inside HTML:
|
513
|
+
|
514
|
+
```html
|
515
|
+
<script type="text/markdown">
|
516
|
+
# Hybrid HTML with Markdown is a not bad choice ^\_^
|
517
|
+
|
518
|
+
## Table Usage
|
519
|
+
|
520
|
+
| : Fruits \|\| Food : |||
|
521
|
+
| :--------- | :-------- | :-------- |
|
522
|
+
| Apple | : Apple :| Apple \
|
523
|
+
| Banana | Banana | Banana \
|
524
|
+
| Orange | Orange | Orange |
|
525
|
+
| : Rowspan is 4 : || How's it? |
|
526
|
+
|^^ A. Peach || 1. Fine :|
|
527
|
+
|^^ B. Orange ||^^ 2. Bad |
|
528
|
+
|^^ C. Banana || It's OK! |
|
529
|
+
|
530
|
+
## PlantUML Usage
|
531
|
+
|
532
|
+
@startuml
|
533
|
+
Bob -> Alice : hello
|
534
|
+
@enduml
|
535
|
+
|
536
|
+
## Video Usage
|
537
|
+
|
538
|
+

|
539
|
+
</script>
|
540
|
+
```
|
541
|
+
|
542
|
+
### 6. Markdown Polyfill
|
543
|
+
|
544
|
+
It allows us to polyfill features for extending markdown syntax.
|
545
|
+
|
546
|
+
**For now, these polyfill features are provided:**
|
547
|
+
|
548
|
+
- Escape ordered list
|
549
|
+
|
550
|
+
#### Escape Ordered List
|
551
|
+
|
552
|
+
A backslash at begin to escape the ordered list.
|
553
|
+
|
554
|
+
```markdown
|
555
|
+
Normal:
|
556
|
+
|
557
|
+
1. List item Apple.
|
558
|
+
3. List item Banana.
|
559
|
+
10. List item Cafe.
|
560
|
+
|
561
|
+
Escaped:
|
562
|
+
|
563
|
+
\1. List item Apple.
|
564
|
+
\3. List item Banana.
|
565
|
+
\10. List item Cafe.
|
566
|
+
```
|
567
|
+
|
568
|
+
Code above would be parsed as:
|
569
|
+
|
570
|
+
```markdown
|
571
|
+
Normal:
|
572
|
+
|
573
|
+
1. List item Apple.
|
574
|
+
2. List item Banana.
|
575
|
+
3. List item Cafe.
|
576
|
+
|
577
|
+
Escaped:
|
578
|
+
|
579
|
+
1. List item Apple.
|
580
|
+
3. List item Banana.
|
581
|
+
10. List item Cafe.
|
365
582
|
```
|
366
|
-
````
|
367
583
|
|
368
584
|
## Credits
|
369
585
|
|
@@ -378,4 +594,5 @@ Issues and Pull Requests are greatly appreciated. If you've never contributed to
|
|
378
594
|
You can start by [opening an issue](https://github.com/jeffreytse/jekyll-spaceship/issues/new) describing the problem that you're looking to resolve and we'll go from there.
|
379
595
|
|
380
596
|
## License
|
597
|
+
|
381
598
|
This software is licensed under the [MIT license](https://opensource.org/licenses/mit-license.php) © JeffreyTse.
|
data/jekyll-spaceship.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.version = Jekyll::Spaceship::VERSION
|
10
10
|
spec.authors = ["jeffreytse"]
|
11
11
|
spec.email = ["jeffreytse.mail@gmail.com"]
|
12
|
-
spec.summary = "A Jekyll plugin to provide powerful supports for table, mathjax, plantuml, etc."
|
12
|
+
spec.summary = "A Jekyll plugin to provide powerful supports for table, mathjax, plantuml, youtube, etc."
|
13
13
|
spec.homepage = "https://github.com/jeffreytse/jekyll-spaceship"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
@@ -6,6 +6,26 @@ require "nokogiri"
|
|
6
6
|
module Jekyll::Spaceship
|
7
7
|
class TableProcessor < Processor
|
8
8
|
def on_handle_markdown(content)
|
9
|
+
# pre-handle reference-style links
|
10
|
+
references = {}
|
11
|
+
content.scan(/(\[(.*)\]:\s*(.*))/) do |match_data|
|
12
|
+
ref_name = match_data[1]
|
13
|
+
ref_value = match_data[2]
|
14
|
+
references[ref_name] = ref_value
|
15
|
+
end
|
16
|
+
if references.size > 0
|
17
|
+
content.scan(/.*(?<!\\)\|.*/) do |result|
|
18
|
+
references.each do |key, val|
|
19
|
+
replace = result.gsub(/\[(.*)\]\s*\[#{key}\]/, "[\1](#{val})")
|
20
|
+
next if result == replace
|
21
|
+
content = content.gsub(result, replace)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# pre-handle row-span
|
27
|
+
content = content.gsub(/(?<!\\)(\|.*\\\s*)\|\s*\n/, "\\1\n")
|
28
|
+
|
9
29
|
# escape | and :
|
10
30
|
content = content.gsub(/\|(?=\|)/, '\\|')
|
11
31
|
.gsub(/\\:(?=.*?(?<!\\)\|)/, '\\\\\\\\:')
|
@@ -15,13 +35,10 @@ module Jekyll::Spaceship
|
|
15
35
|
content.scan(/.*(?<!\\)\|.*/) do |result|
|
16
36
|
replace = result.gsub(
|
17
37
|
/(?<!(?<!\\)\\)(\*|\$|\[|\(|\"|_)/,
|
18
|
-
'\\\\\\\\\1'
|
19
|
-
|
20
|
-
|
21
|
-
content = content.gsub(result, replace)
|
22
|
-
end
|
38
|
+
'\\\\\\\\\1')
|
39
|
+
next if result == replace
|
40
|
+
content = content.gsub(result, replace)
|
23
41
|
end
|
24
|
-
|
25
42
|
content
|
26
43
|
end
|
27
44
|
|
@@ -123,9 +140,9 @@ module Jekyll::Spaceship
|
|
123
140
|
# handle multi-rows
|
124
141
|
return if cell != cells.last
|
125
142
|
|
126
|
-
match = cell.content.match(
|
143
|
+
match = cell.content.match(/(?<!\\)\\\s*$/)
|
127
144
|
if match
|
128
|
-
cell.content = cell.content.gsub(
|
145
|
+
cell.content = cell.content.gsub(/(?<!\\)\\\s*$/, '')
|
129
146
|
if not scope_table.multi_row_start
|
130
147
|
scope_table.multi_row_cells = cells
|
131
148
|
scope_table.multi_row_start = true
|
@@ -161,8 +178,8 @@ module Jekyll::Spaceship
|
|
161
178
|
|
162
179
|
# handle rowspan
|
163
180
|
span_cell = scope_table.span_row_cells[scope_row.col_index]
|
164
|
-
if span_cell and cell.content.match(
|
165
|
-
cell.content = cell.content.gsub(
|
181
|
+
if span_cell and cell.content.match(/^\s*\^{2}/)
|
182
|
+
cell.content = cell.content.gsub(/^\s*\^{2}/, '')
|
166
183
|
span_cell.content += " \n#{cell.content}"
|
167
184
|
rowspan = span_cell.get_attribute('rowspan') || 1
|
168
185
|
rowspan = rowspan.to_i + 1
|
@@ -180,12 +197,12 @@ module Jekyll::Spaceship
|
|
180
197
|
|
181
198
|
# pre-handle text align
|
182
199
|
align = 0
|
183
|
-
if cell.content.match(
|
184
|
-
cell.content = cell.content.gsub(
|
200
|
+
if cell.content.match(/^\s*:(?!:)/)
|
201
|
+
cell.content = cell.content.gsub(/^\s*:/, '')
|
185
202
|
align += 1
|
186
203
|
end
|
187
|
-
if cell.content.match(/(?<!\\)
|
188
|
-
cell.content = cell.content.gsub(
|
204
|
+
if cell.content.match(/(?<!\\):\s*$/)
|
205
|
+
cell.content = cell.content.gsub(/:\s*$/, '')
|
189
206
|
align += 2
|
190
207
|
end
|
191
208
|
|
@@ -0,0 +1,97 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Jekyll::Spaceship
|
4
|
+
class VideoProcessor < Processor
|
5
|
+
def on_handle_markdown(content)
|
6
|
+
content = handle_youtube(content)
|
7
|
+
content = handle_vimeo(content)
|
8
|
+
content = handle_dailymotion(content)
|
9
|
+
end
|
10
|
+
|
11
|
+
# Examples:
|
12
|
+
# 
|
13
|
+
# 
|
14
|
+
# 
|
15
|
+
def handle_youtube(content)
|
16
|
+
handle_video(content, {
|
17
|
+
host: '(https?:)?\\/\\/.*youtu.*',
|
18
|
+
id: '(?<=\\?v\\=|embed\\/|\\.be\\/)([a-zA-Z0-9\\_\\-]+)',
|
19
|
+
iframe_url: "https://www.youtube.com/embed/"
|
20
|
+
})
|
21
|
+
end
|
22
|
+
|
23
|
+
# Examples:
|
24
|
+
# 
|
25
|
+
# 
|
26
|
+
def handle_vimeo(content)
|
27
|
+
handle_video(content, {
|
28
|
+
host: '(https?:)?\\/\\/vimeo\\.com\\/',
|
29
|
+
id: '([0-9]+)',
|
30
|
+
iframe_url: "https://player.vimeo.com/video/",
|
31
|
+
width: 600,
|
32
|
+
height: 350
|
33
|
+
})
|
34
|
+
end
|
35
|
+
|
36
|
+
# Examples:
|
37
|
+
# 
|
38
|
+
# 
|
39
|
+
def handle_dailymotion(content)
|
40
|
+
handle_video(content, {
|
41
|
+
host: '(https?:)?\\/\\/.*dai.?ly.*',
|
42
|
+
id: '(?<=video\\/|\\/)([a-zA-Z0-9\\_\\-]+)',
|
43
|
+
iframe_url: "https://www.dailymotion.com/embed/video/"
|
44
|
+
})
|
45
|
+
end
|
46
|
+
|
47
|
+
def handle_video(content, data)
|
48
|
+
host = data[:host]
|
49
|
+
return content if content.sub(/#{host}/, '').nil?
|
50
|
+
|
51
|
+
iframe_url = data[:iframe_url]
|
52
|
+
id = data[:id]
|
53
|
+
url = "(#{host}#{id}\\S*)"
|
54
|
+
title = '("(.*)".*){0,1}'
|
55
|
+
|
56
|
+
# pre-handle reference-style links
|
57
|
+
regex = /(\[(.*)\]:\s*(#{url}\s*#{title}))/
|
58
|
+
content.scan regex do |match_data|
|
59
|
+
match = match_data[0]
|
60
|
+
ref_name = match_data[1]
|
61
|
+
ref_value = match_data[2]
|
62
|
+
content = content.gsub(match, '')
|
63
|
+
.gsub(/\!\[(.*)\]\s*\[#{ref_name}\]/,
|
64
|
+
"")
|
65
|
+
end
|
66
|
+
|
67
|
+
# handle inline-style links
|
68
|
+
regex = /(\!\[(.*)\]\(.*#{url}\s*#{title}\))/
|
69
|
+
content.scan regex do |match_data|
|
70
|
+
url = match_data[2]
|
71
|
+
id = match_data[4]
|
72
|
+
title = match_data[6]
|
73
|
+
width = url.match(/(?<=width=)(\S*?)(?=&|$)/)
|
74
|
+
height = url.match(/(?<=height=)(\S*?)(?=&|$)/)
|
75
|
+
|
76
|
+
data[:width] = 600 if data[:width].nil?
|
77
|
+
data[:height] = 400 if data[:height].nil?
|
78
|
+
width = data[:width] if width.nil?
|
79
|
+
height = data[:height] if height.nil?
|
80
|
+
|
81
|
+
url = "#{iframe_url}#{id}"
|
82
|
+
html = "<iframe \
|
83
|
+
src=\"#{url}\" \
|
84
|
+
title=\"#{title}\" \
|
85
|
+
width=\"#{width}\" \
|
86
|
+
height=\"#{height}\" \
|
87
|
+
frameborder=\"0\" \
|
88
|
+
allowfullscreen=\"\">\
|
89
|
+
</iframe>"
|
90
|
+
|
91
|
+
content = content.gsub(match_data[0], html)
|
92
|
+
self.handled = true
|
93
|
+
end
|
94
|
+
content
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
data/lib/jekyll-spaceship.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-spaceship
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jeffreytse
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-04-
|
11
|
+
date: 2020-04-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -100,6 +100,7 @@ files:
|
|
100
100
|
- lib/jekyll-spaceship/processors/plantuml-processor.rb
|
101
101
|
- lib/jekyll-spaceship/processors/polyfill-processor.rb
|
102
102
|
- lib/jekyll-spaceship/processors/table-processor.rb
|
103
|
+
- lib/jekyll-spaceship/processors/video-processor.rb
|
103
104
|
- lib/jekyll-spaceship/utils/plantuml/plantuml.jar
|
104
105
|
- lib/jekyll-spaceship/version.rb
|
105
106
|
homepage: https://github.com/jeffreytse/jekyll-spaceship
|
@@ -125,5 +126,5 @@ rubygems_version: 3.0.6
|
|
125
126
|
signing_key:
|
126
127
|
specification_version: 4
|
127
128
|
summary: A Jekyll plugin to provide powerful supports for table, mathjax, plantuml,
|
128
|
-
etc.
|
129
|
+
youtube, etc.
|
129
130
|
test_files: []
|