govspeak 6.8.1 → 6.8.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/lib/govspeak/html_validator.rb +1 -1
- data/lib/govspeak/version.rb +1 -1
- data/lib/govspeak.rb +1 -1
- data/test/govspeak_test.rb +42 -0
- data/test/html_validator_test.rb +5 -0
- metadata +22 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 35ed6a74578a19fb89e4c855494d27708d7809e925a6029b5b391fbe474f5d49
|
4
|
+
data.tar.gz: 74f0b44824ff948767ae8e8f1a5f95ae784f07ea3ab424f66a46ee0d07efb6af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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)
|
data/lib/govspeak/version.rb
CHANGED
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(
|
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|
|
data/test/govspeak_test.rb
CHANGED
@@ -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
|
data/test/html_validator_test.rb
CHANGED
@@ -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.
|
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-
|
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.
|
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.
|
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.
|
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.
|
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.
|
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/
|
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/
|
339
|
-
- test/
|
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/
|
347
|
-
- test/
|
341
|
+
- test/html_validator_test.rb
|
342
|
+
- test/govspeak_test_helper.rb
|
348
343
|
- test/html_sanitizer_test.rb
|
349
|
-
- test/
|
350
|
-
- test/
|
351
|
-
- test/
|
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/
|
354
|
-
- test/
|
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
|