jekyll-spaceship 0.4.2 → 0.4.3

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: ae6d96db2dd9498238ac13344b4b5f57bae9128792f0ecfab4c21e68e165f1d8
4
- data.tar.gz: f2d39600125fb3775285a6d1851f9d9549dc24ae68fcaec042d8c487356e6bb2
3
+ metadata.gz: b764caa91610338387d31e7e46e9e8a76bad9de85ae35218e5e555080fe84566
4
+ data.tar.gz: ae0a3cb843e45c686f15e467809bf885692809edf54cca48a4667c6cc2685280
5
5
  SHA512:
6
- metadata.gz: 3755de40d7d23166ee87a215530517732ae0589fe7c30eb080ec06c8586f99d3e4899919511352b2e21185616b39768fe0067b8e12665d33a9243ca7fcd8768b
7
- data.tar.gz: a1d8018a105dc552493e1590ad20b1902bdbf81e20d018cbe5af0e80fa7b7f83522bf20f7f9d2a5463286f8421c54a414d9152233164f99149548bb9c411a6ea
6
+ metadata.gz: 39c4090c57da17685ae4af607a5267799a71e39df0740c5e9e65ef0de121e28ae4bf735e00a55373f7ce5446424684930ce9864f82578d0eb28ed0e20e68cf80
7
+ data.tar.gz: ed8ff5bb71e5763a862c6281c0d7572d3e74f082092d165f925b732e720ab02ea26fdb13bc89a9f4333313aa439aad5d0501cab48e8b9c78d862e08d14f13a03
data/.codeclimate.yml ADDED
@@ -0,0 +1,38 @@
1
+ version: "2"
2
+ checks:
3
+ argument-count:
4
+ enabled: true
5
+ config:
6
+ threshold: 5
7
+ file-lines:
8
+ enabled: true
9
+ config:
10
+ threshold: 300
11
+ method-complexity:
12
+ enabled: true
13
+ config:
14
+ threshold: 15
15
+ method-count:
16
+ enabled: true
17
+ config:
18
+ threshold: 50
19
+ method-lines:
20
+ enabled: true
21
+ config:
22
+ threshold: 30
23
+ plugins:
24
+ fixme:
25
+ enabled: false
26
+
27
+ exclude_patterns:
28
+ - "*.*"
29
+ - ".*"
30
+
31
+ - Gemfile
32
+ - LICENSE.txt
33
+ - Rakefile
34
+
35
+ - rake/
36
+ - script/
37
+ - spec/
38
+ - test/
@@ -0,0 +1,118 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'nokogiri'
4
+ require __dir__ + '/type'
5
+
6
+ module Jekyll::Spaceship
7
+ class Manager
8
+ @@_hooks = {}
9
+ @@_processers = []
10
+
11
+ def self.add(processor)
12
+ # register for listening event
13
+ processor.registers.each do |_register|
14
+ container = _register.first
15
+ events = _register.last.uniq
16
+ events = events.select do |event|
17
+ next true if event.match(/^post/)
18
+ next !events.any?(event.to_s.gsub(/^pre/, 'post').to_sym)
19
+ end
20
+ events.each do |event|
21
+ self.hook container, event
22
+ end
23
+ end
24
+ @@_processers.push(processor)
25
+ @@_processers = @@_processers.sort { |a, b| b.priority <=> a.priority }
26
+ end
27
+
28
+ def self.hook(container, event, &block)
29
+ return if not is_hooked? container, event
30
+
31
+ handler = ->(page) {
32
+ self.dispatch page, container, event
33
+ block.call if block
34
+ }
35
+
36
+ if event.to_s.start_with?('after')
37
+ Jekyll::Hooks.register container, event do |page|
38
+ handler.call page
39
+ end
40
+ elsif event.to_s.start_with?('post')
41
+ Jekyll::Hooks.register container, event do |page|
42
+ handler.call page
43
+ end
44
+ # auto add pre-event
45
+ self.hook container, event.to_s.sub('post', 'pre').to_sym
46
+ elsif event.to_s.start_with?('pre')
47
+ Jekyll::Hooks.register container, event do |page|
48
+ handler.call page
49
+ end
50
+ end
51
+ end
52
+
53
+ def self.is_hooked?(container, event)
54
+ hook_name = "#{container}_#{event}".to_sym
55
+ return false if @@_hooks.has_key? hook_name
56
+ @@_hooks[hook_name] = true
57
+ end
58
+
59
+ def self.dispatch(page, container, event)
60
+ @@_processers.each do |processor|
61
+ processor.dispatch page, container, event
62
+ end
63
+ if event.to_s.start_with?('post') and Type.html? output_ext(page)
64
+ self.dispatch_html_block(page)
65
+ end
66
+ @@_processers.each do |processor|
67
+ processor.on_handled if processor.handled
68
+ end
69
+ end
70
+
71
+ def self.ext(page)
72
+ page.data['ext']
73
+ end
74
+
75
+ def self.output_ext(page)
76
+ page.url_placeholders[:output_ext]
77
+ end
78
+
79
+ def self.converter(page, name)
80
+ page.site.converters.each do |converter|
81
+ class_name = converter.class.to_s.downcase
82
+ return converter if class_name.end_with?(name.downcase)
83
+ end
84
+ end
85
+
86
+ def self.dispatch_html_block(page)
87
+ doc = Nokogiri::HTML(page.output)
88
+ doc.css('script').each do |node|
89
+ type = Type.html_block_type node['type']
90
+ content = node.content
91
+ next if type.nil?
92
+
93
+ # dispatch to on_handle_html_block
94
+ @@_processers.each do |processor|
95
+ next unless processor.process?
96
+ content = processor.on_handle_html_block content, type
97
+ # dispatch to type handlers
98
+ method = "on_handle_#{type}"
99
+ next unless processor.respond_to? method
100
+ content = processor.pre_exclude content
101
+ content = processor.send method, content
102
+ content = processor.after_exclude content
103
+ end
104
+
105
+ cvter = self.converter page, type
106
+ content = cvter.convert content unless cvter.nil?
107
+
108
+ # dispatch to on_handle_html
109
+ @@_processers.each do |processor|
110
+ next unless processor.process?
111
+ content = processor.on_handle_html content
112
+ end
113
+ node.replace Nokogiri::HTML.fragment content
114
+ end
115
+ page.output = doc.to_html
116
+ end
117
+ end
118
+ end
@@ -1,56 +1,41 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'nokogiri'
4
-
5
3
  module Jekyll::Spaceship
