content_block_tools 0.6.1 → 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: 1b432a7791692f66578f8ac72f9e02548436de162c781c1359758779c72d5beb
4
- data.tar.gz: 94df9abb5ba25e1338396802d0040659e836d1a4aca0825a86921f7045281f1b
3
+ metadata.gz: 3b4f73d4250542e48814f4b1a7f9963315909983df3cd8f306316c00945c0f27
4
+ data.tar.gz: b376678520df72388f10802a1652fa3819a0a3ad13d295ed681a5c7bdaf20b1d
5
5
  SHA512:
6
- metadata.gz: 1ef1c7687153fb85bb6c92f732846f6227ed2f68f19f7c7660ac0a8c0c9d11f1943da3749d35072ac1a5f34f9402a953480597dbac7b6b11397cb3d1bbce9632
7
- data.tar.gz: 776b3c2b907514517da5e47b206f96def040815b76edfdab10cd74b20092767a814d28f093de51358b36100ae5be7998025014e51ec773df31c90dc6288098df
6
+ metadata.gz: 3ab65c991be77d1feb1f8720e9d36d193bfacae7a5e57cebad50ea894ea28a1ceac34c03df4660f0fc8d7f2ecc2195e005fd2a33133540502655e19334fc7a27
7
+ data.tar.gz: aab61f2f75566b7e869ac36fc8535ad5f5a48bb8dce7304952cdf3a5f056f10e9b396c4e0cf5d7d5491d54535f6f4c131f73fc097017edb1b597adb2a6abf994
data/CHANGELOG.md CHANGED
@@ -7,6 +7,14 @@
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
+
14
+ ## 0.6.2
15
+
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))
17
+
10
18
  ## 0.6.1
11
19
 
12
20
  - Handle multiple telephone numbers for a Contact block ([48](https://github.com/alphagov/govuk_content_block_tools/pull/48)
@@ -25,10 +25,10 @@ Gem::Specification.new do |spec|
25
25
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
26
26
  spec.require_paths = %w[lib]
27
27
 
28
- spec.add_development_dependency "rake", "13.2.1"
29
- spec.add_development_dependency "rspec", "3.13.0"
28
+ spec.add_development_dependency "rake", "13.3.0"
29
+ spec.add_development_dependency "rspec", "3.13.1"
30
30
  spec.add_development_dependency "rspec-html-matchers", "0.10.0"
31
- spec.add_development_dependency "rubocop-govuk", "5.1.6"
31
+ spec.add_development_dependency "rubocop-govuk", "5.1.15"
32
32
 
33
33
  spec.add_dependency "actionview", ">= 6"
34
34
  end
@@ -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,14 +3,17 @@ 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
- content_tag(:div, class: "govuk-body govuk-!-margin-bottom-4") do
9
+ content_tag(:div, class: "govuk-body") do
8
10
  concat number_list
11
+ concat call_charges_link
9
12
  end
10
13
  end
11
14
 
12
15
  def number_list
13
- content_tag(:ul, class: "govuk-!-padding-0", style: "list-style: none;") do
16
+ content_tag(:ul, class: "govuk-!-padding-0 govuk-!-margin-0 govuk-list") do
14
17
  item[:telephone_numbers].each do |number|
15
18
  concat number_list_item(number)
16
19
  end
@@ -18,12 +21,15 @@ module ContentBlockTools
18
21
  end
19
22
 
20
23
  def number_list_item(number)
21
- content_tag(:li) do
22
- concat content_tag(:span, "#{number[:label]}: ")
24
+ content_tag(:li, "#{number[:label]}: #{number[:telephone_number]}", class: "govuk-!-margin-bottom-0")
25
+ end
26
+
27
+ def call_charges_link
28
+ item[:show_uk_call_charges] == "true" && content_tag(:p, class: "govuk-!-margin-0") do
23
29
  concat content_tag(:a,
24
- number[:telephone_number],
30
+ "Find out about call charges",
25
31
  class: "govuk-link",
26
- href: "tel:#{CGI.escape number[:telephone_number]}")
32
+ href: "https://www.gov.uk/call-charges")
27
33
  end
28
34
  end
29
35
  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.1"
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.1
4
+ version: 0.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev
@@ -15,28 +15,28 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 13.2.1
18
+ version: 13.3.0
19
19
  type: :development
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 13.2.1
25
+ version: 13.3.0
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rspec
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - '='
31
31
  - !ruby/object:Gem::Version
32
- version: 3.13.0
32
+ version: 3.13.1
33
33
  type: :development
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - '='
38
38
  - !ruby/object:Gem::Version
39
- version: 3.13.0
39
+ version: 3.13.1
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: rspec-html-matchers
42
42
  requirement: !ruby/object:Gem::Requirement
@@ -57,14 +57,14 @@ dependencies:
57
57
  requirements:
58
58
  - - '='
59
59
  - !ruby/object:Gem::Version
60
- version: 5.1.6
60
+ version: 5.1.15
61
61
  type: :development
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - '='
66
66
  - !ruby/object:Gem::Version
67
- version: 5.1.6
67
+ version: 5.1.15
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: actionview
70
70
  requirement: !ruby/object:Gem::Requirement