jekyll-spaceship 0.8.0 β†’ 0.8.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 26f4057b47af49da27acf7f6d6b26851e9094b70f4c2a939270d8fbb0c49272f
4
- data.tar.gz: 64a5c8f08a467de5a67a24d89dba5785d48e2d68add11a8acb10e4199e01922c
3
+ metadata.gz: 5310871597e6232b96116549a1ea824054fe68572ced4bb2a14238bb3b7098fd
4
+ data.tar.gz: 41461f5eb94fda09064bdd21126d0b505c84232bec5a51a309b5954ffa5ba2b6
5
5
  SHA512:
6
- metadata.gz: decab1852e2c7f1dc439eee47805ca18d1192657b7ebb2c707737a031734e376f971d1b5e22e3ea435308caf010ad5f90d55fa13353170822cee5c51c0496b3b
7
- data.tar.gz: 9d11c7b8437a5047b52370ca49de6f84360a80dcb0021f687b0b817644095ab2086b0157a6b2587bc9041906b698005556d444d8f05719b106bc65ec9b361912
6
+ metadata.gz: 9a081bcfb8bcdaed430eeb456cae89172e55de4654ae81412fdf2749b8cb793f2c9cb702b829d1c80aa48db86f8bd5b445bde91cd1d07fdd57d717861e561642
7
+ data.tar.gz: e98d3a810ba88e430f9cddfcfafc4e6f7d5cd77b4b91ed9ad2b073b02332af915059b195fbace35f02dddc88415466405eefc11b0e4c9485633f77d5fc1b0415
data/README.md CHANGED
@@ -140,7 +140,12 @@ plugins:
140
140
  - jekyll-spaceship
141
141
  ```
142
142
 
143
- **πŸ’‘ Tip:** Note that GitHub Pages runs in `safe` mode and only allows [a set of whitelisted plugins](https://pages.github.com/versions/). To use the gem in GitHub Pages, you need to build locally or use CI (e.g. [travis](https://travis-ci.org/), [github workflow](https://help.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow)) and deploy to your `gh-pages` branch. [Click here for more information.](https://jekyllrb.com/docs/continuous-integration/github-actions/) (e.g. [https://github.com/jeffreytse/jekyll-jeffreytse-blog](https://github.com/jeffreytse/jekyll-jeffreytse-blog))
143
+ **πŸ’‘ Tip:** Note that GitHub Pages runs in `safe` mode and only allows [a set of whitelisted plugins](https://pages.github.com/versions/). To use the gem in GitHub Pages, you need to build locally or use CI (e.g. [travis](https://travis-ci.org/), [github workflow](https://help.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow)) and deploy to your `gh-pages` branch.
144
+
145
+ ### Additions
146
+
147
+ * Here is a GitHub Action named [jekyll-deploy-action](https://github.com/jeffreytse/jekyll-deploy-action) for Jekyll site deployment conveniently. πŸ‘
148
+ * Here is a [Jekyll site](https://github.com/jeffreytse/jekyll-jeffreytse-blog) using Travis to build and deploy to GitHub Pages for your references.
144
149
 
145
150
  ## Configuration
146
151
 
@@ -167,7 +172,7 @@ jekyll-spaceship:
167
172
  - ['$','$']
168
173
  - ['\(','\)']
169
174
  plantuml-processor:
170
- mode: default # mode value 'pre-fetch' for fetch image at building stage
175
+ mode: default # mode value 'pre-fetch' for fetching image at building stage
171
176
  css:
172
177
  class: plantuml
173
178
  syntax:
@@ -175,7 +180,7 @@ jekyll-spaceship:
175
180
  custom: ['@startuml', '@enduml']
176
181
  src: http://www.plantuml.com/plantuml/png/
177
182
  mermaid-processor:
178
- mode: default # mode value 'pre-fetch' for fetch image at building stage
183
+ mode: default # mode value 'pre-fetch' for fetching image at building stage
179
184
  css:
180
185
  class: mermaid
181
186
  syntax:
@@ -221,13 +226,13 @@ This feature is contributed by [pmccloghrylaing](https://github.com/pmccloghryla
221
226
  ```markdown
222
227
  | Stage | Direct Products | ATP Yields |
223
228
  | -----------------: | --------------: | ---------: |
224
- | Glycolysis | 2 ATP | |
225
- | ^^ | 2 NADH | 3--5 ATP |
229
+ | Glycolysis | 2 ATP ||
230
+ | ^^ | 2 NADH | 3--5 ATP |
226
231
  | Pyruvaye oxidation | 2 NADH | 5 ATP |
227
232
  | Citric acid cycle | 2 ATP ||
