wcc-contentful 1.5.0 → 1.5.1

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: 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