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: 995ae1c7fb38df54eff5b1df0af68aeb8558cee5e587e9334e8e8d4d903703b0
4
- data.tar.gz: 0fda3eaef6bf5a4009d7e11dc0fb13cf2ddfdf462db070d6865af65123ba7335
3
+ metadata.gz: 6c04bed913375e4c060905d7efca5aaf5bbf6c89af66a21715cd663b0b5c9771
4
+ data.tar.gz: 9613f4afa666b2cc5c2087dc64542c1b5114ca085b847bf5e0e9c8e58b47322e
5
5
  SHA512:
6
- metadata.gz: 9b40e81a30e9e2b9c9c1b22f816911b4886148d7e61347b2ecd8becde453f7a0304f6db89eae4de60ad2d9af65cb607e0d76758028d17373330dc13e56a84f1a
7
- data.tar.gz: '0783a6f182c878b206847103f7872e4ccfe9263f104f2077f4d8377d48c94b1045292a3523727878f8055541b8715b711d7b1dbe3ce11d0128f80d7640b22bb2'
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
- component.new(content_block: self, block_type: field_names.first, block_name: field_names.last).render
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ContentBlockTools
4
- VERSION = "1.10.0"
4
+ VERSION = "1.10.1"
5
5
  end
@@ -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.0
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