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 +4 -4
- data/lib/wcc/contentful/rich_text_renderer.rb +52 -4
- data/lib/wcc/contentful/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5599a00c953fc7b5692bc3f3c5b235d621c2d65bb1965e30a5ef89db3006a1c8
|
4
|
+
data.tar.gz: 40731523f1a793e1c85159977e0f3235588fadf82fa2d5b4733f586f33a812fe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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(
|
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
|
-
|
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
|
-
|
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,
|
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.
|
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-
|
11
|
+
date: 2023-06-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: byebug
|