content_block_tools 1.10.0 → 1.10.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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6c04bed913375e4c060905d7efca5aaf5bbf6c89af66a21715cd663b0b5c9771
|
|
4
|
+
data.tar.gz: 9613f4afa666b2cc5c2087dc64542c1b5114ca085b847bf5e0e9c8e58b47322e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 19834178e345e861f8c8bbdd80ea04be7ab2ef21f20b2a0c94ca299818706277667f71af7f26d897cc6f8a28e525052cbd6d13db626132abb36038368f9502f5
|
|
7
|
+
data.tar.gz: ffe0540071fb0c88100496f2b6d0ae93a4c576a04066193caafea0345c90bc3c41d901f9eeae054900df8f0a41b160648478e1e723620b16adab7a71bace6df2
|
|
@@ -126,17 +126,26 @@ module ContentBlockTools
|
|
|
126
126
|
|
|
127
127
|
def field_or_block_content
|
|
128
128
|
content = details.dig(*field_names)
|
|
129
|
+
|
|
129
130
|
case content
|
|
130
131
|
when String
|
|
131
132
|
field_presenter(field_names.last).new(content).render
|
|
132
133
|
when Hash
|
|
133
|
-
|
|
134
|
+
if embedded_object_in_one_to_one_relationship?
|
|
135
|
+
field_presenter(field_names.last).new(content).render
|
|
136
|
+
else
|
|
137
|
+
component.new(content_block: self, block_type: field_names.first, block_name: field_names.last).render
|
|
138
|
+
end
|
|
134
139
|
else
|
|
135
140
|
ContentBlockTools.logger.warn("Content not found for content block #{content_id} and fields #{field_names}")
|
|
136
141
|
embed_code
|
|
137
142
|
end
|
|
138
143
|
end
|
|
139
144
|
|
|
145
|
+
def embedded_object_in_one_to_one_relationship?
|
|
146
|
+
field_names.one?
|
|
147
|
+
end
|
|
148
|
+
|
|
140
149
|
def rendering_block?
|
|
141
150
|
!field_names.present? || details.dig(*field_names).is_a?(Hash)
|
|
142
151
|
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module ContentBlockTools
|
|
2
|
+
module Presenters
|
|
3
|
+
module FieldPresenters
|
|
4
|
+
module TimePeriod
|
|
5
|
+
class TimePeriodPresenterError < RuntimeError; end
|
|
6
|
+
|
|
7
|
+
class DateRangePresenter < BasePresenter
|
|
8
|
+
def render
|
|
9
|
+
"#{start_date} to #{end_date}"
|
|
10
|
+
rescue Date::Error, TypeError
|
|
11
|
+
raise TimePeriodPresenterError, "Not a valid date range: #{field}"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
private
|
|
15
|
+
|
|
16
|
+
def start_date
|
|
17
|
+
presented_date(field.dig(:start, :date))
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def end_date
|
|
21
|
+
presented_date(field.dig(:end, :date))
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def presented_date(date)
|
|
25
|
+
Presenters::FieldPresenters::TimePeriod::DatePresenter.new(
|
|
26
|
+
date,
|
|
27
|
+
).render
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
data/lib/content_block_tools.rb
CHANGED
|
@@ -10,6 +10,7 @@ require "content_block_tools/helpers/override_classes"
|
|
|
10
10
|
|
|
11
11
|
require "content_block_tools/presenters/field_presenters/base_presenter"
|
|
12
12
|
require "content_block_tools/presenters/field_presenters/contact/email_presenter"
|
|
13
|
+
require "content_block_tools/presenters/field_presenters/time_period/date_range_presenter"
|
|
13
14
|
require "content_block_tools/presenters/field_presenters/time_period/date_presenter"
|
|
14
15
|
require "content_block_tools/presenters/field_presenters/time_period/time_presenter"
|
|
15
16
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: content_block_tools
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.10.
|
|
4
|
+
version: 1.10.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- GOV.UK Dev
|
|
@@ -197,6 +197,7 @@ files:
|
|
|
197
197
|
- lib/content_block_tools/presenters/field_presenters/base_presenter.rb
|
|
198
198
|
- lib/content_block_tools/presenters/field_presenters/contact/email_presenter.rb
|
|
199
199
|
- lib/content_block_tools/presenters/field_presenters/time_period/date_presenter.rb
|
|
200
|
+
- lib/content_block_tools/presenters/field_presenters/time_period/date_range_presenter.rb
|
|
200
201
|
- lib/content_block_tools/presenters/field_presenters/time_period/time_presenter.rb
|
|
201
202
|
- lib/content_block_tools/version.rb
|
|
202
203
|
- node_modules/govuk-frontend/README.md
|