6
4
  class Processor
7
- @@_hooks = {}
8
- @@_registers = []
9
- @@_processers = []
10
- @@_exclusions = []
11
- @@_priority = nil
12
-
13
- attr_accessor :priority
14
- attr_accessor :page
15
- attr_accessor :handled
16
-
17
5
  DEFAULT_PRIORITY = 20
18
6
 
19
7
  PRIORITY_MAP = {
20
- :low => 10,
21
- :normal => 20,
22
- :high => 30,
8
+ :lowest => 0,
9
+ :low => 10,
10
+ :normal => 20,
11
+ :high => 30,
12
+ :highest => 40,
23
13
  }.freeze
24
14
 
25
- HTML_EXTENSIONS = %w(
26
- .html
27
- .xhtml
28
- .htm
29
- ).freeze
30
-
31
- CSS_EXTENSIONS = %w(
32
- .css
33
- .scss
34
- ).freeze
15
+ @@_registers = []
16
+ @@_exclusions = []
17
+ @@_priority = nil
35
18
 
36
- MD_EXTENSIONS = %w(
37
- .md
38
- .markdown
39
- ).freeze
19
+ attr_reader :page
20
+ attr_reader :priority
21
+ attr_reader :registers
22
+ attr_reader :exclusions
23
+ attr_accessor :handled
40
24
 
41
25
  def initialize()
42
26
  self.initialize_priority
43
27
  self.initialize_register
44
28
  self.initialize_exclusions
29
+ Manager.add self
45
30
  end
46
31
 
47
32
  def initialize_priority
48
- @@_priority = DEFAULT_PRIORITY if @@_priority.nil?
49
33
  @priority = @@_priority
34
+ unless @priority.nil? or @priority.is_a? Numeric
35
+ @priority = PRIORITY_MAP[@priority.to_sym]
36
+ end
37
+ @priority = DEFAULT_PRIORITY if @priority.nil?
50
38
  @@_priority = nil
51
-
52
- @@_processers.push(self)
53
- @@_processers = @@_processers.sort { |a, b| b.priority <=> a.priority }
54
39
  end
