content_block_tools 0.6.2 → 0.6.3

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: 2c9c67068e398c086a3a7def3a3e5ade924454659704267cdec35f76c8c0d004
4
- data.tar.gz: 5ee2169390f8aa091b712c893aa3d0bf08375ce9d66f23f74e32500990c2bf00
3
+ metadata.gz: 3b4f73d4250542e48814f4b1a7f9963315909983df3cd8f306316c00945c0f27
4
+ data.tar.gz: b376678520df72388f10802a1652fa3819a0a3ad13d295ed681a5c7bdaf20b1d
5
5
  SHA512:
6
- metadata.gz: 9a943d1e6f7e28ba452e3a5b690cb069c2365dc96b27c0a348905f149c97410ba65727bb7112842516bd72de05ef513df972083cbff0a6ecd0b1fcbe23628d70
7
- data.tar.gz: eda17b6958df99a8e5e1e47c172ade147add6ce11ad5366975d2448812d25b1f85b1bcd286fdf6b00f9e452d0dc60fd8e0da973644d6b7c8833358f5a46b31b1
6
+ metadata.gz: 3ab65c991be77d1feb1f8720e9d36d193bfacae7a5e57cebad50ea894ea28a1ceac34c03df4660f0fc8d7f2ecc2195e005fd2a33133540502655e19334fc7a27
7
+ data.tar.gz: aab61f2f75566b7e869ac36fc8535ad5f5a48bb8dce7304952cdf3a5f056f10e9b396c4e0cf5d7d5491d54535f6f4c131f73fc097017edb1b597adb2a6abf994
data/CHANGELOG.md CHANGED
@@ -7,6 +7,10 @@
7
7
  useful summary for people upgrading their application, not a replication
8
8
  of the commit log.
9
9
 
10
+ ## 0.6.3
11
+
12
+ - Fix rendering telephone numbers and rendering individual nested fields ([53](https://github.com/alphagov/govuk_content_block_tools/pull/53))
13
+
10
14
  ## 0.6.2
11
15
 
12
16
  - Handle UK call charges for a Contact block, remove links from telephone numbers ([51](https://github.com/alphagov/govuk_content_block_tools/pull/51))
@@ -70,20 +70,12 @@ module ContentBlockTools
70
70
  end
71
71
 
72
72
  def content_for_field_names
73
- content = content_block.details.deep_symbolize_keys.dig(*field_names)
74
-
75
- if content.blank?
73
+ if field_or_block_content.blank?
76
74
  ContentBlockTools.logger.warn("Content not found for content block #{content_block.content_id} and fields #{field_names}")
77
75
  return content_block.embed_code
78
76
  end
79
77
 
80
- presenter = if content.is_a?(Hash)
81
- block_presenter || ContentBlockTools::Presenters::BlockPresenters::BasePresenter
82
- else
83
- field_presenter || ContentBlockTools::Presenters::FieldPresenters::BasePresenter
84
- end
85
-
86
- presenter.new(content).render
78
+ field_or_block_presenter.new(field_or_block_content).render
87
79
  end
88
80
 
89
81
  def field_names
@@ -91,11 +83,33 @@ module ContentBlockTools
91
83
  embed_code_match = ContentBlockReference::EMBED_REGEX.match(content_block.embed_code)
92
84
  if embed_code_match.present?
93
85
  all_fields = embed_code_match[4]&.reverse&.chomp("/")&.reverse
94
- all_fields&.split("/")&.map(&:to_sym)
86
+ all_fields&.split("/")&.map do |item|
87
+ is_number?(item) ? item.to_i : item.to_sym
88
+ end
95
89
  end
96
90
  end
97
91
  end
98
92
 
93
+ def is_number?(item)
94
+ Float(item, exception: false)
95
+ end
96
+
97
+ def field_or_block_content
98
+ @field_or_block_content ||= field_names.any? ? content_block.details.deep_symbolize_keys.dig(*field_names) : nil
99
+ end
100
+
101
+ def rendering_block?
102
+ field_or_block_content.is_a?(Hash)
103
+ end
104
+
105
+ def field_or_block_presenter
106
+ @field_or_block_presenter ||= if rendering_block?
107
+ block_presenter || ContentBlockTools::Presenters::BlockPresenters::BasePresenter
108
+ else
109
+ field_presenter || ContentBlockTools::Presenters::FieldPresenters::BasePresenter
110
+ end
111
+ end
112
+
99
113
  def field_presenter
100
114
  @field_presenter ||= field_names ? self.class::FIELD_PRESENTERS[field_names.last] : nil
101
115
  end
@@ -105,7 +119,7 @@ module ContentBlockTools
105
119
  end
106
120
 
107
121
  def base_tag
108
- field_names ? :span : self.class::BASE_TAG_TYPE
122
+ field_names ? field_or_block_presenter::BASE_TAG_TYPE : self.class::BASE_TAG_TYPE
109
123
  end
110
124
 
111
125
  def embedded_objects_of_type(type)
@@ -4,6 +4,7 @@ module ContentBlockTools
4
4
  class BasePresenter
5
5
  include ActionView::Context
6
6
  include ActionView::Helpers::TextHelper
7
+ BASE_TAG_TYPE = :span
7
8
 
8
9
  attr_reader :item
9
10
 
@@ -3,6 +3,8 @@ module ContentBlockTools
3
3
  module BlockPresenters
4
4
  module Contact
5
5
  class TelephonePresenter < ContentBlockTools::Presenters::BlockPresenters::BasePresenter
6
+ BASE_TAG_TYPE = :div
7
+
6
8
  def render
7
9
  content_tag(:div, class: "govuk-body") do
8
10
  concat number_list
@@ -11,7 +13,7 @@ module ContentBlockTools
11
13
  end
12
14
 
13
15
  def number_list
14
- content_tag(:ul, class: "govuk-!-padding-0 govuk-!-margin-0", style: "list-style: none;") do
16
+ content_tag(:ul, class: "govuk-!-padding-0 govuk-!-margin-0 govuk-list") do
15
17
  item[:telephone_numbers].each do |number|
16
18
  concat number_list_item(number)
17
19
  end
@@ -4,6 +4,7 @@ module ContentBlockTools
4
4
  class BasePresenter
5
5
  include ActionView::Context
6
6
  include ActionView::Helpers::TagHelper
7
+ BASE_TAG_TYPE = :span
7
8
 
8
9
  attr_reader :field
9
10
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ContentBlockTools
4
- VERSION = "0.6.2"
4
+ VERSION = "0.6.3"
5
5
  end
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: 0.6.2
4
+ version: 0.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev