jekyll-spaceship 0.1.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 597396d665684f4d0fe9c5cf35b6a644f00700f538fdd34933e4ceebffe089bf
4
- data.tar.gz: 183b6fce2fee3ecee141b34d1fe2143697104ec6d34c2ca6f7cd2dc68005a394
3
+ metadata.gz: 299c1d8d0ae616ad6883c9466fbb2d92d9ef0b23da9720bcc1ab36af029b0186
4
+ data.tar.gz: c148c5a5527bed37cf92677b1dc8814abe802100fafd0165e9178f3f122d1fca
5
5
  SHA512:
6
- metadata.gz: d03b9aca5f5c2c65c3b311a60b562f8e3dc4446f810af91ca6161c7d75c076334d24938ae5532b1829e79b5b1939ae84cdbe1ef258dac410fb37d9375d99b06d
7
- data.tar.gz: 75dfa323d5b7fe831c51c4fad01aae2c018e83d019bddde6f71f8858ba00b5c590e1ef1cce126804fcee7a4434fcf9258768266f371fed5c96bb72751c83c08d
6
+ metadata.gz: 467f9559626e7f2f996d8ec90b38c7d31e6fa72dd8e32243b601fdd84a611b6d4f190e120fa12b568d27be66f932334e2ca2bd924483e28d1728e5a4e469ee12
7
+ data.tar.gz: b5ab6d2249282b1d411f29be94c4382b8f02c51721da8d477ec3134724fce8455f13e827ec32a399ef93643791045aa30cc8dd52e2111da89cad54085f46b75c
@@ -0,0 +1,365 @@
1
+ # jekyll-spaceship
2
+
3
+ [![Build Status](https://travis-ci.org/jeffreytse/jekyll-spaceship.svg?branch=master)](https://travis-ci.org/jeffreytse/jekyll-spaceship)
4
+ [![Gem Version](https://badge.fury.io/rb/jekyll-spaceship.svg)](http://badge.fury.io/rb/jekyll-spaceship)
5
+ [![Code Climate](https://codeclimate.com/github/jeffreytse/jekyll-spaceship/badges/gpa.svg)](https://codeclimate.com/github/jeffreytse/jekyll-spaceship)
6
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/cd56b207f327603662a1/test_coverage)](https://codeclimate.com/github/jeffreytse/jekyll-spaceship/test_coverage)
7
+
8
+ A Jekyll plugin to provide powerful supports for table, mathjax, plantuml, etc.
9
+
10
+ ## Table of Contents
11
+
12
+ - [Installation](#installation)
13
+ - [Usage](#usage)
14
+ - [1. Table Usage](#1-table-usage)
15
+ - [1.1 Rowspan and Colspan](#rowspan-and-colspan)
16
+ - [1.2 Multiline](#multiline)
17
+ - [1.3 Headerless](#headerless)
18
+ - [1.4 Cell Alignment](#cell-alignment)
19
+ - [2. MathJax Usage](#2-mathjax-usage)
20
+ - [3. PlantUML Usage](#3-plantuml-usage)
21
+ - [License](#license)
22
+
23
+
24
+ ## Installation
25
+
26
+ Add jekyll-spaceship plugin in your site's `Gemfile`, and run `bundle install`.
27
+
28
+ ```ruby
29
+ gem 'jekyll-spaceship'
30
+ ```
31
+
32
+ Add jekyll-spaceship to the `gems:` section in your site's `_config.yml`.
33
+
34
+ ```yml
35
+ plugins:
36
+ - jekyll-spaceship
37
+ ```
38
+
39
+ ## Usage
40
+
41
+ ### 1. Table Usage
42
+
43
+ **For now, these extended features are provided:**
44
+
45
+ * Cells spanning multiple columns
46
+ * Cells spanning multiple rows
47
+ * Cells text align separately
48
+ * Table header not required
49
+ * Grouped table header rows or data rows
50
+
51
+ 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.
52
+
53
+ #### Rowspan and Colspan
54
+ ^^ in a cell indicates it should be merged with the cell above.
55
+ This feature is contributed by [pmccloghrylaing](https://github.com/pmccloghrylaing).
56
+
57
+ ```markdown
58
+ | Stage | Direct Products | ATP Yields |
59
+ | ----: | --------------: | ---------: |
60
+ |Glycolysis | 2 ATP ||
61
+ |^^ | 2 NADH | 3--5 ATP |
62
+ |Pyruvaye oxidation | 2 NADH | 5 ATP |
63
+ |Citric acid cycle | 2 ATP | |
64
+ |^^ | 6 NADH | 15 ATP |
65
+ |^^ | 2 FADH | 3 ATP |
66
+ | 30--32 ATP |||
67
+ ```
68
+
69
+ Code above would be parsed as:
70
+
71
+ <table>
72
+ <thead>
73
+ <tr>
74
+ <th align="right">Stage</th>
75
+ <th align="right">Direct Products</th>
76
+ <th align="right">ATP Yields</th>
77
+ </tr>
78
+ </thead>
79
+ <tbody>
80
+ <tr>
81
+ <td align="right" rowspan="2">Glycolysis</td>
82
+ <td align="right" colspan="2">2 ATP</td>
83
+ </tr>
84
+ <tr>
85
+ <td align="right">2 NADH</td>
86
+ <td align="right">3–5 ATP</td>
87
+ </tr>
88
+ <tr>
89
+ <td align="right">Pyruvaye oxidation</td>
90
+ <td align="right">2 NADH</td>
91
+ <td align="right">5 ATP</td>
92
+ </tr>
93
+ <tr>
94
+ <td align="right" rowspan="3">Citric acid cycle</td>
95
+ <td align="right" colspan="2">2 ATP</td>
96
+ </tr>
97
+ <tr>
98
+ <td align="right">6 NADH</td>
99
+ <td align="right">15 ATP</td>
100
+ </tr>
101
+ <tr>
102
+ <td align="right">2 FADH2</td>
103
+ <td align="right">3 ATP</td>
104
+ </tr>
105
+ <tr>
106
+ <td align="right" colspan="3">30–32 ATP</td>
107
+ </tr>
108
+ </tbody>
109
+ </table>
110
+
111
+ #### Multiline
112
+ A backslash at end to join cell contents with the following lines.
113
+ This feature is contributed by [Lucas-C](https://github.com/Lucas-C).
114
+
115
+ ```markdown
116
+ |: Easy Multiline :|||
117
+ |:------ |:------ |:-------- |
118
+ | Apple | Banana | Orange \
119
+ | Apple | Banana | Orange \
120
+ | Apple | Banana | Orange
121
+ | Apple | Banana | Orange \
122
+ | Apple | Banana | Orange |
123
+ | Apple | Banana | Orange |
124
+ ```
125
+
126
+ Code above would be parsed as:
127
+
128
+ <table>
129
+ <thead>
130
+ <tr>
131
+ <th align="center" colspan="3">Easy Multiline</th>
132
+ </tr>
133
+ </thead>
134
+ <tbody>
135
+ <tr>
136
+ <td align="left">Apple<br>Apple<br>Apple</td>
137
+ <td align="left">Banana<br>Banana<br>Banana</td>
138
+ <td align="left">Orange<br>Orange<br>Orange</td>
139
+ </tr>
140
+ <tr>
141
+ <td align="left">Apple<br>Apple</td>
142
+ <td align="left">Banana<br>Banana</td>
143
+ <td align="left">Orange<br>Orange</td>
144
+ </tr>
145
+ <tr>
146
+ <td align="left">Apple</td>
147
+ <td align="left">Banana</td>
148
+ <td align="left">Orange</td>
149
+ </tr>
150
+ </tbody>
151
+ </table>
152
+
153
+ #### Headerless
154
+ Table header can be eliminated.
155
+
156
+ ```markdown
157
+ |--|--|--|--|--|--|--|--|
158
+ |♜| |♝|♛|♚|♝|♞|♜|
159
+ | |♟|♟|♟| |♟|♟|♟|
160
+ |♟| |♞| | | | | |
161
+ | |♗| | |♟| | | |
162
+ | | | | |♙| | | |
163
+ | | | | | |♘| | |
164
+ |♙|♙|♙|♙| |♙|♙|♙|
165
+ |♖|♘|♗|♕|♔| | |♖|
166
+ ```
167
+
168
+ Code above would be parsed as:
169
+
170
+ <table>
171
+ <tbody>
172
+ <tr>
173
+ <td>♜</td>
174
+ <td></td>
175
+ <td>♝</td>
176
+ <td>♛</td>
177
+ <td>♚</td>
178
+ <td>♝</td>
179
+ <td>♞</td>
180
+ <td>♜</td>
181
+ </tr>
182
+ <tr>
183
+ <td></td>
184
+ <td>♟</td>
185
+ <td>♟</td>
186
+ <td>♟</td>
187
+ <td></td>
188
+ <td>♟</td>
189
+ <td>♟</td>
190
+ <td>♟</td>
191
+ </tr>
192
+ <tr>
193
+ <td>♟</td>
194
+ <td></td>
195
+ <td>♞</td>
196
+ <td></td>
197
+ <td></td>
198
+ <td></td>
199
+ <td></td>
200
+ <td></td>
201
+ </tr>
202
+ <tr>
203
+ <td></td>
204
+ <td>♗</td>
205
+ <td></td>
206
+ <td></td>
207
+ <td>♟</td>
208
+ <td></td>
209
+ <td></td>
210
+ <td></td>
211
+ </tr>
212
+ <tr>
213
+ <td></td>
214
+ <td></td>
215
+ <td></td>
216
+ <td></td>
217
+ <td>♙</td>
218
+ <td></td>
219
+ <td></td>
220
+ <td></td>
221
+ </tr>
222
+ <tr>
223
+ <td></td>
224
+ <td></td>
225
+ <td></td>
226
+ <td></td>
227
+ <td></td>
228
+ <td>♘</td>
229
+ <td></td>
230
+ <td></td>
231
+ </tr>
232
+ <tr>
233
+ <td>♙</td>
234
+ <td>♙</td>
235
+ <td>♙</td>
236
+ <td>♙</td>
237
+ <td></td>
238
+ <td>♙</td>
239
+ <td>♙</td>
240
+ <td>♙</td>
241
+ </tr>
242
+ <tr>
243
+ <td>♖</td>
244
+ <td>♘</td>
245
+ <td>♗</td>
246
+ <td>♕</td>
247
+ <td>♔</td>
248
+ <td></td>
249
+ <td></td>
250
+ <td>♖</td>
251
+ </tr>
252
+ </tbody>
253
+ </table>
254
+
255
+ #### Cell Alignment
256
+ Markdown table syntax use colons ":" for forcing column alignment.
257
+ Therefore, here we also use it for foring cell alignment.
258
+
259
+ Table cell can be set alignment separately.
260
+
261
+ ```
262
+ |: Fruits \|\| Food :|||
263
+ |:-------- |:-------- |:------------ |
264
+ | Apple |: Apple :| Apple \
265
+ | Banana | Banana | Banana \
266
+ | Orange | Orange | Orange |
267
+ |: Rowspan is 4 :|| How's it? |
268
+ |^^ A. Peach || 1. Fine :|
269
+ |^^ B. Orange ||^^ 2. Bad |
270
+ |^^ C. Banana || It's OK! |
271
+ ```
272
+
273
+ Code above would be parsed as:
274
+
275
+ <table>
276
+ <thead>
277
+ <tr>
278
+ <th align="center" colspan="3">Fruits || Food
279
+ </tr>
280
+ </thead>
281
+ <tbody>
282
+ <tr>
283
+ <td align="left">Apple<br>Banana<br>Orange</td>
284
+ <td align="center">Apple<br>Banana<br>Orange</td>
285
+ <td align="left">Apple<br>Banana<br>Orange</td>
286
+ </tr>
287
+ <tr>
288
+ <td align="center" rowspan="4" colspan="2">
289
+ Rowspan is 4
290
+ <br>A. Peach
291
+ <br>B. Orange
292
+ <br>C. Banana
293
+ </td>
294
+ </tr>
295
+ <tr>
296
+ <td align="left">How's it?</td>
297
+ </tr>
298
+ <tr>
299
+ <td align="right">1. Fine<br>2. Bad</td>
300
+ </tr>
301
+ <tr>
302
+ <td align="left">It' OK!</td>
303
+ </tr>
304
+ </tbody>
305
+ </table>
306
+
307
+
308
+ ### 2. MathJax Usage
309
+ [MathJax](http://www.mathjax.org/) is an open-source JavaScript display engine for LaTeX, MathML, and AsciiMath notation that works in all modern browsers.
310
+
311
+ **Some of the main features of MathJax include:**
312
+
313
+ * High-quality display of LaTeX, MathML, and AsciiMath notation in HTML pages
314
+ * Supported in most browsers with no plug-ins, extra fonts, or special
315
+ setup for the reader
316
+ * Easy for authors, flexible for publishers, extensible for developers
317
+ * Supports math accessibility, cut-and-paste interoperability, and other
318
+ advanced functionality
319
+ * Powerful API for integration with other web applications
320
+
321
+
322
+ Put your math expression within \$...\$
323
+
324
+ ```markdown
325
+ $ a * b = c ^ b $
326
+ ```
327
+
328
+ ```markdown
329
+ $ 2^{\frac{n-1}{3}} $
330
+ ```
331
+
332
+ ```markdown
333
+ $ \int\_a^b f(x)\,dx. $
334
+ ```
335
+
336
+ ### 3. PlantUML Usage
337
+ [PlantUML](http://plantuml.sourceforge.net/) is a component that allows to quickly write:
338
+ * sequence diagram,
339
+ * use case diagram,
340
+ * class diagram,
341
+ * activity diagram,
342
+ * component diagram,
343
+ * state diagram
344
+ * object diagram
345
+
346
+
347
+ There are two ways to create a diagram in your Jekyll blog page:
348
+
349
+ ```markdown
350
+ @startuml
351
+ Bob -> Alice : hello
352
+ @enduml
353
+ ```
354
+
355
+ or
356
+
357
+ ````markdown
358
+ ``` plantuml
359
+ Bob -> Alice : hello world
360
+ ```
361
+ ````
362
+
363
+
364
+ ## License
365
+ This software is licensed under the [MIT license](https://opensource.org/licenses/mit-license.php) © JeffreyTse.
@@ -6,7 +6,7 @@ module Jekyll::Spaceship
6
6
  class Logger
7
7
  def self.display_info
8
8
  self.log "Jekyll-Spaceship #{Jekyll::Spaceship::VERSION}"
9
- self.log "A powerful Jekyll plugin."
9
+ self.log "A Jekyll plugin to provide powerful supports."
10
10
  self.log "https://github.com/jeffreytse/jekyll-spaceship"
11
11
  end
12
12
 
@@ -6,17 +6,31 @@ module Jekyll::Spaceship
6
6
 
7
7
  def on_posts_pre_render(post)
8
8
  # match default plantuml block and code block
9
- pattern = /(@startuml((?:.|\n)*?)@enduml)|(`{3}\s*plantuml((?:.|\n)*?)`{3})/
9
+ pattern = Regexp.union(
10
+ /(\\?@startuml((?:.|\n)*?)@enduml)/,
11
+ /(`{3}\s*plantuml((?:.|\n)*?)`{3})/
12
+ )
13
+
10
14
  post.content.scan pattern do |match|
11
15
  match = match.filter { |m| not m.nil? }
12
16
  block = match[0]
13
17
  code = match[1]
18
+
19
+ # skip escape default plantuml block
20
+ if block.match? /(^\\@startuml|\\@enduml$)/
21
+ next
22
+ end
23
+
14
24
  Logger.log "handle plantuml block - #{post.path.gsub(/.*_posts\//, '')}"
25
+
15
26
  post.content = post.content.gsub(
16
27
  block,
17
28
  handle_plantuml(code)
18
29
  )
19
30
  end
31
+
32
+ # handle escape default plantuml block
33
+ post.content = post.content.gsub(/\\(@startuml|@enduml)/, '\1')
20
34
  end
21
35
 
22
36
  def handle_plantuml(code)
@@ -9,7 +9,10 @@ module Jekyll::Spaceship
9
9
 
10
10
  def on_posts_pre_render(post)
11
11
  # pre-handle table in markdown
12
- post.content = post.content.gsub(/\|(?=\|)/, '\\|')
12
+ post.content = post.content
13
+ .gsub(/\|(?=\|)/, '\\|')
14
+ .gsub(/\\:(?=.*?(?<!\\)\|)/, '\\\\\\\\:')
15
+ .gsub(/((?<!\\)\|.*?)(\\:)/, '\1\\\\\\\\:')
13
16
  end
14
17
 
15
18
  def on_posts_post_render(post)
@@ -34,6 +37,7 @@ module Jekyll::Spaceship
34
37
  data._[namespace]
35
38
  }
36
39
 
40
+ # handle each table
37
41
  doc.css('table').each do |table|
38
42
  rows = table.css('tr')
39
43
  data.table= table
@@ -161,13 +165,13 @@ module Jekyll::Spaceship
161
165
  cell.content = cell.content.gsub(/^:/, "")
162
166
  align += 1
163
167
  end
164
- if cell.content.match?(/(?<!:):$/)
168
+ if cell.content.match?(/(?<!\\):$/)
165
169
  cell.content = cell.content.gsub(/:$/, "")
166
170
  align += 2
167
171
  end
168
172
 
169
173
  # handle escape colon
170
- cell.content = cell.content.gsub(/::/, ":")
174
+ cell.content = cell.content.gsub(/\\:/, ":")
171
175
 
172
176
  # handle text align
173
177
  return if align == 0
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jekyll
4
4
  module Spaceship
5
- VERSION = "0.1.0"
5
+ VERSION = "0.2.0"
6
6
  end
7
7
  end
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.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - jeffreytse
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-04 00:00:00.000000000 Z
11
+ date: 2019-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -90,6 +90,7 @@ files:
90
90
  - ".gitignore"
91
91
  - Gemfile
92
92
  - LICENSE.txt
93
+ - README.md
93
94
  - jekyll-spaceship.gemspec
94
95
  - lib/jekyll-spaceship.rb
95
96
  - lib/jekyll-spaceship/cores/logger.rb