55
40
 
56
41
  def initialize_register
@@ -58,18 +43,7 @@ module Jekyll::Spaceship
58
43
  self.class.register :pages, :pre_render, :post_render
59
44
  self.class.register :posts, :pre_render, :post_render
60
45
  end
61
-
62
- @@_registers.each do |_register|
63
- container = _register.first
64
- events = _register.last.uniq
65
- events = events.select do |event|
66
- next true if event.match(/^post/)
67
- next !events.any?(event.to_s.gsub(/^pre/, 'post').to_sym)
68
- end
69
- events.each do |event|
70
- self.class.hook container, event
71
- end
72
- end
46
+ @registers = Array.new @@_registers
73
47
  @@_registers.clear
74
48
  end
75
49
 
@@ -77,165 +51,85 @@ module Jekyll::Spaceship
77
51
  if @@_exclusions.size.zero?
78
52
  self.class.exclude :code, :block_quotes
79
53
  end
80
- @_exclusions = @@_exclusions.uniq
54
+ @exclusions = @@_exclusions.uniq
81
55
  @@_exclusions.clear
82
56
  end
83
57
 
84
58
  def self.priority(value)
85
- value = value.to_sym
86
- if PRIORITY_MAP.has_key? value
87
- @@_priority = PRIORITY_MAP[value]
88
- elsif value.nil?
89
- @@_priority = DEFAULT_PRIORITY
90
- else
91
- @@_priority = value
92
- end
59
+ @@_priority = value.to_sym
93
60
  end
94
61
 
95
62
  def self.register(container, *events)
96
63
  @@_registers << [container, events]
97
64
  end
98
65
 
99
- def self.hook_register(container, event)
100
- hook_name = "#{container}_#{event}".to_sym
101
- return false if @@_hooks.has_key? hook_name
102
- @@_hooks[hook_name] = true
66
+ def self.exclude(*types)
67
+ @@_exclusions = types
103
68
  end
104
69
 
105
- def self.hook(container, event, &block)
106
- return if not hook_register container, event
70
+ def process?
71
+ Type.html?(output_ext) or Type.markdown?(ext)
72
+ end
107
73
 
108
- # define dispatch proc
109
- dispatch = ->(instance) {
110
- @@_processers.each do |processor|
111
- processor.page = instance
112
- processor.handled = false
113
- next if not processor.process?
114
- processor.dispatch container, event
115
- end
116
- if event.to_s.start_with?('post') and self.html? output_ext(instance)
117
- self.handle_html_block(instance)
118
- end
119
- @@_processers.each do |processor|
120
- processor.page = instance
121
- if processor.handled
122
- processor.on_handled
123
- end
124
- end
125
- block.call if block
126
- }
74
+ def ext
75
+ Manager.ext @page
76
+ end
127
77
 
128
- if event.to_s.start_with?('after')
129
- Jekyll::Hooks.register container, event do |instance|
130
- dispatch.call instance
131
- end
132
- elsif event.to_s.start_with?('post')
133
- Jekyll::Hooks.register container, event do |instance|
134
- dispatch.call instance
135
- end
78
+ def output_ext
79
+ Manager.output_ext @page
80
+ end
136
81
 
137
- # auto add pre-event
138
- register container, event.to_s.sub('post', 'pre').to_sym
139
- elsif event.to_s.start_with?('pre')
140
- Jekyll::Hooks.register container, event do |instance|
141
- dispatch.call instance
142
- end
143
- end
82
+ def converter(name)
83
+ Manager.converter @page, name
144
84
  end
145
85
 
146
- def dispatch(container, event)
86
+ def dispatch(page, container, event)
87
+ @page = page
88
+ @handled = false
89
+ return unless self.process?
147
90
  method = "on_#{container}_#{event}"
148
91
  self.send method, @page if self.respond_to? method
149
-
92
+ method = ''
150
93
  if event.to_s.start_with?('pre')
151
- if markdown? ext
94
+ if Type.markdown? ext
152
95
  method = 'on_handle_markdown'
153
- else
154
- method = ''
155
96
  end
156
-
157
97
  if self.respond_to? method
158
98
  @page.content = self.pre_exclude @page.content
159
99
  @page.content = self.send method, @page.content
160
100
  @page.content = self.after_exclude @page.content
161
101
  end
162
102
  else
