content_block_tools 1.10.0 → 1.10.2
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 +4 -4
- data/app/components/content_block_tools/time_period_component.html.erb +8 -5
- data/lib/content_block_tools/content_block.rb +10 -1
- data/lib/content_block_tools/presenters/field_presenters/time_period/date_presenter.rb +2 -0
- data/lib/content_block_tools/presenters/field_presenters/time_period/date_range_presenter.rb +35 -0
- data/lib/content_block_tools/presenters/field_presenters/time_period/time_presenter.rb +2 -0
- data/lib/content_block_tools/version.rb +1 -1
- data/lib/content_block_tools.rb +1 -0
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e4bffc74453392e4176a013c3f295f8bd7c22d003c36aec1253f2340408b0689
|
|
4
|
+
data.tar.gz: fe1b05f582fad533f93fe6fc515ac78d7050546033c2226d671e4d42ae11184c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5760656e4fb6f49f6232311eedcbf7f38209f6a430c43a21a1ee697be545a6559bc7497adaf150e28a31a4ca146b8eb1fa6aeaa6cbf9e5e43e3584c26b60f02c
|
|
7
|
+
data.tar.gz: 95877b32ff1607c425f248b83edd31a891a1dab0b352edf32d17c5fc53763b252edc0fa73fde0ed1c7178eaa6698bfa6676218e5bd9c8c473cc9f36bbbd142db
|
|
@@ -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,35 @@
|
|
|
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
|
+
return unless start_date.present? && end_date.present?
|
|
10
|
+
|
|
11
|
+
"#{start_date} to #{end_date}"
|
|
12
|
+
rescue Date::Error, TypeError
|
|
13
|
+
raise TimePeriodPresenterError, "Not a valid date range: #{field}"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
|
|
18
|
+
def start_date
|
|
19
|
+
presented_date(field.dig(:start, :date))
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def end_date
|
|
23
|
+
presented_date(field.dig(:end, :date))
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def presented_date(date)
|
|
27
|
+
Presenters::FieldPresenters::TimePeriod::DatePresenter.new(
|
|
28
|
+
date,
|
|
29
|
+
).render
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
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.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- GOV.UK Dev
|
|
@@ -108,7 +108,7 @@ dependencies:
|
|
|
108
108
|
version: '101.0'
|
|
109
109
|
- - "<"
|
|
110
110
|
- !ruby/object:Gem::Version
|
|
111
|
-
version: '
|
|
111
|
+
version: '103.1'
|
|
112
112
|
type: :runtime
|
|
113
113
|
prerelease: false
|
|
114
114
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -118,7 +118,7 @@ dependencies:
|
|
|
118
118
|
version: '101.0'
|
|
119
119
|
- - "<"
|
|
120
120
|
- !ruby/object:Gem::Version
|
|
121
|
-
version: '
|
|
121
|
+
version: '103.1'
|
|
122
122
|
- !ruby/object:Gem::Dependency
|
|
123
123
|
name: govspeak
|
|
124
124
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -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
|