govspeak 7.0.2 → 7.1.0

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: 14fa86649f2bb73e47685e2fb16ae978b1dff2a3f7bef496fd7520186547d854
4
- data.tar.gz: 203651a48459e58f8974a4621ba3ea0651133077c79b94d0cbf489df8049ceae
3
+ metadata.gz: d3ea39476d15515cff8cf40fa41951ed6d551a495e6f8a40415fdb4eb7752660
4
+ data.tar.gz: e084cd737b290c2254fd43796ea4c0a99b906790034a22f258d509a556a726a8
5
5
  SHA512:
6
- metadata.gz: 4f9af0743b85af02263ece3934eb4b8df41b25f1dad626bfd65216dd405110b66c08bf32cbcf1c44a93a0678d8934131e37ec0ca66e37148516d9e3e3ca25ff2
7
- data.tar.gz: 175745b808a77d6d7a60b85b617b1df9596c5c2483d0fac784c1d8c42a2eaea71ee2dc7ffdd0f5968417126b97fea0a1583c70598793795da08bd821fa7b1c21
6
+ metadata.gz: c732aaee36be6d012574e52e6d7dc07a906a539f19e9e5d6f4bbf793a7936761fdc5f5c1e8cade26da7ed93830044017fea897ef7890a1d226796407166e372a
7
+ data.tar.gz: b7c8a84a1baa01b04483674f10708dd96467b343560dd3c1465de7a0846870ab7a99a6a63da892b48399e4d9cb30f7f18f28273d1a7ad85d433a8a9b79a49fac
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
+ ## 7.1.0
2
+
3
+ * Drop support for Ruby 2.7 [#272](https://github.com/alphagov/govspeak/pull/272)
4
+ * Replace inline style attributes in td/th elements with classes [#268](https://github.com/alphagov/govspeak/pull/268)
5
+
1
6
  ## 7.0.2
2
7
 
3
- * Fix for abbreviations nested in button. [#267] (https://github.com/alphagov/govspeak/pull/267)
8
+ * Fix for abbreviations nested in button. [#267](https://github.com/alphagov/govspeak/pull/267)
4
9
 
5
10
  ## 7.0.1
6
11
 
@@ -69,6 +69,8 @@ class Govspeak::HtmlSanitizer
69
69
  "svg" => Sanitize::Config::RELAXED[:attributes][:all] + %w[xmlns width height viewbox focusable],
70
70
  "path" => Sanitize::Config::RELAXED[:attributes][:all] + %w[fill d],
71
71
  "div" => [:data],
72
+ # @TODO These style attributes can be removed once we've checked there
73
+ # isn't hardcoded HTML in documents that uses them
72
74
  "th" => Sanitize::Config::RELAXED[:attributes]["th"] + %w[style],
73
75
  "td" => Sanitize::Config::RELAXED[:attributes]["td"] + %w[style],
74
76
  "govspeak-embed-attachment" => %w[content-id],
@@ -102,6 +102,23 @@ module Govspeak
102
102
  end
103
103
  end
104
104
 
105
+ extension("convert table cell inline styles to classes") do |document|
106
+ document.css("th[style], td[style]").each do |el|
107
+ style = el.remove_attribute("style")
108
+ matches = style.value.scan(/text-align:\s*(left|center|right)/).flatten
109
+
110
+ next unless matches.any?
111
+
112
+ class_name = "cell-text-#{matches.last}"
113
+
114
+ if el[:class]
115
+ el[:class] += " #{class_name}"
116
+ else
117
+ el[:class] = class_name
118
+ end
119
+ end
120
+ end
121
+
105
122
  extension("use gem component for buttons") do |document|
106
123
  document.css(".govuk-button").map do |el|
107
124
  button_html = GovukPublishingComponents.render(
@@ -1,3 +1,3 @@
1
1
  module Govspeak
2
- VERSION = "7.0.2".freeze
2
+ VERSION = "7.1.0".freeze
3
3
  end
data/lib/govspeak.rb CHANGED
@@ -32,7 +32,7 @@ module Govspeak
32
32
  class Document
33
33
  Parser = Kramdown::Parser::Govuk
34
34
  PARSER_CLASS_NAME = Parser.name.split("::").last
35
- UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.freeze
35
+ UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i
36
36
  NEW_PARAGRAPH_LOOKBEHIND = %q{(?<=\A|\n\n|\r\n\r\n)}.freeze
37
37
 
38
38
  @extensions = []
@@ -58,21 +58,21 @@ class GovspeakTableWithHeadersTest < Minitest::Test
58
58
  <table>
59
59
  <thead>
60
60
  <tr>
61
- <td style="text-align: left"></td>
62
- <th style="text-align: center" scope="col">Second Column</th>
63
- <th style="text-align: right" scope="col">Third Column</th>
61
+ <td class="cell-text-left"></td>
62
+ <th scope="col" class="cell-text-center">Second Column</th>
63
+ <th scope="col" class="cell-text-right">Third Column</th>
64
64
  </tr>
65
65
  </thead>
66
66
  <tbody>
67
67
  <tr>
68
- <th style="text-align: left" scope="row">First row</th>
69
- <td style="text-align: center">Cell</td>
70
- <td style="text-align: right">Cell</td>
68
+ <th scope="row" class="cell-text-left">First row</th>
69
+ <td class="cell-text-center">Cell</td>
70
+ <td class="cell-text-right">Cell</td>
71
71
  </tr>
72
72
  <tr>
73
- <th style="text-align: left" scope="row">Second row</th>
74
- <td style="text-align: center">Cell</td>
75
- <td style="text-align: right">Cell</td>
73
+ <th scope="row" class="cell-text-left">Second row</th>
74
+ <td class="cell-text-center">Cell</td>
75
+ <td class="cell-text-right">Cell</td>
76
76
  </tr>
77
77
  </tbody>
78
78
  </table>
@@ -255,7 +255,7 @@ class GovspeakTableWithHeadersTest < Minitest::Test
255
255
  assert_equal document_body_with_hashes_for_row_headers.to_html, expected_outcome
256
256
  end
257
257
 
258
- test "Cells are aligned correctly" do
258
+ test "Cells are given classes to indicate alignment" do
259
259
  assert_equal document_body_with_alignments.to_html, expected_outcome_for_table_with_alignments
260
260
  end
261
261
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govspeak
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.0.2
4
+ version: 7.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-06 00:00:00.000000000 Z
11
+ date: 2023-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview
@@ -50,14 +50,14 @@ dependencies:
50
50
  requirements:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: '23'
53
+ version: '35.1'
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: '23'
60
+ version: '35.1'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: htmlentities
63
63
  requirement: !ruby/object:Gem::Requirement
@@ -190,14 +190,14 @@ dependencies:
190
190
  requirements:
191
191
  - - '='
192
192
  - !ruby/object:Gem::Version
193
- version: 4.9.0
193
+ version: 4.10.0
194
194
  type: :development
195
195
  prerelease: false
196
196
  version_requirements: !ruby/object:Gem::Requirement
197
197
  requirements:
198
198
  - - '='
199
199
  - !ruby/object:Gem::Version
200
- version: 4.9.0
200
+ version: 4.10.0
201
201
  - !ruby/object:Gem::Dependency
202
202
  name: simplecov
203
203
  requirement: !ruby/object:Gem::Requirement
@@ -320,36 +320,36 @@ required_ruby_version: !ruby/object:Gem::Requirement
320
320
  requirements:
321
321
  - - ">="
322
322
  - !ruby/object:Gem::Version
323
- version: '2.7'
323
+ version: '3.0'
324
324
  required_rubygems_version: !ruby/object:Gem::Requirement
325
325
  requirements:
326
326
  - - ">="
327
327
  - !ruby/object:Gem::Version
328
328
  version: '0'
329
329
  requirements: []
330
- rubygems_version: 3.4.2
330
+ rubygems_version: 3.4.10
331
331
  signing_key:
332
332
  specification_version: 4
333
333
  summary: Markup language for single domain
334
334
  test_files:
335
335
  - test/blockquote_extra_quote_remover_test.rb
336
336
  - test/govspeak_attachment_link_test.rb
337
- - test/govspeak_images_test.rb
338
- - test/test_helper.rb
339
- - test/govspeak_footnote_test.rb
337
+ - test/govspeak_attachment_test.rb
338
+ - test/govspeak_attachments_image_test.rb
339
+ - test/govspeak_attachments_inline_test.rb
340
340
  - test/govspeak_button_test.rb
341
+ - test/govspeak_contacts_test.rb
342
+ - test/govspeak_extract_contact_content_ids_test.rb
343
+ - test/govspeak_footnote_test.rb
344
+ - test/govspeak_images_bang_test.rb
345
+ - test/govspeak_images_test.rb
346
+ - test/govspeak_link_extractor_test.rb
341
347
  - test/govspeak_link_test.rb
342
- - test/html_sanitizer_test.rb
343
- - test/govspeak_test.rb
348
+ - test/govspeak_structured_headers_test.rb
344
349
  - test/govspeak_table_with_headers_test.rb
350
+ - test/govspeak_test.rb
351
+ - test/govspeak_test_helper.rb
352
+ - test/html_sanitizer_test.rb
345
353
  - test/html_validator_test.rb
346
- - test/govspeak_attachments_image_test.rb
347
- - test/govspeak_images_bang_test.rb
348
- - test/govspeak_link_extractor_test.rb
349
354
  - test/presenters/h_card_presenter_test.rb
350
- - test/govspeak_test_helper.rb
351
- - test/govspeak_attachment_test.rb
352
- - test/govspeak_structured_headers_test.rb
353
- - test/govspeak_attachments_inline_test.rb
354
- - test/govspeak_contacts_test.rb
355
- - test/govspeak_extract_contact_content_ids_test.rb
355
+ - test/test_helper.rb