228
- | ^^ | 6 NADH | 15 ATP |
229
- | ^^ | 2 FADH | 3 ATP |
230
- | 30--32 ATP |||
233
+ | ^^ | 6 NADH | 15 ATP |
234
+ | ^^ | 2 FADH | 3 ATP |
235
+ | 30--32 ATP |||
231
236
  ```
232
237
 
233
238
  Code above would be parsed as:
@@ -428,7 +433,7 @@ Table cell can be set alignment separately.
428
433
  ```markdown
429
434
  | : Fruits \|\| Food : |||
430
435
  | :--------- | :-------- | :-------- |
431
- | Apple | : Apple :| Apple \
436
+ | Apple | : Apple : | Apple \
432
437
  | Banana | Banana | Banana \
433
438
  | Orange | Orange | Orange |
434
439
  | : Rowspan is 4 : || How's it? |
@@ -727,7 +732,7 @@ It's easy to write markdown inside HTML:
727
732
 
728
733
  | : Fruits \|\| Food : |||
729
734
  | :--------- | :-------- | :-------- |
730
- | Apple | : Apple :| Apple \
735
+ | Apple | : Apple : | Apple \
731
736
  | Banana | Banana | Banana \
732
737
  | Orange | Orange | Orange |
733
738
  | : Rowspan is 4 : || How's it? |
@@ -903,6 +908,12 @@ jekyll-spaceship:
903
908
  loading: eager # Replace `loading` value to `eager`