163
- if html? output_ext
103
+ if Type.html? output_ext
164
104
  method = 'on_handle_html'
165
105
  elsif css? output_ext
166
106
  method = 'on_handle_css'
167
- else
168
- method = ''
169
107
  end
170
-
171
108
  if self.respond_to? method
172
109
  @page.output = self.send method, @page.output
173
110
  end
174
111
  end
175
112
  end
176
113
 
177
- def self.exclude(*types)
178
- @@_exclusions = types
179
- end
180
-
181
- def html?(_ext)
182
- self.class.html? _ext
183
- end
184
-
185
- def css?(_ext)
186
- self.class.css? _ext
187
- end
188
-
189
- def markdown?(_ext)
190
- self.class.markdown? _ext
191
- end
192
-
193
- def self.html?(_ext)
194
- HTML_EXTENSIONS.include?(_ext)
195
- end
196
-
197
- def self.css?(_ext)
198
- CSS_EXTENSIONS.include?(_ext)
199
- end
200
-
201
- def self.markdown?(_ext)
202
- MD_EXTENSIONS.include?(_ext)
203
- end
204
-
205
- def converter(name)
206
- self.class.converter(@page, name)
207
- end
208
-
209
- def self.converter(instance, name)
210
- instance.site.converters.each do |converter|
211
- class_name = converter.class.to_s.downcase
212
- return converter if class_name.end_with?(name.downcase)
213
- end
214
- end
215
-
216
- def ext
217
- self.class.ext @page
218
- end
219
-
220
- def output_ext
221
- self.class.output_ext @page
222
- end
223
-
224
- def self.ext(instance)
225
- instance.data['ext']
114
+ def on_handle_html_block(content, type)
115
+ # default handle method
116
+ content
226
117
  end
227
118
 
228
- def self.output_ext(instance)
229
- instance.url_placeholders[:output_ext]
119
+ def on_handle_html(content)
120
+ # default handle method
121
+ content
230
122
  end
231
123
 
232
- def process?
233
- html?(output_ext) or markdown?(ext)
124
+ def on_handled
125
+ processor = self.class.name.split('::').last
126
+ file = page.path.gsub(/.*_posts\//, '')
127
+ Logger.log "[#{processor}] #{file}"
234
128
  end
235
129
 
236
130
  def pre_exclude(content)
237
- @_exclusion_store = []
238
- @_exclusions.each do |type|
131
+ @exclusion_store = []
132
+ @exclusions.each do |type|
239
133
  regex = nil
240
134
  if type == :code
241
135
  regex = /(`{3}\s*(\w*)((?:.|\n)*?)`{3})/
@@ -243,83 +137,22 @@ module Jekyll::Spaceship
243
137
  next if regex.nil?
244
138
  content.scan(regex) do |match_data|
245
139
  match = match_data[0]
246
- id = @_exclusion_store.size
140
+ id = @exclusion_store.size
247
141
  content = content.gsub(match, "[//]: JEKYLL_EXCLUDE_##{id}")
248
- @_exclusion_store.push match
142
+ @exclusion_store.push match
249
143
  end
250
144
  end
251
145
  content
252
146
  end
253
147
 
254
148
  def after_exclude(content)
255
- while @_exclusion_store.size > 0
256
- match = @_exclusion_store.pop
257
- id = @_exclusion_store.size
149
+ while @exclusion_store.size > 0
150
+ match = @exclusion_store.pop
151
+ id = @exclusion_store.size
258
152
  content = content.gsub("[//]: JEKYLL_EXCLUDE_##{id}", match)
259
153
  end
260
- @_exclusion_store = []
154
+ @exclusion_store = []
261
155
  content
262
156
  end
263
-
264
- def on_handled
265
- processor = self.class.name.split('::').last
266
- file = page.path.gsub(/.*_posts\//, '')
267
- Logger.log "[#{processor}] #{file}"
268
- end
269
-
270
- def self.handle_html_block(instance)
271
- doc = Nokogiri::HTML(instance.output)
272
-
273
- doc.css('script').each do |node|
274
- blk_type = node['type']
275
- blk_content = node.content
276
-
277
- cvter = nil
278
- method = ''
279
- block_method = 'on_handle_html_block'
280
-
281
- case blk_type
282
- when 'text/markdown'
283
- method = 'on_handle_markdown'
284
- cvter = self.converter(instance, 'markdown')
285
- end
286
-
287
- @@_processers.each do |processor|
288
- processor.page = instance
289
- next if not processor.process?
290
-
291
- # dispatch to on_handle_html_block
292
- if processor.respond_to? block_method
293
- blk_content = processor.send block_method blk_content, blk_type
294
- end
295
-
296
- # dispatch to other handlers
297
- if processor.respond_to? method
298
- blk_content = processor.pre_exclude blk_content
299
- blk_content = processor.send method, blk_content
300
- blk_content = processor.after_exclude blk_content
301
- end
302
- end
303
-
304
- if not cvter.nil?
305
- blk_content = cvter.convert blk_content
306
- end
307
-
308
- next if method == ''
309
-
310
- method = 'on_handle_html'
311
- @@_processers.each do |processor|
312
- processor.page = instance
313
- next if not processor.process?
314
- if processor.respond_to? method
315
- blk_content = processor.send method, blk_content
316
- end
317
- end
318
-
319
- node.replace Nokogiri::HTML.fragment(blk_content)
320
- end
321
-
322
- instance.output = doc.to_html
323
- end
324
157
  end
325
158
  end
@@ -25,17 +25,13 @@ module Jekyll::Spaceship
25
25
  next if filename.gsub(/-/, '').downcase != name
26
26
 
27
27
  Logger.log "use #{filename}"
28
-
29
28
  require path
30
-
31
29
  constants = Jekyll::Spaceship.constants.select do |c|
32
30
  c.downcase.to_s == name
33
31
  end
34
32
 
35
33
  next if constants.first.nil?
36
-
37
34
  _class = Jekyll::Spaceship.const_get(constants.first)
38
-
39
35
  next unless _class.is_a? Class
40
36
 
41
37
  _class.new
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jekyll::Spaceship
4
+ class Type
5
+ HTML_EXTENSIONS = %w(
6
+ .html
7
+ .xhtml
8
+ .htm
9
+ ).freeze
10
+
11
+ CSS_EXTENSIONS = %w(
12
+ .css
13
+ .scss
14
+ ).freeze
15
+
16
+ MD_EXTENSIONS = %w(
17
+ .md
18
+ .markdown
19
+ ).freeze
20
+
21
+ HTML_BLOCK_TYPE_MAP = {
22
+ 'text/markdown' => 'markdown',
23
+ }.freeze
24
+
25
+ def self.html?(_ext)
26
+ HTML_EXTENSIONS.include?(_ext)
27
+ end
28
+
29
+ def self.css?(_ext)
30
+ CSS_EXTENSIONS.include?(_ext)
31
+ end
32
+
33
+ def self.markdown?(_ext)
34
+ MD_EXTENSIONS.include?(_ext)
35
+ end
36
+
37
+ def self.html_block_type(type)
38
+ HTML_BLOCK_TYPE_MAP[type]
39
+ end
40
+ end
41
+ end
@@ -5,7 +5,7 @@ require "nokogiri"
5
5
  module Jekyll::Spaceship
6
6
  class MathjaxProcessor < Processor
7
7
  def process?
8
- return true if html?(output_ext)
8
+ return true if Type.html?(output_ext)
9
9
  end
10
10
 
11
11
  def on_handle_html(content)
@@ -20,7 +20,10 @@ module Jekyll::Spaceship
20
20
 
21
21
  params = "config=TeX-AMS-MML_HTMLorMML"
22
22
  src = "//cdn.mathjax.org/mathjax/latest/MathJax.js?#{params}"
23
- config = "MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}});"
23
+ config = "MathJax.Hub.Config({ \
24
+ tex2jax: { inlineMath: [['$','$'], ['\\\\(','\\\\)']] } \
25
+ });"
26
+
24
27
  head.add_child("<script src=\"#{src}\">#{config}</script>")
25
28
 
26
29
  doc.to_html
@@ -28,7 +31,10 @@ module Jekyll::Spaceship
28
31
 
29
32
  def has_mathjax_expression?(doc)
30
33
  doc.css('*').each do |node|
31
- if node.content.match(/\$.+\$/)
34
+ if node.content.match(/(?<!\\)\$.+(?<!\\)\$/)
35
+ return true
36
+ end
37
+ if node.content.match(/(?<!\\)\\\(.+(?<!\\)\\\)/)
32
38
  return true
