wcc-contentful 1.5.0 → 1.5.1

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: 3fd731fc709f8ecfcd4ee730a6bc52e693bdd5f160ba00ad4cb5a50978c8a735
4
- data.tar.gz: 20b9b0b06f31eace48c3ababb1c4cbbbc6d2a8143bc29677957305c4ce4dfe23
3
+ metadata.gz: 5599a00c953fc7b5692bc3f3c5b235d621c2d65bb1965e30a5ef89db3006a1c8
4
+ data.tar.gz: 40731523f1a793e1c85159977e0f3235588fadf82fa2d5b4733f586f33a812fe
5
5
  SHA512:
6
- metadata.gz: 9d2200e5b8bbb1c4a1b52a9163fa06c48d90049cc03715359610ab2e3b62d776635d174636b275188489da2cea857ca5a001426489513b15b2d31de749340b16
7
- data.tar.gz: afb2143f431c139dabfa7139eedb27984f0846e6c377efb2cdea8d61336b1532e97ebba18483ea53ff7826e95b1304afeff99805c5ed750e37b93001cfb9067b
6
+ metadata.gz: 22ee7a27c1000436dbf3ba622ef1ce412ca62d67bd67e2db0a0cc707a6e85f8e1a62a719729bba7385d8020295ae460779e0e0cc4be7bcac35bea90b855c7baf
7
+ data.tar.gz: cee9e57b7f192501d5cfe46338a34a8db64be596e7ab64872495eab6ad33408439d024a8ad9a60f9754487b460eae9cb31ea26c908c40fd828d87289443e9170
@@ -142,7 +142,7 @@ class WCC::Contentful::RichTextRenderer
142
142
  # Check the first row - if it's a header row, render a <thead>
143
143
  first, *rest = node.content
144
144
  if first&.content&.all? { |cell| cell.node_type == 'table-header-cell' }
145
- concat(content_tag(:thead) { render_content([first]) })
145
+ concat(render_table_header(first))
146
146
  else
147
147
  # Otherwise, render it inside the tbody with the rest
148
148
  rest.unshift(first)
@@ -152,6 +152,38 @@ class WCC::Contentful::RichTextRenderer
152
152
  end
153
153
  end
154
154
 
155
+ def render_table_header(table_row_node)
156
+ # roll up blank table-header-cells into the previous cell w/ colspan
157
+ node_contents = []
158
+ table_row_node.content.each do |node|
159
+ if node.node_type == 'table-header-cell' &&
160
+ node_is_blank?(node) &&
161
+ node_contents.last&.node_type == 'table-header-cell'
162
+
163
+ # replace the previous node with a new node with colspan + 1
164
+ last_node = node_contents.pop
165
+ node_contents << WCC::Contentful::RichText.tokenize(
166
+ last_node.as_json.merge(
167
+ 'data' => (last_node['data'] || {}).merge({
168
+ 'colspan' => (last_node['data']&.try('colspan') || 1) + 1
169
+ })
170
+ )
171
+ )
172
+
173
+ # And skip adding this blank node
174
+ next
175
+ end
176
+
177
+ node_contents << node
178
+ end
179
+
180
+ content_tag(:thead) do
181
+ content_tag(:tr) do
182
+ render_content(node_contents)
183
+ end
184
+ end
185
+ end
186
+
155
187
  def render_table_row(node)
156
188
  content_tag(:tr) do
157
189
  render_content(node.content)
@@ -160,16 +192,23 @@ class WCC::Contentful::RichTextRenderer
160
192
 
161
193
  def render_table_cell(node)
162
194
  content_tag(:td) do
163
- render_content(node.content)
195
+ render_table_cell_content(node.content)
164
196
  end
165
197
  end
166
198
 
167
199
  def render_table_header_cell(node)
168
- content_tag(:th) do
169
- render_content(node.content)
200
+ content_tag(:th, colspan: node.data && node.data['colspan']) do
201
+ render_table_cell_content(node.content)
170
202
  end
171
203
  end
172
204
 
205
+ def render_table_cell_content(content)
206
+ # If the content is a single paragraph, render it without the <p> tag
207
+ return render_content(content.first.content) if content.size == 1 && content.first.node_type == 'paragraph'
208
+
209
+ render_content(content)
210
+ end
211
+
173
212
  def render_hyperlink(node)
174
213
  content_tag(:a,
175
214
  href: node.data['uri'],
@@ -249,6 +288,15 @@ class WCC::Contentful::RichTextRenderer
249
288
 
250
289
  private
251
290
 
291
+ def node_is_blank?(node)
292
+ case node.node_type
293
+ when 'text'
294
+ node.value.blank?
295
+ else
296
+ node.content.all? { |n| node_is_blank?(n) }
297
+ end
298
+ end
299
+
252
300
  def resolve_target(target)
253
301
  unless store.present?
254
302
  raise NotConnectedError,
@@ -2,6 +2,6 @@
2
2
 
3
3
  module WCC
4
4
  module Contentful
5
- VERSION = '1.5.0'
5
+ VERSION = '1.5.1'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wcc-contentful
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Watermark Dev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-08 00:00:00.000000000 Z
11
+ date: 2023-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug