govspeak 6.8.1 → 6.8.4

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: 5613d3c42e9347e578dd2ed9d2164c08cc81cfc70f8ade79deb56fc77069056f
4
- data.tar.gz: 1157c2a33c97ae726af931714252eaa460216f1254a47449c4db187fff197c1d
3
+ metadata.gz: 35ed6a74578a19fb89e4c855494d27708d7809e925a6029b5b391fbe474f5d49
4
+ data.tar.gz: 74f0b44824ff948767ae8e8f1a5f95ae784f07ea3ab424f66a46ee0d07efb6af
5
5
  SHA512:
6
- metadata.gz: aa8cca4a71fd2f9b029c545714ccf032ead1fe07389ce49571aa5f14093b95bd7ae05ddc2188bea959ea60ac59c042bc0b56729b8a197782291869e7e0cf947e
7
- data.tar.gz: 12dcd4d62d0b6b16a651d001145f2aaa942991c972a00720d598464633f2eb8ead57d50dc0609ed1eb6a25a328399380dac55d97aa7101cdd52483b46b6c700c
6
+ metadata.gz: c022e6a898d40e41ea571d9f39863f6235822810d2823f99d17e58eb559ab7e0b2b35c2a60cdec627270b9fe3d31c39224f820e5e8f3378f8df811478ca6203d
7
+ data.tar.gz: facb052f32abfcdc7e54fb6799d7e052d1a951aedce6db6b582fa716654bb6cc6730ff99af65a2af511dc0039b4f07f8f9669accbadf8821b01f2280c22933c8
data/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## 6.8.4
2
+
3
+ * Fix bug where inconsistent linebreaks trigger validations [#250](https://github.com/alphagov/govspeak/pull/250)
4
+
5
+ ## 6.8.3
6
+
7
+ * Require Kramdown minimum version of 2.3.1 to avoid CVE-2021-28834 [#246](https://github.com/alphagov/govspeak/pull/246)
8
+
9
+ ## 6.8.2
10
+
11
+ * Fix footnote numbering [#239](https://github.com/alphagov/govspeak/pull/239)
12
+
1
13
  ## 6.8.1
2
14
 
3
15
  * Fix a bug which resulted in validation errors on 'Start Button' elements [#237](https://github.com/alphagov/govspeak/pull/237)
@@ -20,7 +20,7 @@ private
20
20
 
21
21
  # Make whitespace in html tags consistent
22
22
  def normalise_html(html)
23
- Nokogiri::HTML5.fragment(html).to_s
23
+ Nokogiri::HTML5.fragment(html).to_s.gsub("\n", "")
24
24
  end
25
25
 
26
26
  def govspeak_to_html(sanitize:)
@@ -1,3 +1,3 @@
1
1
  module Govspeak
2
- VERSION = "6.8.1".freeze
2
+ VERSION = "6.8.4".freeze
3
3
  end
data/lib/govspeak.rb CHANGED
@@ -138,7 +138,7 @@ module Govspeak
138
138
  def footnote_definitions(source)
139
139
  is_legislative_list = source.scan(/\$LegislativeList.*?\[\^\d\]*.*?\$EndLegislativeList/m).size.positive?
140
140
  is_cta = source.scan(/\$CTA.*?\[\^\d\]*.*?\$CTA/m).size.positive?
141
- footnotes = source.scan(/\[\^(\d+)\]:(.*)/)
141
+ footnotes = source.scan(/^\s*\[\^(\d+)\]:(.*)/)
142
142
  @acronyms = source.scan(/(?<=\*)\[(.*)\]:(.*)/)
143
143
  if (is_legislative_list || is_cta) && footnotes.size.positive?
144
144
  list_items = footnotes.map do |footnote|
@@ -1048,6 +1048,48 @@ Teston
1048
1048
  )
1049
1049
  end
1050
1050
 
1051
+ test_given_govspeak "
1052
+ $LegislativeList
1053
+ 1. some text[^1]:
1054
+ $EndLegislativeList
1055
+ [^1]: footnote text
1056
+ " do
1057
+ assert_html_output %(
1058
+ <p>1. some text<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">[footnote 1]</a></sup>:</p>
1059
+
1060
+ <div class="footnotes" role="doc-endnotes">
1061
+ <ol>
1062
+ <li id="fn:1" role="doc-endnote">
1063
+ <p>
1064
+ footnote text<a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
1065
+ </p>
1066
+ </li>
1067
+ </ol>
1068
+ </div>
1069
+ )
1070
+ end
1071
+
1072
+ test_given_govspeak "
1073
+ $LegislativeList
1074
+ 1. some text[^1]: extra
1075
+ $EndLegislativeList
1076
+ [^1]: footnote text
1077
+ " do
1078
+ assert_html_output %(
1079
+ <p>1. some text<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">[footnote 1]</a></sup>: extra</p>
1080
+
1081
+ <div class="footnotes" role="doc-endnotes">
1082
+ <ol>
1083
+ <li id="fn:1" role="doc-endnote">
1084
+ <p>
1085
+ footnote text<a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
1086
+ </p>
1087
+ </li>
1088
+ </ol>
1089
+ </div>
1090
+ )
1091
+ end
1092
+
1051
1093
  # FIXME: this code is buggy and replaces abbreviations in HTML tags - removing the functionality for now
1052
1094
  # test_given_govspeak "
1053
1095
  # $LegislativeList
@@ -108,4 +108,9 @@ class HtmlValidatorTest < Minitest::Test
108
108
  assert Govspeak::HtmlValidator.new("<table><tr><td>Hello</td></tr></table>").valid?, "No <tbody> is valid"
109
109
  assert Govspeak::HtmlValidator.new("<table><tbody><tr><td>Hello</td></tr></tbody></table>").valid?, "<tbody> is valid"
110
110
  end
111
+
112
+ test "allow HTML tables with \n" do
113
+ html = "<table>\n<thead>\n<tr>\n<th></th>\n<th></th>\n<th colspan=\"3\"></th>\n\n</tr>\n</thead>\n<tr>\n<th></th>\n<td></td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n</table>"
114
+ assert Govspeak::HtmlValidator.new(html).valid?, 'Tables with no <tbody> and \n are valid'
115
+ end
111
116
  end
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: 6.8.1
4
+ version: 6.8.4
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: 2022-03-16 00:00:00.000000000 Z
11
+ date: 2022-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview
@@ -92,14 +92,14 @@ dependencies:
92
92
  requirements:
93
93
  - - ">="
94
94
  - !ruby/object:Gem::Version
95
- version: 2.3.0
95
+ version: 2.3.1
96
96
  type: :runtime
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - ">="
101
101
  - !ruby/object:Gem::Version
102
- version: 2.3.0
102
+ version: 2.3.1
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: nokogiri
105
105
  requirement: !ruby/object:Gem::Requirement
@@ -190,14 +190,14 @@ dependencies:
190
190
  requirements:
191
191
  - - '='
192
192
  - !ruby/object:Gem::Version
193
- version: 4.3.0
193
+ version: 4.6.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.3.0
200
+ version: 4.6.0
201
201
  - !ruby/object:Gem::Dependency
202
202
  name: simplecov
203
203
  requirement: !ruby/object:Gem::Requirement
@@ -327,29 +327,29 @@ required_rubygems_version: !ruby/object:Gem::Requirement
327
327
  - !ruby/object:Gem::Version
328
328
  version: '0'
329
329
  requirements: []
330
- rubygems_version: 3.3.9
330
+ rubygems_version: 3.3.20
331
331
  signing_key:
332
332
  specification_version: 4
333
333
  summary: Markup language for single domain
334
334
  test_files:
335
- - test/govspeak_test_helper.rb
336
- - test/blockquote_extra_quote_remover_test.rb
335
+ - test/govspeak_attachments_image_test.rb
337
336
  - test/govspeak_link_extractor_test.rb
338
- - test/govspeak_images_test.rb
339
- - test/govspeak_link_test.rb
337
+ - test/govspeak_table_with_headers_test.rb
338
+ - test/govspeak_attachment_test.rb
340
339
  - test/govspeak_extract_contact_content_ids_test.rb
341
- - test/govspeak_footnote_test.rb
342
- - test/presenters/h_card_presenter_test.rb
343
- - test/govspeak_attachments_inline_test.rb
344
- - test/govspeak_structured_headers_test.rb
345
340
  - test/test_helper.rb
346
- - test/govspeak_button_test.rb
347
- - test/govspeak_attachment_test.rb
341
+ - test/html_validator_test.rb
342
+ - test/govspeak_test_helper.rb
348
343
  - test/html_sanitizer_test.rb
349
- - test/govspeak_contacts_test.rb
350
- - test/govspeak_attachments_image_test.rb
351
- - test/govspeak_images_bang_test.rb
344
+ - test/govspeak_footnote_test.rb
345
+ - test/govspeak_images_test.rb
346
+ - test/govspeak_button_test.rb
352
347
  - test/govspeak_test.rb
353
- - test/govspeak_table_with_headers_test.rb
354
- - test/html_validator_test.rb
348
+ - test/blockquote_extra_quote_remover_test.rb
349
+ - test/govspeak_images_bang_test.rb
350
+ - test/presenters/h_card_presenter_test.rb
351
+ - test/govspeak_contacts_test.rb
355
352
  - test/govspeak_attachment_link_test.rb
353
+ - test/govspeak_attachments_inline_test.rb
354
+ - test/govspeak_link_test.rb
355
+ - test/govspeak_structured_headers_test.rb