33
39
  end
34
40
  end
@@ -46,23 +46,7 @@ module Jekyll::Spaceship
46
46
  # use nokogiri to parse html content
47
47
  doc = Nokogiri::HTML(content)
48
48
 
49
- data = OpenStruct.new(_: OpenStruct.new)
50
- data.reset = ->(scope, namespace = nil) {
51
- data._.marshal_dump.each do |key, val|
52
- if namespace == key or namespace.nil?
53
- data._[key][scope] = OpenStruct.new
54
- end
55
- end
56
- }
57
- data.scope = ->(namespace) {
58
- if not data._[namespace]
59
- data._[namespace] = OpenStruct.new(
60
- table: OpenStruct.new,
61
- row: OpenStruct.new
62
- )
63
- end
64
- data._[namespace]
65
- }
49
+ data = self.table_scope_data
66
50
 
67
51
  # handle each table
68
52
  doc.css('table').each do |table|
@@ -96,45 +80,63 @@ module Jekyll::Spaceship
96
80
  doc.to_html
97
81
  end
98
82
 
83
+ def table_scope_data
84
+ data = OpenStruct.new(_: OpenStruct.new)
85
+ data.reset = ->(scope, namespace = nil) {
86
+ data._.marshal_dump.each do |key, val|
87
+ if namespace == key or namespace.nil?
88
+ data._[key][scope] = OpenStruct.new
89
+ end
90
+ end
91
+ }
92
+ data.scope = ->(namespace) {
93
+ if not data._[namespace]
94
+ data._[namespace] = OpenStruct.new(
95
+ table: OpenStruct.new,
96
+ row: OpenStruct.new
97
+ )
98
+ end
99
+ data._[namespace]
100
+ }
101
+ data
102
+ end
103
+
99
104
  def handle_colspan(data)
100
105
  scope = data.scope.call __method__
101
- scope_table = scope.table
102
- scope_row = scope.row
103
106
  cells = data.cells
104
107
  cell = data.cell
105
108
 
106
- if scope_table.row != data.row
107
- scope_table.row = data.row
108
- scope_row.colspan = 0
109
+ if scope.table.row != data.row
110
+ scope.table.row = data.row
111
+ scope.row.colspan = 0
109
112
  end
110
113
 
111
114
  # handle colspan
112
115
  result = cell.content.match(/(\s*\|)+$/)
113
- if cell == cells.last and scope_row.colspan > 0
114
- range = (cells.count - scope_row.colspan)...cells.count
116
+ if cell == cells.last and scope.row.colspan > 0
117
+ range = (cells.count - scope.row.colspan)...cells.count
115
118
  for i in range do
116
119
  cells[i].remove
117
120
  end
118
121
  end
119
122
  if result
120
123
  result = result[0]
121
- scope_row.colspan += result.scan(/\|/).count
124
+ scope.row.colspan += result.scan(/\|/).count
122
125
  cell.content = cell.content.gsub(/(\s*\|)+$/, '')
123
- cell.set_attribute('colspan', scope_row.colspan + 1)
126
+ cell.set_attribute('colspan', scope.row.colspan + 1)
124
127
  end
125
128
  end
126
129
 
127
130
  def handle_multi_rows(data)
128
131
  scope = data.scope.call __method__
129
- scope_table = scope.table
130
132
  cells = data.cells
131
133
  row = data.row
132
134
  cell = data.cell
133
135
 
134
- if scope_table.table != data.table
135
- scope_table.table = data.table
136
- scope_table.multi_row_cells = nil
137
- scope_table.multi_row_start = false
136
+ if scope.table.table != data.table
137
+ scope.table.table = data.table
138
+ scope.table.multi_row_cells = nil
139
+ scope.table.multi_row_start = false
138
140
  end
139
141
 
140
142
  # handle multi-rows
@@ -143,41 +145,38 @@ module Jekyll::Spaceship
143
145
  match = cell.content.match(/(?<!\\)\\\s*$/)
144
146
  if match
145
147
  cell.content = cell.content.gsub(/(?<!\\)\\\s*$/, '')
146
- if not scope_table.multi_row_start
147
- scope_table.multi_row_cells = cells
148
- scope_table.multi_row_start = true
148
+ if not scope.table.multi_row_start
149
+ scope.table.multi_row_cells = cells
150
+ scope.table.multi_row_start = true
149
151
  end