904
909
  ```
905
910
 
911
+ There are three options when using this method to lazy load images. Here are the supported values for the loading attribute:
912
+
913
+ - auto: Default lazy-loading behavior of the browser, which is the same as not including the attribute.
914
+ - lazy: Defer loading of the resource until it reaches a calculated distance from the viewport.
915
+ - eager: Load the resource immediately, regardless of where it’s located on the page.
916
+
906
917
 
907
918
  ## Credits
908
919
 
@@ -65,7 +65,7 @@ module Jekyll::Spaceship
65
65
 
66
66
  def initialize_exclusions
67
67
  if @@_exclusions.size.zero?
68
- self.class.exclude :code, :block_quotes
68
+ self.class.exclude :code, :math, :liquid_filter
69
69
  end
70
70
  @exclusions = @@_exclusions.uniq
71
71
  @@_exclusions.clear
@@ -121,7 +121,7 @@ module Jekyll::Spaceship
121
121
  else
122
122
  if Type.html? output_ext
123
123
  method = 'on_handle_html'
124
- elsif css? output_ext
124
+ elsif Type.css? output_ext
125
125
  method = 'on_handle_css'
126
126
  end
127
127
  if self.respond_to? method
@@ -156,13 +156,17 @@ module Jekyll::Spaceship
156
156
  @exclusions.each do |type|
157
157
  regex = nil
158
158
  if type == :code
159
- regex = /((`+)\s*(\w*)((?:.|\n)*?)\2)/
159
+ regex = /(((?<!\\)`+)\s*(\w*)((?:.|\n)*?)\2)/
160
+ elsif type == :math
161
+ regex = /(((?<!\\)\${1,2})[^\n]*?\1)/
162
+ elsif type == :liquid_filter
163
+ regex = /((?<!\\)\{\{[^\n]*?\}\})/
160
164
  end
161
165
  next if regex.nil?
162
166
  content.scan(regex) do |match_data|
163
167
  match = match_data[0]
164
168
  id = @exclusion_store.size
165
- content = content.sub(match, "[JEKYLL@#{object_id}@#{id}]")
169
+ content = content.sub(match, "<!JEKYLL@#{object_id}@#{id}>")
166
170
  @exclusion_store.push match
167
171
  end
168
172
  end
@@ -173,7 +177,7 @@ module Jekyll::Spaceship
173
177
  while @exclusion_store.size > 0
174
178
  match = @exclusion_store.pop
175
179
  id = @exclusion_store.size
176
- content = content.sub("[JEKYLL@#{object_id}@#{id}]", match)
180
+ content = content.sub("<!JEKYLL@#{object_id}@#{id}>", match)
177
181
  end
178
182
  @exclusion_store = []
179
183
  content
@@ -45,61 +45,11 @@ module Jekyll::Spaceship
45
45
  if data.kind_of? String
46
46
  element.replace Nokogiri::HTML.fragment(data)
47
47
  elsif data.kind_of? Hash
48
- # set name
49
- element.name = data['name'] unless data['name'].nil?
50
-
51
- # set props
52
- data['props']&.each do |prop, val|
53
- next element.remove_attribute if val.nil?
54
- if val.kind_of? Array
55
- next if val.size != 2
56
- v = element[prop]
57
- v = '' if v.nil?
58
- val = v.sub(/#{val[0]}/, val[1])
59
- elsif val.kind_of? Hash
60
- result = []
61
- val.each { |k, v| result.push "#{k}: #{v}" }
62
- val = result.join(";")
63
- end
64
- element.set_attribute(prop, val)
65
- end
66
-
67
- # processing children
68
- return unless data.has_key?('children')
69
- return element.inner_html = "" if data['children'].nil?
70
- children = self.create_children({
48
+ handle_hash_element({
71
49
  :doc => doc,
72
- :data => data['children']
50
+ :element => element,
51
+ :data => data,
73
52
  })
74
-
75
- # replace whole inner html
76
- unless data['children'].kind_of? Array
77
- return element.inner_html = children
78
- end
79
-
80
- if element.children.size.zero?
81
- return element.inner_html = children
82
- end
83
-
84
- index = data['children'].index(nil)
85
- if index.nil?
86
- return element.inner_html = children
87
- end
88
-
89
- # insert to the end of children
90
- if index == 0
91
- return element.children.last.after(children)
92
- end
93
-
94
- # insert to the begin of children
95
- rindex = data['children'].rindex { |item| !item.nil? }
96
- if index == rindex + 1
97
- return element.children.first.before children
98
- end
99
-
100
- # wrap the children
101
- element.children.first.before children[0..index]
102
- element.children.last.after children[index..children.size]
103
53
  end
104
54
  end
105
55
 
@@ -126,6 +76,45 @@ module Jekyll::Spaceship
126
76
  root.children
127
77
  end
128
78
 
79
+ def handle_hash_element(data)
80
+ doc = data[:doc]
81
+ element = data[:element]
82
+ data = data[:data]
83
+
84
+ # set name
85
+ element.name = data['name'] unless data['name'].nil?
86
+
87
+ # set props
88
+ data['props']&.each do |prop, val|
89
+ next element.remove_attribute if val.nil?
90
+ if val.kind_of? Array
91
+ next if val.size != 2
92
+ v = element[prop]
93
+ v = '' if v.nil?
94
+ val = v.sub(/#{val[0]}/, val[1])
95
+ elsif val.kind_of? Hash
96
+ result = []
97
+ val.each { |k, v| result.push "#{k}: #{v}" }
98
+ val = result.join(";")
99
+ end
100
+ element.set_attribute(prop, val)
101
+ end
102
+
103
+ # processing children
104
+ return unless data.has_key?('children')
105
+ return element.inner_html = "" if data['children'].nil?
106
+ children = self.create_children({
107
+ :doc => doc,
108
+ :data => data['children']
109
+ })
110
+
111
+ handle_element_placement({
112
+ :data => data,
113
+ :element => element,
114
+ :children => children,
115
+ })
116
+ end
117
+
129
118
  def create_element(data)
130
119
  doc = data[:doc]
131
120
  data = data[:data]
@@ -148,5 +137,34 @@ module Jekyll::Spaceship
148
137
  end
149
138
  node
150
139
  end
140
+
141
+ def handle_element_placement(data)
142
+ element = data[:element]
143
+ children = data[:children]
144
+ data = data[:data]
145
+
146
+ # replace whole inner html
147
+ unless data['children'].kind_of? Array
148
+ return element.inner_html = children
149
+ end
150
+
151
+ if element.children.size.zero?
152
+ return element.inner_html = children
153
+ end
154
+
155
+ index = data['children'].index(nil)
156
+ rindex = data['children'].rindex { |item| !item.nil? }
157
+
158
+ if index.nil?
159
+ element.inner_html = children
160
+ elsif index == 0 # insert to the end of children
161
+ element.children.last.after(children)
162
+ elsif index == rindex + 1 # insert to the begin of children
163
+ element.children.first.before children
164
+ else # wrap the children
165
+ element.children.first.before children[0..index]
166
+ element.children.last.after children[index..children.size]
167
+ end
168
+ end
151
169
  end
152
170
  end
@@ -24,15 +24,16 @@ module Jekyll::Spaceship
24
24
 
25
25
  # escape plus sign
26
26
  emoji_name = emoji.name.gsub('+', '\\\+')
27
+ css_class = self.config['css']['class']
27
28
 
28
29
  content = content.gsub(
29
30
  /(?<!\=")\s*:#{emoji_name}:\s*(?!"\s)/,
30
- "<img class=\"\""\
31
+ "<img class=\"#{css_class}\""\
31
32
  " title=\":#{emoji.name}:\""\
32
33
  " alt=\":#{emoji.name}:\""\
33
34
  " raw=\"#{emoji.raw}\""\
34
35
  " src=\"#{config['src']}#{emoji.image_filename}\""\
35
- " style=\"vertical-align: middle;"\
36
+ " style=\"vertical-align: middle; display: inline;"\
36
37
  " max-width: 1em; visibility: hidden;\""\
37
38
  " onload=\"this.style.visibility='visible'\""\
38
39
  " onerror=\"this.replaceWith(this.getAttribute('raw'))\">"\
@@ -8,15 +8,15 @@ module Jekyll::Spaceship
8
8
  def on_handle_markdown(content)
9
9
  # pre-handle reference-style links
10
10
  references = {}
11
- content.scan(/(\[(.*)\]:\s*(.*))/) do |match_data|
11
+ content.scan(/\n\s*(\[(.*)\]:\s*(\S+(\s+".*?")?))/) do |match_data|
12
12
  ref_name = match_data[1]
13
13
  ref_value = match_data[2]
14
14
  references[ref_name] = ref_value
15
15
  end
16
16
  if references.size > 0
17
- content.scan(/.*(?<!\\)\|.*/) do |result|
17
+ content.scan(/[^\n]*(?<!\\)\|[^\n]*/) do |result|
18
18
  references.each do |key, val|
19
- replace = result.gsub(/\[(.*)\]\s*\[#{key}\]/, "[\1](#{val})")
19
+ replace = result.gsub(/\[([^\n]*)\]\s*\[#{key}\]/, "[\1](#{val})")
20
20
  next if result == replace
21
21
  content = content.gsub(result, replace)
22
22
  end
@@ -24,18 +24,21 @@ module Jekyll::Spaceship
24
24
  end
25
25
 
26
26
  # pre-handle row-span
27
- content = content.gsub(/(?<!\\)(\|.*\\\s*)\|\s*\n/, "\\1\n")
27
+ content = content.gsub(/(?<!\\)(\|[^\n]*\\\s*)\|\s*\n/, "\\1\n")
28
28
 
29
29
  # escape | and :
30
30
  content = content.gsub(/\|(?=\|)/, '\\|')
31
- .gsub(/\\:(?=.*?(?<!\\)\|)/, '\\\\\\\\:')
32
- .gsub(/((?<!\\)\|.*?)(\\:)/, '\1\\\\\\\\:')
31
+ .gsub(/\\:(?=[^\n]*?(?<!\\)\|)/, '\\\\\\\\:')
32
+ .gsub(/((?<!\\)\|[^\n]*?)(\\:)/, '\1\\\\\\\\:')
33
33
 
34
34
  # escape * and _ and $ etc.
35
- content.scan(/.*(?<!\\)\|.*/) do |result|
35
+ content.scan(/[^\n]*(?<!\\)\|[^\n]*/) do |result|
36
+ # skip for math expression within pipeline
37
+ next unless result
38
+ .gsub(/((?<!\\)\${1,2})[^\n]*?\1/, '')
39
+ .match(/(?<!\\)\|/)
36
40
  replace = result.gsub(
37
- /(?<!(?<!\\)\\)(\*|\$|\[|\(|\"|_)/,
38
- '\\\\\\\\\1')
41
+ /(?<!(?<!\\)\\)(\*|\$|\[|\(|\"|_)/, '\\\\\\\\\1')
39
42
  next if result == replace
40
43
  content = content.gsub(result, replace)
41
44
  end
@@ -50,6 +53,7 @@ module Jekyll::Spaceship
50
53
 
51
54
  # handle each table
52
55
  doc.css('table').each do |table|
56
+ next if table.ancestors('code, pre').size > 0
53
57
  rows = table.css('tr')
54
58
  data.table = table
55
59
  data.rows = rows
@@ -239,7 +243,11 @@ module Jekyll::Spaceship
239
243
  .gsub(/(?<!\\)\|/, '\\|')
240
244
  .gsub(/^\s+|\s+$/, '')
241
245
  content = cvter.convert(content)
242
- cell.inner_html = Nokogiri::HTML.fragment(content)
246
+ content = Nokogiri::HTML.fragment(content)
247
+ if content.children.first&.name == 'p'
248
+ content = content.children
249
+ end
250
+ cell.inner_html = content.inner_html
243
251
  end
244
252
  end
245
253
  end
@@ -110,8 +110,8 @@ module Jekyll::Spaceship
110
110
  style = qs['style'] || default['style']
111
111
  allow = qs['allow'] || default['allow']
112
112
 
113
- css_id.gsub('{id}', id)
114
- css_class.gsub('{id}', id)
113
+ css_id = css_id.gsub('{id}', id)
114
+ css_class = css_class.gsub('{id}', id)
115
115
 
116
116
  url = URI(iframe_url ? "#{iframe_url}#{id}" : url).tap do |v|
117
117
  v.query = URI.encode_www_form(qs) if qs.size > 0
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jekyll
4
4
  module Spaceship
5
- VERSION = "0.8.0"
5
+ VERSION = "0.8.5"
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.8.0
4
+ version: 0.8.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - jeffreytse
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-22 00:00:00.000000000 Z
11
+ date: 2020-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll