govspeak 8.2.0 → 8.3.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: 0c555468b4ecde3805f07e313973dddaeadcd14383c982982294c51e804ea1da
4
- data.tar.gz: 96053a068119e22ce4c984ab23398e069c5e0389bdc3ea4defc6401d57c1e1aa
3
+ metadata.gz: 92a47d834646bd30072105c15ed418c6fbd09ad18c5469928be7d76a6cdf8d97
4
+ data.tar.gz: 94a44d03aa697a24937596786e8dff07da213ad085ca39ce52394cb040c3c7d1
5
5
  SHA512:
6
- metadata.gz: bae3e886909c655e6bbec31accad94c3fb1603c089e5a3208d9939ea886920d1961be65f4706e0d58c6304560970771c4507163b86f7669e4b7a798b9831d72f
7
- data.tar.gz: 5d0a20f844cfe0c4e451b6fb0f959be7c5aa80bf95f3db2c10382f439ac28b427c10035cad2f95a79088b0d3197ea2f2e98634f1fc715f7653b7e1acba7e21db
6
+ metadata.gz: b0e59b5d11641d737428bc419c77c749300115625442fb44b0eba026e1b3755e648a1a14ff5199c004ef18cdc72a66953f3c90feb883592dfd8e86719536068c
7
+ data.tar.gz: 3ab9bb92193243b5c0b0920260c7ae23773495d3683df54197775aef23337d743edc091a6068291d744fee7010142650e3896a6735310e7456227ab7e587465d
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 8.3.0
2
+
3
+ * Various bug fixes related to abbreviations in call to action and legislative list components ([#291](https://github.com/alphagov/govspeak/pull/291))
4
+
5
+ ## 8.2.1
6
+
7
+ * Prevent user error when incorrectly formatted footnotes are added to HTML attachments ([#287](https://github.com/alphagov/govspeak/pull/287))
8
+
1
9
  ## 8.2.0
2
10
 
3
11
  * Reintroduce support for acronyms in Call To Action blocks and in Legislative Lists ([#285](https://github.com/alphagov/govspeak/pull/285))
@@ -20,6 +20,15 @@ module Govspeak
20
20
  end
21
21
  end
22
22
 
23
+ extension("covert legislative list ul to ol") do |document|
24
+ document.css(".legislative-list-wrapper").map do |el|
25
+ el.inner_html = el.inner_html
26
+ .sub("<ul>", "<ol class=\"legislative-list\">")
27
+ .gsub("</ul>", "</ol>")
28
+ .gsub("<ul>", "<ol>")
29
+ end
30
+ end
31
+
23
32
  # This "fix" here is tied into the rendering of images as one of the
24
33
  # pre-processor tasks. As images can be created inside block level elements
25
34
  # it's possible that their block level elements can be HTML entity escaped
@@ -1,3 +1,3 @@
1
1
  module Govspeak
2
- VERSION = "8.2.0".freeze
2
+ VERSION = "8.3.0".freeze
3
3
  end
data/lib/govspeak.rb CHANGED
@@ -63,8 +63,6 @@ module Govspeak
63
63
  sanitize: true,
64
64
  syntax_highlighter: nil }.merge(options)
65
65
  @options[:entity_output] = :symbolic
66
- @footnote_definition_html = nil
67
- @acronyms = []
68
66
  end
69
67
 
70
68
  def to_html
@@ -76,16 +74,6 @@ module Govspeak
76
74
  kramdown_doc.to_html
77
75
  end
78
76
 
79
- unless @footnote_definition_html.nil?
80
- regex = /<div class="footnotes".*[<\/div>]/m
81
-
82
- if html.scan(regex).empty?
83
- html << @footnote_definition_html
84
- else
85
- html.gsub!(regex, @footnote_definition_html)
86
- end
87
- end
88
-
89
77
  Govspeak::PostProcessor.process(html, self)
90
78
  end
91
79
  end
@@ -125,8 +113,6 @@ module Govspeak
125
113
  source = Govspeak::BlockquoteExtraQuoteRemover.remove(source)
126
114
  source = remove_forbidden_characters(source)
127
115
 
128
- footnote_definitions(source)
129
-
130
116
  self.class.extensions.each do |_, regexp, block|
131
117
  source.gsub!(regexp) do
132
118
  instance_exec(*Regexp.last_match.captures, &block)
@@ -135,37 +121,6 @@ module Govspeak
135
121
  source
136
122
  end
137
123
 
138
- def footnote_definitions(source)
139
- is_legislative_list = source.scan(/\$LegislativeList.*?\[\^\d\]*.*?\$EndLegislativeList/m).size.positive?
140
- is_cta = source.scan(/\$CTA.*?\[\^\d\]*.*?\$CTA/m).size.positive?
141
- footnotes = source.scan(/^\s*\[\^(\d+)\]:(.*)/)
142
- @acronyms.concat(source.scan(/(?<=\*)\[(.*)\]:(.*)/))
143
- if (is_legislative_list || is_cta) && footnotes.size.positive?
144
- list_items = footnotes.map do |footnote|
145
- number = footnote[0]
146
- text = footnote[1].strip
147
- footnote_definition = Govspeak::Document.new(text).to_html[/(?<=<p>).*(?=<\/p>)/]
148
- footnote_definition = add_acronym_alt_text(footnote_definition)
149
-
150
- <<~HTML_SNIPPET
151
- <li id="fn:#{number}" role="doc-endnote">
152
- <p>
153
- #{footnote_definition}<a href="#fnref:#{number}" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
154
- </p>
155
- </li>
156
- HTML_SNIPPET
157
- end
158
-
159
- @footnote_definition_html = <<~HTML_CONTAINER
160
- <div class="footnotes" role="doc-endnotes">
161
- <ol>
162
- #{list_items.join.strip}
163
- </ol>
164
- </div>
165
- HTML_CONTAINER
166
- end
167
- end
168
-
169
124
  def remove_forbidden_characters(source)
170
125
  # These are characters that are not deemed not suitable for
171
126
  # markup: https://www.w3.org/TR/unicode-xml/#Charlist
@@ -322,20 +277,11 @@ module Govspeak
322
277
  end
323
278
 
324
279
  extension("call-to-action", surrounded_by("$CTA")) do |body|
325
- doc = Kramdown::Document.new(preprocess(body.strip), @options).to_html
326
- doc = add_acronym_alt_text(doc)
327
- doc = %(\n<div class="call-to-action">\n#{doc}</div>\n)
328
- footnotes = body.scan(/\[\^(\d+)\]/).flatten
329
-
330
- footnotes.each do |footnote|
331
- html = "<sup id=\"fnref:#{footnote}\" role=\"doc-noteref\">" \
332
- "<a href=\"#fn:#{footnote}\" class=\"footnote\" rel=\"footnote\">" \
333
- "[footnote #{footnote}]</a></sup>"
334
-
335
- doc.sub!(/(\[\^#{footnote}\])/, html)
336
- end
337
-
338
- doc
280
+ <<~BODY
281
+ {::options parse_block_html=\"true\" /}
282
+ <div class="call-to-action">#{body}</div>
283
+ {::options parse_block_html=\"false\" /}
284
+ BODY
339
285
  end
340
286
 
341
287
  # More specific tags must be defined first. Those defined earlier have a
@@ -354,25 +300,13 @@ module Govspeak
354
300
  end
355
301
 
356
302
  extension("legislative list", /#{NEW_PARAGRAPH_LOOKBEHIND}\$LegislativeList\s*$(.*?)\$EndLegislativeList/m) do |body|
357
- Govspeak::KramdownOverrides.with_kramdown_ordered_lists_disabled do
358
- body = add_acronym_alt_text(body.strip)
359
-
360
- Kramdown::Document.new(body.strip).to_html.tap do |doc|
361
- doc.gsub!("<ul>", "<ol>")
362
- doc.gsub!("</ul>", "</ol>")
363
- doc.sub!("<ol>", '<ol class="legislative-list">')
364
-
365
- footnotes = body.scan(/\[\^(\d+)\]/).flatten
366
-
367
- footnotes.each do |footnote|
368
- html = "<sup id=\"fnref:#{footnote}\" role=\"doc-noteref\">" \
369
- "<a href=\"#fn:#{footnote}\" class=\"footnote\" rel=\"footnote\">" \
370
- "[footnote #{footnote}]</a></sup>"
371
-
372
- doc.sub!(/(\[\^#{footnote}\])/, html)
373
- end
374
- end
375
- end
303
+ # The surrounding div is neccessary to control flow in `parse_block_html` and
304
+ # maintain the same functionality as a previous version of this extension.
305
+ <<~BODY
306
+ {::options parse_block_html=\"true\" ordered_lists_disabled=\"true\" /}
307
+ <div class="legislative-list-wrapper">#{body}</div>
308
+ {::options parse_block_html=\"false\" ordered_lists_disabled=\"false\" /}
309
+ BODY
376
310
  end
377
311
 
378
312
  extension("numbered list", /^[ \t]*((s\d+\.\s.*(?:\n|$))+)/) do |body|
@@ -449,14 +383,6 @@ module Govspeak
449
383
  def encode(text)
450
384
  HTMLEntities.new.encode(text)
451
385
  end
452
-
453
- def add_acronym_alt_text(html)
454
- @acronyms.each do |acronym|
455
- html.gsub!(acronym[0], "<abbr title=\"#{acronym[1].strip}\">#{acronym[0]}</abbr>")
456
- end
457
-
458
- html
459
- end
460
386
  end
461
387
  end
462
388
 
@@ -17,6 +17,13 @@ module Kramdown
17
17
  DESCRIPTION
18
18
  simple_array_validator(val, :document_domains, AlwaysEqual.new)
19
19
  end
20
+
21
+ define(:ordered_lists_disabled, Boolean, false, <<~DESCRIPTION)
22
+ Disables ordered lists
23
+
24
+ Default: false
25
+ Used by: KramdownWithAutomaticExternalLinks
26
+ DESCRIPTION
20
27
  end
21
28
 
22
29
  module Parser
@@ -46,7 +53,17 @@ module Kramdown
46
53
  def parse_block_html
47
54
  return false if CUSTOM_INLINE_ELEMENTS.include?(@src[1].downcase)
48
55
 
49
- super
56
+ return super unless @options[:ordered_lists_disabled]
57
+
58
+ # Kramdown loads parsers into the instance from `options` which are scoped to
59
+ # the class. Because we are changing these options inside an instance, we must
60
+ # reconfigure the parser before and after disbaling ordered lists.
61
+ Govspeak::KramdownOverrides.with_kramdown_ordered_lists_disabled do
62
+ configure_parser
63
+ super
64
+ end
65
+
66
+ configure_parser
50
67
  end
51
68
  end
52
69
  end
@@ -420,13 +420,13 @@ Teston
420
420
  $CTA" do
421
421
  assert_html_output %(
422
422
  <div class="call-to-action">
423
- <p>Click here to start the tool</p>
423
+ <p>Click here to start the tool</p>
424
424
  </div>)
425
425
  assert_text_output "Click here to start the tool"
426
426
  end
427
427
 
428
428
  test_given_govspeak "
429
- Here is some text
429
+ Here is some text\n
430
430
 
431
431
  $CTA
432
432
  Click here to start the tool
@@ -436,7 +436,7 @@ Teston
436
436
  <p>Here is some text</p>
437
437
 
438
438
  <div class="call-to-action">
439
- <p>Click here to start the tool</p>
439
+ <p>Click here to start the tool</p>
440
440
  </div>)
441
441
  end
442
442
 
@@ -453,9 +453,10 @@ Teston
453
453
  $CTA" do
454
454
  assert_html_output %(
455
455
  <div class="call-to-action">
456
- <p>This is a test:</p>
457
456
 
458
- <ol class="steps">
457
+ <p>This is a test:</p>
458
+
459
+ <ol class="steps">
459
460
  <li>
460
461
  <p>This is number 1.</p>
461
462
  </li>
@@ -480,7 +481,7 @@ Teston
480
481
  " do
481
482
  assert_html_output %(
482
483
  <div class="call-to-action">
483
- <p><a rel="external" href="http://www.external.com">external link</a> some text</p>
484
+ <p><a rel="external" href="http://www.external.com">external link</a> some text</p>
484
485
  </div>)
485
486
  end
486
487
 
@@ -490,7 +491,7 @@ Teston
490
491
  $CTA", document_domains: %w[www.not-external.com] do
491
492
  assert_html_output %(
492
493
  <div class="call-to-action">
493
- <p><a href="http://www.not-external.com">internal link</a> some text</p>
494
+ <p><a href="http://www.not-external.com">internal link</a> some text</p>
494
495
  </div>)
495
496
  end
496
497
 
@@ -505,7 +506,7 @@ Teston
505
506
  " do
506
507
  assert_html_output %(
507
508
  <div class="call-to-action">
508
- <p>Click here to start the tool</p>
509
+ <p>Click here to start the tool</p>
509
510
  </div>
510
511
 
511
512
  <div class="contact">
@@ -514,7 +515,7 @@ Teston
514
515
  end
515
516
 
516
517
  test_given_govspeak "
517
- [internal link](http://www.not-external.com)
518
+ [internal link](http://www.not-external.com)\n
518
519
 
519
520
  $CTA
520
521
  Click here to start the tool
@@ -523,7 +524,7 @@ Teston
523
524
  <p><a href="http://www.not-external.com">internal link</a></p>
524
525
 
525
526
  <div class="call-to-action">
526
- <p>Click here to start the tool</p>
527
+ <p>Click here to start the tool</p>
527
528
  </div>)
528
529
  end
529
530
 
@@ -535,15 +536,13 @@ Teston
535
536
  " do
536
537
  assert_html_output %(
537
538
  <div class="call-to-action">
538
- <p>Click here to start the tool<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">[footnote 1]</a></sup></p>
539
+ <p>Click here to start the tool<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">[footnote 1]</a></sup></p>
539
540
  </div>
540
541
  <div class="footnotes" role="doc-endnotes">
541
542
  <ol>
542
543
  <li id="fn:1" role="doc-endnote">
543
- <p>
544
- Footnote definition one<a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
545
- </p>
546
- </li>
544
+ <p>Footnote definition one <a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
545
+ </li>
547
546
  </ol>
548
547
  </div>
549
548
  )
@@ -563,26 +562,21 @@ Teston
563
562
  " do
564
563
  assert_html_output %(
565
564
  <div class="call-to-action">
566
- <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
565
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
567
566
  Fusce felis ante<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">[footnote 1]</a></sup>, lobortis non quam sit amet, tempus interdum justo.</p>
568
567
  </div>
569
-
570
568
  <div class="call-to-action">
571
- <p>Pellentesque quam enim, egestas sit amet congue sit amet<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">[footnote 2]</a></sup>, ultrices vitae arcu.
569
+ <p>Pellentesque quam enim, egestas sit amet congue sit amet<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">[footnote 2]</a></sup>, ultrices vitae arcu.
572
570
  Fringilla, metus dui scelerisque est.</p>
573
571
  </div>
574
572
  <div class="footnotes" role="doc-endnotes">
575
573
  <ol>
576
574
  <li id="fn:1" role="doc-endnote">
577
- <p>
578
- Footnote definition one<a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
579
- </p>
580
- </li>
581
- <li id="fn:2" role="doc-endnote">
582
- <p>
583
- Footnote definition two<a href="#fnref:2" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
584
- </p>
585
- </li>
575
+ <p>Footnote definition one <a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
576
+ </li>
577
+ <li id="fn:2" role="doc-endnote">
578
+ <p>Footnote definition two <a href="#fnref:2" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
579
+ </li>
586
580
  </ol>
587
581
  </div>
588
582
  )
@@ -600,7 +594,7 @@ Teston
600
594
  " do
601
595
  assert_html_output %(
602
596
  <div class="call-to-action">
603
- <p>Click here to start the tool<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">[footnote 1]</a></sup></p>
597
+ <p>Click here to start the tool<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">[footnote 1]</a></sup></p>
604
598
  </div>
605
599
 
606
600
  <p>Lorem ipsum dolor sit amet<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">[footnote 2]</a></sup></p>
@@ -608,15 +602,11 @@ Teston
608
602
  <div class="footnotes" role="doc-endnotes">
609
603
  <ol>
610
604
  <li id="fn:1" role="doc-endnote">
611
- <p>
612
- Footnote definition 1<a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
613
- </p>
614
- </li>
615
- <li id="fn:2" role="doc-endnote">
616
- <p>
617
- Footnote definition 2<a href="#fnref:2" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
618
- </p>
619
- </li>
605
+ <p>Footnote definition 1 <a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
606
+ </li>
607
+ <li id="fn:2" role="doc-endnote">
608
+ <p>Footnote definition 2 <a href="#fnref:2" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
609
+ </li>
620
610
  </ol>
621
611
  </div>
622
612
  )
@@ -632,7 +622,63 @@ Teston
632
622
  " do
633
623
  assert_html_output %(
634
624
  <div class="call-to-action">
635
- <p>Contact the <abbr title="Some Government Department">SGD</abbr> on 0800 000 0000 or contact the <abbr title="Other Government Department">class</abbr> on 0800 001 0001</p>
625
+ <p>Contact the <abbr title="Some Government Department">SGD</abbr> on 0800 000 0000 or contact the <abbr title="Other Government Department">class</abbr> on 0800 001 0001</p>
626
+ </div>
627
+ )
628
+ end
629
+
630
+ test_given_govspeak "
631
+ $CTA
632
+ Welcome to the GOV.UK website
633
+ $CTA
634
+
635
+ *[GOV.UK]: The official UK government website
636
+ *[website]: A collection of web pages, such as GOV.UK
637
+ " do
638
+ assert_html_output %(
639
+ <div class="call-to-action">
640
+ <p>Welcome to the <abbr title="The official UK government website">GOV.UK</abbr> <abbr title="A collection of web pages, such as GOV.UK">website</abbr></p>
641
+ </div>
642
+ )
643
+ end
644
+
645
+ test_given_govspeak "
646
+ $CTA
647
+ Please email <developer@digital.cabinet-office.GOV.UK>
648
+ $CTA
649
+
650
+ *[GOV.UK]: The official UK government website
651
+ " do
652
+ assert_html_output %(
653
+ <div class="call-to-action">
654
+ <p>Please email <a href="mailto:developer@digital.cabinet-office.GOV.UK">developer@digital.cabinet-office.<abbr title="The official UK government website">GOV.UK</abbr></a></p>
655
+ </div>
656
+ )
657
+ end
658
+
659
+ test_given_govspeak "
660
+ $CTA
661
+ Welcome to the GOV.UK[^1]
662
+ $CTA
663
+
664
+ [^1]: GOV.UK is the official UK government website
665
+
666
+ *[GOV.UK]: The official UK government website
667
+ *[website]: A collection of web pages, such as GOV.UK
668
+
669
+ *[GOV.UK]: The official UK government website
670
+ " do
671
+ assert_html_output %(
672
+ <div class="call-to-action">
673
+ <p>Welcome to the <abbr title="The official UK government website">GOV.UK</abbr><sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">[footnote 1]</a></sup></p>
674
+ </div>
675
+
676
+ <div class="footnotes" role="doc-endnotes">
677
+ <ol>
678
+ <li id="fn:1" role="doc-endnote">
679
+ <p><abbr title="The official UK government website">GOV.UK</abbr> is the official UK government <abbr title="A collection of web pages, such as GOV.UK">website</abbr> <a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
680
+ </li>
681
+ </ol>
636
682
  </div>
637
683
  )
638
684
  end
@@ -707,13 +753,14 @@ Teston
707
753
  $EndLegislativeList
708
754
  " do
709
755
  assert_html_output %{
756
+ <div class="legislative-list-wrapper">
710
757
  <ol class="legislative-list">
711
758
  <li>
712
759
  <p>1.0 Lorem ipsum dolor sit amet, consectetur adipiscing elit.
713
- Fusce felis ante, lobortis non quam sit amet, tempus interdum justo.</p>
760
+ Fusce felis ante, lobortis non quam sit amet, tempus interdum justo.</p>
714
761
 
715
762
  <p>Pellentesque quam enim, egestas sit amet congue sit amet, ultrices vitae arcu.
716
- fringilla, metus dui scelerisque est.</p>
763
+ fringilla, metus dui scelerisque est.</p>
717
764
 
718
765
  <ol>
719
766
  <li>
@@ -726,10 +773,11 @@ Teston
726
773
  </li>
727
774
  <li>
728
775
  <p>1.1 Second entry
729
- Curabitur pretium pharetra sapien, a feugiat arcu euismod eget.
730
- Nunc luctus ornare varius. Nulla scelerisque, justo dictum dapibus</p>
776
+ Curabitur pretium pharetra sapien, a feugiat arcu euismod eget.
777
+ Nunc luctus ornare varius. Nulla scelerisque, justo dictum dapibus</p>
731
778
  </li>
732
- </ol>}
779
+ </ol>
780
+ </div>}
733
781
  end
734
782
 
735
783
  test_given_govspeak "
@@ -742,6 +790,7 @@ Teston
742
790
  $EndLegislativeList
743
791
  " do
744
792
  assert_html_output %{
793
+ <div class="legislative-list-wrapper">
745
794
  <ol class="legislative-list">
746
795
  <li>1. The quick</li>
747
796
  <li>2. Brown fox
@@ -752,6 +801,7 @@ Teston
752
801
  </li>
753
802
  <li>3. Dog</li>
754
803
  </ol>
804
+ </div>
755
805
  }
756
806
  end
757
807
 
@@ -766,28 +816,26 @@ Teston
766
816
  [^2]: Footnote definition two
767
817
  " do
768
818
  assert_html_output %(
819
+ <div class="legislative-list-wrapper">
769
820
  <ol class="legislative-list">
770
821
  <li>1. Item 1<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">[footnote 1]</a></sup>
771
- </li>
822
+ </li>
772
823
  <li>2. Item 2<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">[footnote 2]</a></sup>
773
- </li>
824
+ </li>
774
825
  <li>3. Item 3</li>
775
826
  </ol>
827
+ </div>
776
828
 
777
- <div class="footnotes" role="doc-endnotes">
778
- <ol>
779
- <li id="fn:1" role="doc-endnote">
780
- <p>
781
- Footnote definition one<a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
782
- </p>
783
- </li>
784
- <li id="fn:2" role="doc-endnote">
785
- <p>
786
- Footnote definition two<a href="#fnref:2" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
787
- </p>
788
- </li>
789
- </ol>
790
- </div>
829
+ <div class="footnotes" role="doc-endnotes">
830
+ <ol>
831
+ <li id="fn:1" role="doc-endnote">
832
+ <p>Footnote definition one <a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
833
+ </li>
834
+ <li id="fn:2" role="doc-endnote">
835
+ <p>Footnote definition two <a href="#fnref:2" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
836
+ </li>
837
+ </ol>
838
+ </div>
791
839
  )
792
840
  end
793
841
 
@@ -811,41 +859,39 @@ Teston
811
859
  [^3]: Footnote definition two
812
860
  " do
813
861
  assert_html_output %(
862
+ <div class="legislative-list-wrapper">
814
863
  <ol class="legislative-list">
815
864
  <li>1. Item 1<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">[footnote 1]</a></sup>
816
- </li>
865
+ </li>
817
866
  <li>2. Item 2</li>
818
867
  <li>3. Item 3</li>
819
868
  </ol>
869
+ </div>
820
870
 
821
- <p>This is a paragraph with a footnote<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">[footnote 2]</a></sup>.</p>
871
+ <p>This is a paragraph with a footnote<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">[footnote 2]</a></sup>.</p>
822
872
 
873
+ <div class="legislative-list-wrapper">
823
874
  <ol class="legislative-list">
824
875
  <li>1. Item 1</li>
825
876
  <li>2. Item 2<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">[footnote 3]</a></sup>
826
- </li>
877
+ </li>
827
878
  <li>3. Item 3</li>
828
879
  </ol>
880
+ </div>
829
881
 
830
- <div class="footnotes" role="doc-endnotes">
831
- <ol>
832
- <li id="fn:1" role="doc-endnote">
833
- <p>
834
- Footnote definition one<a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
835
- </p>
836
- </li>
837
- <li id="fn:2" role="doc-endnote">
838
- <p>
839
- Footnote definition two<a href="#fnref:2" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
840
- </p>
841
- </li>
842
- <li id="fn:3" role="doc-endnote">
843
- <p>
844
- Footnote definition two<a href="#fnref:3" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
845
- </p>
846
- </li>
847
- </ol>
848
- </div>
882
+ <div class="footnotes" role="doc-endnotes">
883
+ <ol>
884
+ <li id="fn:1" role="doc-endnote">
885
+ <p>Footnote definition one <a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
886
+ </li>
887
+ <li id="fn:2" role="doc-endnote">
888
+ <p>Footnote definition two <a href="#fnref:2" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
889
+ </li>
890
+ <li id="fn:3" role="doc-endnote">
891
+ <p>Footnote definition two <a href="#fnref:3" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
892
+ </li>
893
+ </ol>
894
+ </div>
849
895
  )
850
896
  end
851
897
 
@@ -888,101 +934,83 @@ Teston
888
934
  [^12]: Footnote definition 12
889
935
  " do
890
936
  assert_html_output %(
891
- <ol class="legislative-list">
892
- <li>1. Item 1<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">[footnote 1]</a></sup>
937
+ <div class="legislative-list-wrapper">
938
+ <ol class="legislative-list">
939
+ <li>1. Item 1<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">[footnote 1]</a></sup>
893
940
  </li>
894
- <li>2. Item 2<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">[footnote 2]</a></sup>
941
+ <li>2. Item 2<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">[footnote 2]</a></sup>
895
942
  </li>
896
- <li>3. Item 3<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">[footnote 3]</a></sup>
943
+ <li>3. Item 3<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">[footnote 3]</a></sup>
897
944
  </li>
898
- </ol>
945
+ </ol>
946
+ </div>
899
947
 
900
948
  <p>This is a paragraph with a footnote<sup id="fnref:4" role="doc-noteref"><a href="#fn:4" class="footnote" rel="footnote">[footnote 4]</a></sup>.</p>
901
949
 
902
- <ol class="legislative-list">
903
- <li>1. Item 1<sup id="fnref:5" role="doc-noteref"><a href="#fn:5" class="footnote" rel="footnote">[footnote 5]</a></sup>
950
+ <div class="legislative-list-wrapper">
951
+ <ol class="legislative-list">
952
+ <li>1. Item 1<sup id="fnref:5" role="doc-noteref"><a href="#fn:5" class="footnote" rel="footnote">[footnote 5]</a></sup>
904
953
  </li>
905
- <li>2. Item 2<sup id="fnref:6" role="doc-noteref"><a href="#fn:6" class="footnote" rel="footnote">[footnote 6]</a></sup>
954
+ <li>2. Item 2<sup id="fnref:6" role="doc-noteref"><a href="#fn:6" class="footnote" rel="footnote">[footnote 6]</a></sup>
906
955
  </li>
907
- <li>3. Item 3<sup id="fnref:7" role="doc-noteref"><a href="#fn:7" class="footnote" rel="footnote">[footnote 7]</a></sup>
956
+ <li>3. Item 3<sup id="fnref:7" role="doc-noteref"><a href="#fn:7" class="footnote" rel="footnote">[footnote 7]</a></sup>
908
957
  </li>
909
- </ol>
958
+ </ol>
959
+ </div>
910
960
 
911
961
  <p>This is a paragraph with a footnote<sup id="fnref:8" role="doc-noteref"><a href="#fn:8" class="footnote" rel="footnote">[footnote 8]</a></sup>.</p>
912
962
 
913
- <ol class="legislative-list">
914
- <li>1. Item 1<sup id="fnref:9" role="doc-noteref"><a href="#fn:9" class="footnote" rel="footnote">[footnote 9]</a></sup>
963
+ <div class="legislative-list-wrapper">
964
+ <ol class="legislative-list">
965
+ <li>1. Item 1<sup id="fnref:9" role="doc-noteref"><a href="#fn:9" class="footnote" rel="footnote">[footnote 9]</a></sup>
915
966
  </li>
916
- <li>2. Item 2<sup id="fnref:10" role="doc-noteref"><a href="#fn:10" class="footnote" rel="footnote">[footnote 10]</a></sup>
967
+ <li>2. Item 2<sup id="fnref:10" role="doc-noteref"><a href="#fn:10" class="footnote" rel="footnote">[footnote 10]</a></sup>
917
968
  </li>
918
- <li>3. Item 3<sup id="fnref:11" role="doc-noteref"><a href="#fn:11" class="footnote" rel="footnote">[footnote 11]</a></sup>
969
+ <li>3. Item 3<sup id="fnref:11" role="doc-noteref"><a href="#fn:11" class="footnote" rel="footnote">[footnote 11]</a></sup>
919
970
  </li>
920
- </ol>
971
+ </ol>
972
+ </div>
921
973
 
922
974
  <p>This is a paragraph with a footnote<sup id="fnref:12" role="doc-noteref"><a href="#fn:12" class="footnote" rel="footnote">[footnote 12]</a></sup>.</p>
923
975
 
924
976
  <div class="footnotes" role="doc-endnotes">
925
977
  <ol>
926
978
  <li id="fn:1" role="doc-endnote">
927
- <p>
928
- Footnote definition 1<a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
929
- </p>
930
- </li>
931
- <li id="fn:2" role="doc-endnote">
932
- <p>
933
- Footnote definition 2<a href="#fnref:2" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
934
- </p>
935
- </li>
936
- <li id="fn:3" role="doc-endnote">
937
- <p>
938
- Footnote definition 3<a href="#fnref:3" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
939
- </p>
940
- </li>
941
- <li id="fn:4" role="doc-endnote">
942
- <p>
943
- Footnote definition 4<a href="#fnref:4" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
944
- </p>
945
- </li>
946
- <li id="fn:5" role="doc-endnote">
947
- <p>
948
- Footnote definition 5<a href="#fnref:5" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
949
- </p>
950
- </li>
951
- <li id="fn:6" role="doc-endnote">
952
- <p>
953
- Footnote definition 6<a href="#fnref:6" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
954
- </p>
955
- </li>
956
- <li id="fn:7" role="doc-endnote">
957
- <p>
958
- Footnote definition 7<a href="#fnref:7" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
959
- </p>
960
- </li>
961
- <li id="fn:8" role="doc-endnote">
962
- <p>
963
- Footnote definition 8<a href="#fnref:8" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
964
- </p>
965
- </li>
966
- <li id="fn:9" role="doc-endnote">
967
- <p>
968
- Footnote definition 9<a href="#fnref:9" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
969
- </p>
970
- </li>
971
- <li id="fn:10" role="doc-endnote">
972
- <p>
973
- Footnote definition 10<a href="#fnref:10" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
974
- </p>
975
- </li>
976
- <li id="fn:11" role="doc-endnote">
977
- <p>
978
- Footnote definition 11<a href="#fnref:11" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
979
- </p>
980
- </li>
981
- <li id="fn:12" role="doc-endnote">
982
- <p>
983
- Footnote definition 12<a href="#fnref:12" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
984
- </p>
985
- </li>
979
+ <p>Footnote definition 1 <a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
980
+ </li>
981
+ <li id="fn:2" role="doc-endnote">
982
+ <p>Footnote definition 2 <a href="#fnref:2" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
983
+ </li>
984
+ <li id="fn:3" role="doc-endnote">
985
+ <p>Footnote definition <a href="#fnref:3" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
986
+ </li>
987
+ <li id="fn:4" role="doc-endnote">
988
+ <p>Footnote definition 4 <a href="#fnref:4" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
989
+ </li>
990
+ <li id="fn:5" role="doc-endnote">
991
+ <p>Footnote definition 5 <a href="#fnref:5" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
992
+ </li>
993
+ <li id="fn:6" role="doc-endnote">
994
+ <p>Footnote definition 6 <a href="#fnref:6" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
995
+ </li>
996
+ <li id="fn:7" role="doc-endnote">
997
+ <p>Footnote definition 7 <a href="#fnref:7" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
998
+ </li>
999
+ <li id="fn:8" role="doc-endnote">
1000
+ <p>Footnote definition <a href="#fnref:8" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
1001
+ </li>
1002
+ <li id="fn:9" role="doc-endnote">
1003
+ <p>Footnote definition 9 <a href="#fnref:9" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
1004
+ </li>
1005
+ <li id="fn:10" role="doc-endnote">
1006
+ <p>Footnote definition 10 <a href="#fnref:10" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
1007
+ </li>
1008
+ <li id="fn:11" role="doc-endnote">
1009
+ <p>Footnote definition 11 <a href="#fnref:11" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
1010
+ </li>
1011
+ <li id="fn:12" role="doc-endnote">
1012
+ <p>Footnote definition 12 <a href="#fnref:12" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
1013
+ </li>
986
1014
  </ol>
987
1015
  </div>
988
1016
  )
@@ -1001,29 +1029,27 @@ Teston
1001
1029
  [^2]: Footnote definition two
1002
1030
  " do
1003
1031
  assert_html_output %(
1032
+ <div class="legislative-list-wrapper">
1004
1033
  <ol class="legislative-list">
1005
1034
  <li>1. Item 1<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">[footnote 1]</a></sup> with a <a href="http://www.gov.uk">link</a>
1006
- </li>
1035
+ </li>
1007
1036
  <li>2. Item 2</li>
1008
1037
  <li>3. Item 3</li>
1009
1038
  </ol>
1039
+ </div>
1010
1040
 
1011
- <p>This is a paragraph with a footnote<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">[footnote 2]</a></sup></p>
1041
+ <p>This is a paragraph with a footnote<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">[footnote 2]</a></sup></p>
1012
1042
 
1013
- <div class="footnotes" role="doc-endnotes">
1014
- <ol>
1015
- <li id="fn:1" role="doc-endnote">
1016
- <p>
1017
- Footnote definition one<a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
1018
- </p>
1019
- </li>
1020
- <li id="fn:2" role="doc-endnote">
1021
- <p>
1022
- Footnote definition two<a href="#fnref:2" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
1023
- </p>
1024
- </li>
1025
- </ol>
1026
- </div>
1043
+ <div class="footnotes" role="doc-endnotes">
1044
+ <ol>
1045
+ <li id="fn:1" role="doc-endnote">
1046
+ <p>Footnote definition one <a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
1047
+ </li>
1048
+ <li id="fn:2" role="doc-endnote">
1049
+ <p>Footnote definition two <a href="#fnref:2" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
1050
+ </li>
1051
+ </ol>
1052
+ </div>
1027
1053
  )
1028
1054
  end
1029
1055
 
@@ -1038,28 +1064,26 @@ Teston
1038
1064
  [^2]: Footnote definition two with an external [link](http://www.google.com)
1039
1065
  " do
1040
1066
  assert_html_output %(
1067
+ <div class="legislative-list-wrapper">
1041
1068
  <ol class="legislative-list">
1042
1069
  <li>1. Item 1<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">[footnote 1]</a></sup> with a <a href="http://www.gov.uk">link</a>
1043
- </li>
1070
+ </li>
1044
1071
  <li>2. Item 2</li>
1045
1072
  <li>3. Item 3<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">[footnote 2]</a></sup>
1046
- </li>
1073
+ </li>
1047
1074
  </ol>
1075
+ </div>
1048
1076
 
1049
- <div class="footnotes" role="doc-endnotes">
1050
- <ol>
1051
- <li id="fn:1" role="doc-endnote">
1052
- <p>
1053
- Footnote definition one with a <a href="http://www.gov.uk">link</a> included<a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
1054
- </p>
1055
- </li>
1056
- <li id="fn:2" role="doc-endnote">
1057
- <p>
1058
- Footnote definition two with an external <a rel="external" href="http://www.google.com">link</a><a href="#fnref:2" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
1059
- </p>
1060
- </li>
1061
- </ol>
1062
- </div>
1077
+ <div class="footnotes" role="doc-endnotes">
1078
+ <ol>
1079
+ <li id="fn:1" role="doc-endnote">
1080
+ <p>Footnote definition one with a <a href="http://www.gov.uk">link</a> included <a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
1081
+ </li>
1082
+ <li id="fn:2" role="doc-endnote">
1083
+ <p>Footnote definition two with an external <a rel="external" href="http://www.google.com">link</a> <a href="#fnref:2" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
1084
+ </li>
1085
+ </ol>
1086
+ </div>
1063
1087
  )
1064
1088
  end
1065
1089
 
@@ -1070,17 +1094,17 @@ Teston
1070
1094
  [^1]: footnote text
1071
1095
  " do
1072
1096
  assert_html_output %(
1073
- <p>1. some text<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">[footnote 1]</a></sup>:</p>
1074
-
1075
- <div class="footnotes" role="doc-endnotes">
1076
- <ol>
1077
- <li id="fn:1" role="doc-endnote">
1078
- <p>
1079
- footnote text<a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
1080
- </p>
1081
- </li>
1082
- </ol>
1083
- </div>
1097
+ <div class="legislative-list-wrapper">
1098
+ <p>1. some text<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">[footnote 1]</a></sup>:</p>
1099
+ </div>
1100
+
1101
+ <div class="footnotes" role="doc-endnotes">
1102
+ <ol>
1103
+ <li id="fn:1" role="doc-endnote">
1104
+ <p>footnote text <a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
1105
+ </li>
1106
+ </ol>
1107
+ </div>
1084
1108
  )
1085
1109
  end
1086
1110
 
@@ -1091,15 +1115,15 @@ Teston
1091
1115
  [^1]: footnote text
1092
1116
  " do
1093
1117
  assert_html_output %(
1094
- <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>
1118
+ <div class="legislative-list-wrapper">
1119
+ <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>
1120
+ </div>
1095
1121
 
1096
1122
  <div class="footnotes" role="doc-endnotes">
1097
1123
  <ol>
1098
1124
  <li id="fn:1" role="doc-endnote">
1099
- <p>
1100
- footnote text<a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
1101
- </p>
1102
- </li>
1125
+ <p>footnote text <a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
1126
+ </li>
1103
1127
  </ol>
1104
1128
  </div>
1105
1129
  )
@@ -1120,32 +1144,28 @@ Teston
1120
1144
  *[class]: Testing HTML matching
1121
1145
  " do
1122
1146
  assert_html_output %(
1123
- <ol class="legislative-list">
1124
- <li>1. Item 1<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">[footnote 1]</a></sup> with an <abbr title="This is the acronym explanation">ACRONYM</abbr>
1147
+ <div class="legislative-list-wrapper">
1148
+ <ol class="legislative-list">
1149
+ <li>1. Item 1<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">[footnote 1]</a></sup> with an <abbr title="This is the acronym explanation">ACRONYM</abbr>
1125
1150
  </li>
1126
- <li>2. Item 2<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">[footnote 2]</a></sup>
1151
+ <li>2. Item 2<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">[footnote 2]</a></sup>
1127
1152
  </li>
1128
- <li>3. Item 3<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">[footnote 3]</a></sup>
1153
+ <li>3. Item 3<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">[footnote 3]</a></sup>
1129
1154
  </li>
1130
- </ol>
1155
+ </ol>
1156
+ </div>
1131
1157
 
1132
1158
  <div class="footnotes" role="doc-endnotes">
1133
1159
  <ol>
1134
1160
  <li id="fn:1" role="doc-endnote">
1135
- <p>
1136
- Footnote definition one<a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
1137
- </p>
1138
- </li>
1139
- <li id="fn:2" role="doc-endnote">
1140
- <p>
1141
- Footnote definition two with an <abbr title="This is the acronym explanation">ACRONYM</abbr><a href="#fnref:2" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
1142
- </p>
1143
- </li>
1144
- <li id="fn:3" role="doc-endnote">
1145
- <p>
1146
- Footnote definition three with an acronym that matches an HTML tag <abbr title="Testing HTML matching">class</abbr><a href="#fnref:3" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
1147
- </p>
1148
- </li>
1161
+ <p>Footnote definition one <a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
1162
+ </li>
1163
+ <li id="fn:2" role="doc-endnote">
1164
+ <p>Footnote definition two with an <abbr title="This is the acronym explanation">ACRONYM</abbr> <a href="#fnref:2" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
1165
+ </li>
1166
+ <li id="fn:3" role="doc-endnote">
1167
+ <p>Footnote definition three with an acronym that matches an HTML tag <abbr title="Testing HTML matching">class</abbr> <a href="#fnref:3" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
1168
+ </li>
1149
1169
  </ol>
1150
1170
  </div>
1151
1171
  )
@@ -1172,9 +1192,11 @@ Teston
1172
1192
  assert_html_output %(
1173
1193
  <p>The quick brown fox</p>
1174
1194
 
1175
- <ol class="legislative-list">
1176
- <li>1. jumps over the lazy dog</li>
1177
- </ol>
1195
+ <div class="legislative-list-wrapper">
1196
+ <ol class="legislative-list">
1197
+ <li>1. jumps over the lazy dog</li>
1198
+ </ol>
1199
+ </div>
1178
1200
  )
1179
1201
  end
1180
1202
 
@@ -1182,9 +1204,67 @@ Teston
1182
1204
  assert_html_output %(
1183
1205
  <p>This bit of text</p>
1184
1206
 
1185
- <ol class="legislative-list">
1186
- <li>1. should be turned into a list</li>
1187
- </ol>
1207
+ <div class="legislative-list-wrapper">
1208
+ <ol class="legislative-list">
1209
+ <li>1. should be turned into a list</li>
1210
+ </ol>
1211
+ </div>
1212
+ )
1213
+ end
1214
+
1215
+ test_given_govspeak "
1216
+ $LegislativeList
1217
+ Welcome to the GOV.UK website
1218
+ $EndLegislativeList
1219
+
1220
+ *[GOV.UK]: The official UK government website
1221
+ *[website]: A collection of web pages, such as GOV.UK
1222
+ " do
1223
+ assert_html_output %(
1224
+ <div class="legislative-list-wrapper">
1225
+ <p>Welcome to the <abbr title="The official UK government website">GOV.UK</abbr> <abbr title="A collection of web pages, such as GOV.UK">website</abbr></p>
1226
+ </div>
1227
+ )
1228
+ end
1229
+
1230
+ test_given_govspeak "
1231
+ $LegislativeList
1232
+ Please email <developer@digital.cabinet-office.GOV.UK>
1233
+ $EndLegislativeList
1234
+
1235
+ *[GOV.UK]: The official UK government website
1236
+ " do
1237
+ assert_html_output %(
1238
+ <div class="legislative-list-wrapper">
1239
+ <p>Please email <a href="mailto:developer@digital.cabinet-office.GOV.UK">developer@digital.cabinet-office.<abbr title="The official UK government website">GOV.UK</abbr></a></p>
1240
+ </div>
1241
+ )
1242
+ end
1243
+
1244
+ test_given_govspeak "
1245
+ $LegislativeList
1246
+ Welcome to the GOV.UK[^1]
1247
+ $EndLegislativeList
1248
+
1249
+ [^1]: GOV.UK is the official UK government website
1250
+
1251
+ *[GOV.UK]: The official UK government website
1252
+ *[website]: A collection of web pages, such as GOV.UK
1253
+
1254
+ *[GOV.UK]: The official UK government website
1255
+ " do
1256
+ assert_html_output %(
1257
+ <div class="legislative-list-wrapper">
1258
+ <p>Welcome to the <abbr title="The official UK government website">GOV.UK</abbr><sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">[footnote 1]</a></sup></p>
1259
+ </div>
1260
+
1261
+ <div class="footnotes" role="doc-endnotes">
1262
+ <ol>
1263
+ <li id="fn:1" role="doc-endnote">
1264
+ <p><abbr title="The official UK government website">GOV.UK</abbr> is the official UK government <abbr title="A collection of web pages, such as GOV.UK">website</abbr> <a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a></p>
1265
+ </li>
1266
+ </ol>
1267
+ </div>
1188
1268
  )
1189
1269
  end
1190
1270
 
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: 8.2.0
4
+ version: 8.3.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-08-23 00:00:00.000000000 Z
11
+ date: 2023-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview
@@ -327,7 +327,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
327
327
  - !ruby/object:Gem::Version
328
328
  version: '0'
329
329
  requirements: []
330
- rubygems_version: 3.4.19
330
+ rubygems_version: 3.4.20
331
331
  signing_key:
332
332
  specification_version: 4
333
333
  summary: Markup language for single domain