150
152
  end
151
153
 
152
- if scope_table.multi_row_cells != cells and scope_table.multi_row_start
153
- for i in 0...scope_table.multi_row_cells.count do
154
- multi_row_cell = scope_table.multi_row_cells[i]
154
+ if scope.table.multi_row_cells != cells and scope.table.multi_row_start
155
+ for i in 0...scope.table.multi_row_cells.count do
156
+ multi_row_cell = scope.table.multi_row_cells[i]
155
157
  multi_row_cell.content += " \n#{cells[i].content}"
156
158
  end
157
159
  row.remove
158
160
  end
159
- scope_table.multi_row_start = false if not match
161
+ scope.table.multi_row_start = false if not match
160
162
  end
161
163
 
162
164
  def handle_rowspan(data)
163
165
  scope = data.scope.call __method__
164
- scope_table = scope.table
165
- scope_row = scope.row
166
166
  cell = data.cell
167
167
  cells = data.cells
168
168
 
169
- if scope_table.table != data.table
170
- scope_table.table = data.table
171
- scope_table.span_row_cells = []
169
+ if scope.table.table != data.table
170
+ scope.table.table = data.table
171
+ scope.table.span_row_cells = []
172
172
  end
173
-
174
- if scope_row.row != data.row
175
- scope_row.row = data.row
176
- scope_row.col_index = 0
173
+ if scope.row.row != data.row
174
+ scope.row.row = data.row
175
+ scope.row.col_index = 0
177
176
  end
178
177
 
179
178
  # handle rowspan
180
- span_cell = scope_table.span_row_cells[scope_row.col_index]
179
+ span_cell = scope.table.span_row_cells[scope.row.col_index]
181
180
  if span_cell and cell.content.match(/^\s*\^{2}/)
182
181
  cell.content = cell.content.gsub(/^\s*\^{2}/, '')
183
182
  span_cell.content += " \n#{cell.content}"
@@ -186,10 +185,9 @@ module Jekyll::Spaceship
186
185
  span_cell.set_attribute('rowspan', "#{rowspan}")
187
186
  cell.remove
188
187
  else
189
- scope_table.span_row_cells[scope_row.col_index] = cell
188
+ scope.table.span_row_cells[scope.row.col_index] = cell
190
189
  end
191
-
192
- scope_row.col_index += 1
190
+ scope.row.col_index += 1
193
191
  end
194
192
 
195
193
  def handle_text_align(data)
@@ -211,7 +209,6 @@ module Jekyll::Spaceship
211
209
 
212
210
  # handle text align
213
211
  return if align == 0
214
-
215
212
  style = cell.get_attribute('style')
216
213
  if align == 1
217
214
  align = 'text-align: left'
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jekyll
4
4
  module Spaceship
5
- VERSION = "0.4.2"
5
+ VERSION = "0.4.3"
6
6
  end
7
7
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'jekyll-spaceship/cores/logger'
4
+ require 'jekyll-spaceship/cores/manager'
4
5
  require 'jekyll-spaceship/cores/processor'
5
6
  require 'jekyll-spaceship/cores/register'
6
7
 
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.2
4
+ version: 0.4.3
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-29 00:00:00.000000000 Z
11
+ date: 2020-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -93,6 +93,7 @@ executables: []
93
93
  extensions: []
94
94
  extra_rdoc_files: []
95
95
  files:
96
+ - ".codeclimate.yml"
96
97
  - ".gitignore"
97
98
  - ".travis.yml"
98
99
  - Gemfile
@@ -102,8 +103,10 @@ files:
102
103
  - jekyll-spaceship.gemspec
103
104
  - lib/jekyll-spaceship.rb
104
105
  - lib/jekyll-spaceship/cores/logger.rb
106
+ - lib/jekyll-spaceship/cores/manager.rb
105
107
  - lib/jekyll-spaceship/cores/processor.rb
106
108
  - lib/jekyll-spaceship/cores/register.rb
109
+ - lib/jekyll-spaceship/cores/type.rb
107
110
  - lib/jekyll-spaceship/processors/mathjax-processor.rb
108
111
  - lib/jekyll-spaceship/processors/plantuml-processor.rb
109
112
  - lib/jekyll-spaceship/processors/polyfill-processor.rb