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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 995ae1c7fb38df54eff5b1df0af68aeb8558cee5e587e9334e8e8d4d903703b0
4
- data.tar.gz: 0fda3eaef6bf5a4009d7e11dc0fb13cf2ddfdf462db070d6865af65123ba7335
3
+ metadata.gz: e4bffc74453392e4176a013c3f295f8bd7c22d003c36aec1253f2340408b0689
4
+ data.tar.gz: fe1b05f582fad533f93fe6fc515ac78d7050546033c2226d671e4d42ae11184c
5
5
  SHA512:
6
- metadata.gz: 9b40e81a30e9e2b9c9c1b22f816911b4886148d7e61347b2ecd8becde453f7a0304f6db89eae4de60ad2d9af65cb607e0d76758028d17373330dc13e56a84f1a
7
- data.tar.gz: '0783a6f182c878b206847103f7872e4ccfe9263f104f2077f4d8377d48c94b1045292a3523727878f8055541b8715b711d7b1dbe3ce11d0128f80d7640b22bb2'
6
+ metadata.gz: 5760656e4fb6f49f6232311eedcbf7f38209f6a430c43a21a1ee697be545a6559bc7497adaf150e28a31a4ca146b8eb1fa6aeaa6cbf9e5e43e3584c26b60f02c
7
+ data.tar.gz: 95877b32ff1607c425f248b83edd31a891a1dab0b352edf32d17c5fc53763b252edc0fa73fde0ed1c7178eaa6698bfa6676218e5bd9c8c473cc9f36bbbd142db
@@ -1,5 +1,8 @@
1
- <p class="govuk-body">
2
- <%= start_date %>
3
- to
4
- <%= end_date %>
5
- </p>
1
+ <% if start_date.present? && end_date.present? %>
2
+ <p class="govuk-body">
3
+ <%= start_date %>
4
+ to
5
+ <%= end_date %>
6
+ </p>
7
+ <% end %>
8
+
@@ -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
@@ -4,6 +4,8 @@ module ContentBlockTools
4
4
  module TimePeriod
5
5
  class DatePresenter < BasePresenter
6
6
  def render
7
+ return unless field.present?
8
+
7
9
  date = Date.parse(field)
8
10
  date.strftime("%e %B %Y").strip
9
11
  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
@@ -4,6 +4,8 @@ module ContentBlockTools
4
4
  module TimePeriod
5
5
  class TimePresenter < BasePresenter
6
6
  def render
7
+ return unless field.present?
8
+
7
9
  time = Time.parse(field)
8
10
  hour = time.strftime("%H")
9
11
  minute = time.strftime("%M")
@@ -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.2"
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.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: '102.1'
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: '102.1'
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