govspeak 6.7.4 → 6.7.8
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 +4 -4
- data/CHANGELOG.md +16 -0
- data/README.md +1 -2
- data/lib/govspeak/html_sanitizer.rb +1 -1
- data/lib/govspeak/version.rb +1 -1
- data/lib/govspeak.rb +26 -9
- data/test/govspeak_button_test.rb +8 -8
- data/test/govspeak_test.rb +187 -37
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 709c3fbb62a1b1e54cae82fd1539785acaaf3586c0a094b402880bf4608df065
|
4
|
+
data.tar.gz: 1300878c1001b40ade71a2e5446ea1f62ea8cd1e5d764e97ef9450da6124d74a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dcf825ebf9e77452c200104606486d9c0ad26c5f00855ce69c3c127d5e6cd7357d804fb3df77b3362fe797e814ed2cffe3823c2a835d1784e89b25c459abfd12
|
7
|
+
data.tar.gz: 607b7b974bf443801e83ec7afaab1449e00a50d63134dc90b912f62a5a5c0635ea2e54afece268dbe6c4471cc232c4f12033bef6f8961aee1816a4cd6f1fcc25
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
## 6.7.8
|
2
|
+
|
3
|
+
* Fixes bug which reverts acronyms from being converted into abbr tags [#229](https://github.com/alphagov/govspeak/pull/229)
|
4
|
+
|
5
|
+
## 6.7.7
|
6
|
+
|
7
|
+
* Fix broken HTML in CTA extension. [#226](https://github.com/alphagov/govspeak/pull/226)
|
8
|
+
|
9
|
+
## 6.7.6
|
10
|
+
|
11
|
+
* Add draggable false to button markup and validation [#224](https://github.com/alphagov/govspeak/pull/224)
|
12
|
+
|
13
|
+
## 6.7.5
|
14
|
+
|
15
|
+
* Fix footnotes in call-to-action boxes [222](https://github.com/alphagov/govspeak/pull/222)
|
16
|
+
|
1
17
|
## 6.7.4
|
2
18
|
|
3
19
|
* Remove Nokogumbo dependency to [resolve warning](https://github.com/sparklemotion/nokogiri/issues/2205) [220](https://github.com/alphagov/govspeak/pull/220)
|
data/README.md
CHANGED
@@ -28,8 +28,7 @@ Once govspeak has been updated and version incremented then:
|
|
28
28
|
|
29
29
|
Also, consider if:
|
30
30
|
- [whitehall](https://github.com/alphagov/whitehall) needs updating (as custom govspeak changes are present)
|
31
|
-
- [
|
32
|
-
- [govpspeak-preview](https://github.com/alphagov/govspeak-preview) is worth updating
|
31
|
+
- [govpspeak-preview](https://github.com/alphagov/govspeak-preview) needs updating
|
33
32
|
|
34
33
|
Any pages that use govspeak to generate Content will need to *republished* in order for the new changes to be reflected.
|
35
34
|
|
@@ -55,7 +55,7 @@ class Govspeak::HtmlSanitizer
|
|
55
55
|
elements: Sanitize::Config::RELAXED[:elements] + %w[govspeak-embed-attachment govspeak-embed-attachment-link svg path].concat(allowed_elements),
|
56
56
|
attributes: {
|
57
57
|
:all => Sanitize::Config::RELAXED[:attributes][:all] + %w[role aria-label],
|
58
|
-
"a" => Sanitize::Config::RELAXED[:attributes]["a"] + [:data],
|
58
|
+
"a" => Sanitize::Config::RELAXED[:attributes]["a"] + [:data] + %w[draggable],
|
59
59
|
"svg" => Sanitize::Config::RELAXED[:attributes][:all] + %w[xmlns width height viewbox focusable],
|
60
60
|
"path" => Sanitize::Config::RELAXED[:attributes][:all] + %w[fill d],
|
61
61
|
"div" => [:data],
|
data/lib/govspeak/version.rb
CHANGED
data/lib/govspeak.rb
CHANGED
@@ -122,7 +122,7 @@ module Govspeak
|
|
122
122
|
source = Govspeak::BlockquoteExtraQuoteRemover.remove(source)
|
123
123
|
source = remove_forbidden_characters(source)
|
124
124
|
|
125
|
-
|
125
|
+
footnote_definitions(source)
|
126
126
|
|
127
127
|
self.class.extensions.each do |_, regexp, block|
|
128
128
|
source.gsub!(regexp) do
|
@@ -132,12 +132,12 @@ module Govspeak
|
|
132
132
|
source
|
133
133
|
end
|
134
134
|
|
135
|
-
def
|
135
|
+
def footnote_definitions(source)
|
136
136
|
is_legislative_list = source.scan(/\$LegislativeList.*?\[\^\d\]*.*?\$EndLegislativeList/m).size.positive?
|
137
|
+
is_cta = source.scan(/\$CTA.*?\[\^\d\]*.*?\$CTA/m).size.positive?
|
137
138
|
footnotes = source.scan(/\[\^(\d+)\]:(.*)/)
|
138
139
|
@acronyms = source.scan(/(?<=\*)\[(.*)\]:(.*)/)
|
139
|
-
|
140
|
-
if is_legislative_list && footnotes.size.positive?
|
140
|
+
if (is_legislative_list || is_cta) && footnotes.size.positive?
|
141
141
|
list_items = footnotes.map do |footnote|
|
142
142
|
number = footnote[0]
|
143
143
|
text = footnote[1].strip
|
@@ -224,7 +224,7 @@ module Govspeak
|
|
224
224
|
text = text.strip
|
225
225
|
href = href.strip
|
226
226
|
|
227
|
-
%(\n<a role="button" class="#{button_classes}" href="#{href}" #{data_attribute}>#{text}</a>\n)
|
227
|
+
%(\n<a role="button" draggable="false" class="#{button_classes}" href="#{href}" #{data_attribute}>#{text}</a>\n)
|
228
228
|
end
|
229
229
|
|
230
230
|
extension("highlight-answer") do |body|
|
@@ -321,10 +321,26 @@ module Govspeak
|
|
321
321
|
lines.join
|
322
322
|
end
|
323
323
|
|
324
|
+
extension("call-to-action", surrounded_by("$CTA")) do |body|
|
325
|
+
doc = Kramdown::Document.new(preprocess(body.strip), @options).to_html
|
326
|
+
doc = %(\n<div class="call-to-action">\n#{doc}</div>\n)
|
327
|
+
footnotes = body.scan(/\[\^(\d+)\]/).flatten
|
328
|
+
|
329
|
+
footnotes.each do |footnote|
|
330
|
+
html = "<sup id=\"fnref:#{footnote}\" role=\"doc-noteref\">" \
|
331
|
+
"<a href=\"#fn:#{footnote}\" class=\"footnote\" rel=\"footnote\">" \
|
332
|
+
"[footnote #{footnote}]</a></sup>"
|
333
|
+
|
334
|
+
doc.sub!(/(\[\^#{footnote}\])/, html)
|
335
|
+
end
|
336
|
+
|
337
|
+
add_acronym_alt_text(doc) if @acronyms.size.positive?
|
338
|
+
doc
|
339
|
+
end
|
340
|
+
|
324
341
|
# More specific tags must be defined first. Those defined earlier have a
|
325
342
|
# higher precedence for being matched. For example $CTA must be defined
|
326
343
|
# before $C otherwise the first ($C)TA fill be matched to a contact tag.
|
327
|
-
wrap_with_div("call-to-action", "$CTA", Govspeak::Document)
|
328
344
|
wrap_with_div("summary", "$!")
|
329
345
|
wrap_with_div("form-download", "$D")
|
330
346
|
wrap_with_div("contact", "$C")
|
@@ -448,9 +464,10 @@ module Govspeak
|
|
448
464
|
end
|
449
465
|
|
450
466
|
def add_acronym_alt_text(html)
|
451
|
-
|
452
|
-
|
453
|
-
|
467
|
+
# FIXME: this code is buggy and replaces abbreviations in HTML tags - removing the functionality for now
|
468
|
+
# @acronyms.each do |acronym|
|
469
|
+
# html.gsub!(acronym[0], "<abbr title=\"#{acronym[1].strip}\">#{acronym[0]}</abbr>")
|
470
|
+
# end
|
454
471
|
end
|
455
472
|
end
|
456
473
|
end
|
@@ -47,7 +47,7 @@ class GovspeakTest < Minitest::Test
|
|
47
47
|
assert_html_output %(
|
48
48
|
<p>Text before the button with line breaks</p>
|
49
49
|
|
50
|
-
<p><a class="gem-c-button govuk-button" role="button" href="http://www.gov.uk">Start Now</a></p>
|
50
|
+
<p><a class="gem-c-button govuk-button" role="button" draggable="false" href="http://www.gov.uk">Start Now</a></p>
|
51
51
|
|
52
52
|
<p>test after the button</p>
|
53
53
|
)
|
@@ -65,21 +65,21 @@ class GovspeakTest < Minitest::Test
|
|
65
65
|
# Make sure button renders when typical linebreaks are before it, seen in publishing applications
|
66
66
|
test_given_govspeak "{button}[Line breaks](https://gov.uk/random){/button}\r\n\r\n{button}[Continue](https://gov.uk/random){/button}\r\n\r\n{button}[Continue](https://gov.uk/random){/button}" do
|
67
67
|
assert_html_output %(
|
68
|
-
<p><a class="gem-c-button govuk-button" role="button" href="https://gov.uk/random">Line breaks</a></p>
|
68
|
+
<p><a class="gem-c-button govuk-button" role="button" draggable="false" href="https://gov.uk/random">Line breaks</a></p>
|
69
69
|
|
70
|
-
<p><a class="gem-c-button govuk-button" role="button" href="https://gov.uk/random">Continue</a></p>
|
70
|
+
<p><a class="gem-c-button govuk-button" role="button" draggable="false" href="https://gov.uk/random">Continue</a></p>
|
71
71
|
|
72
|
-
<p><a class="gem-c-button govuk-button" role="button" href="https://gov.uk/random">Continue</a></p>
|
72
|
+
<p><a class="gem-c-button govuk-button" role="button" draggable="false" href="https://gov.uk/random">Continue</a></p>
|
73
73
|
)
|
74
74
|
end
|
75
75
|
|
76
76
|
test_given_govspeak "{button}[More line breaks](https://gov.uk/random){/button}\n\n{button}[Continue](https://gov.uk/random){/button}\n\n{button}[Continue](https://gov.uk/random){/button}" do
|
77
77
|
assert_html_output %(
|
78
|
-
<p><a class="gem-c-button govuk-button" role="button" href="https://gov.uk/random">More line breaks</a></p>
|
78
|
+
<p><a class="gem-c-button govuk-button" role="button" draggable="false" href="https://gov.uk/random">More line breaks</a></p>
|
79
79
|
|
80
|
-
<p><a class="gem-c-button govuk-button" role="button" href="https://gov.uk/random">Continue</a></p>
|
80
|
+
<p><a class="gem-c-button govuk-button" role="button" draggable="false" href="https://gov.uk/random">Continue</a></p>
|
81
81
|
|
82
|
-
<p><a class="gem-c-button govuk-button" role="button" href="https://gov.uk/random">Continue</a></p>
|
82
|
+
<p><a class="gem-c-button govuk-button" role="button" draggable="false" href="https://gov.uk/random">Continue</a></p>
|
83
83
|
)
|
84
84
|
end
|
85
85
|
|
@@ -104,7 +104,7 @@ class GovspeakTest < Minitest::Test
|
|
104
104
|
<p>lorem lorem lorem
|
105
105
|
lorem lorem lorem</p>
|
106
106
|
|
107
|
-
<p><a class="gem-c-button govuk-button" role="button" href="https://gov.uk/random">Random page</a></p>
|
107
|
+
<p><a class="gem-c-button govuk-button" role="button" draggable="false" href="https://gov.uk/random">Random page</a></p>
|
108
108
|
|
109
109
|
<p>lorem lorem lorem
|
110
110
|
lorem lorem lorem</p>
|
data/test/govspeak_test.rb
CHANGED
@@ -440,6 +440,60 @@ Teston
|
|
440
440
|
</div>)
|
441
441
|
end
|
442
442
|
|
443
|
+
test_given_govspeak "
|
444
|
+
$CTA
|
445
|
+
|
446
|
+
This is a test:
|
447
|
+
|
448
|
+
s1. This is number 1.
|
449
|
+
s2. This is number 2.
|
450
|
+
s3. This is number 3.
|
451
|
+
s4. This is number 4.
|
452
|
+
|
453
|
+
$CTA" do
|
454
|
+
assert_html_output %(
|
455
|
+
<div class="call-to-action">
|
456
|
+
<p>This is a test:</p>
|
457
|
+
|
458
|
+
<ol class="steps">
|
459
|
+
<li>
|
460
|
+
<p>This is number 1.</p>
|
461
|
+
</li>
|
462
|
+
<li>
|
463
|
+
<p>This is number 2.</p>
|
464
|
+
</li>
|
465
|
+
<li>
|
466
|
+
<p>This is number 3.</p>
|
467
|
+
</li>
|
468
|
+
<li>
|
469
|
+
<p>This is number 4.</p>
|
470
|
+
</li>
|
471
|
+
</ol>
|
472
|
+
</div>
|
473
|
+
)
|
474
|
+
end
|
475
|
+
|
476
|
+
test_given_govspeak "
|
477
|
+
$CTA
|
478
|
+
[external link](http://www.external.com) some text
|
479
|
+
$CTA
|
480
|
+
" do
|
481
|
+
assert_html_output %(
|
482
|
+
<div class="call-to-action">
|
483
|
+
<p><a rel="external" href="http://www.external.com">external link</a> some text</p>
|
484
|
+
</div>)
|
485
|
+
end
|
486
|
+
|
487
|
+
test_given_govspeak "
|
488
|
+
$CTA
|
489
|
+
[internal link](http://www.not-external.com) some text
|
490
|
+
$CTA", document_domains: %w[www.not-external.com] do
|
491
|
+
assert_html_output %(
|
492
|
+
<div class="call-to-action">
|
493
|
+
<p><a href="http://www.not-external.com">internal link</a> some text</p>
|
494
|
+
</div>)
|
495
|
+
end
|
496
|
+
|
443
497
|
test_given_govspeak "
|
444
498
|
$CTA
|
445
499
|
Click here to start the tool
|
@@ -473,6 +527,101 @@ Teston
|
|
473
527
|
</div>)
|
474
528
|
end
|
475
529
|
|
530
|
+
test_given_govspeak "
|
531
|
+
$CTA
|
532
|
+
Click here to start the tool[^1]
|
533
|
+
$CTA
|
534
|
+
[^1]: Footnote definition one
|
535
|
+
" do
|
536
|
+
assert_html_output %(
|
537
|
+
<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
|
+
</div>
|
540
|
+
<div class="footnotes" role="doc-endnotes">
|
541
|
+
<ol>
|
542
|
+
<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>
|
547
|
+
</ol>
|
548
|
+
</div>
|
549
|
+
)
|
550
|
+
end
|
551
|
+
|
552
|
+
test_given_govspeak "
|
553
|
+
$CTA
|
554
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
555
|
+
Fusce felis ante[^1], lobortis non quam sit amet, tempus interdum justo.
|
556
|
+
$CTA
|
557
|
+
$CTA
|
558
|
+
Pellentesque quam enim, egestas sit amet congue sit amet[^2], ultrices vitae arcu.
|
559
|
+
Fringilla, metus dui scelerisque est.
|
560
|
+
$CTA
|
561
|
+
[^1]: Footnote definition one
|
562
|
+
[^2]: Footnote definition two
|
563
|
+
" do
|
564
|
+
assert_html_output %(
|
565
|
+
<div class="call-to-action">
|
566
|
+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
567
|
+
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
|
+
</div>
|
569
|
+
|
570
|
+
<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.
|
572
|
+
Fringilla, metus dui scelerisque est.</p>
|
573
|
+
</div>
|
574
|
+
<div class="footnotes" role="doc-endnotes">
|
575
|
+
<ol>
|
576
|
+
<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>
|
586
|
+
</ol>
|
587
|
+
</div>
|
588
|
+
)
|
589
|
+
end
|
590
|
+
|
591
|
+
test_given_govspeak "
|
592
|
+
$CTA
|
593
|
+
Click here to start the tool[^1]
|
594
|
+
$CTA
|
595
|
+
|
596
|
+
Lorem ipsum dolor sit amet[^2]
|
597
|
+
|
598
|
+
[^1]: Footnote definition 1
|
599
|
+
[^2]: Footnote definition 2
|
600
|
+
" do
|
601
|
+
assert_html_output %(
|
602
|
+
<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>
|
604
|
+
</div>
|
605
|
+
|
606
|
+
<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>
|
607
|
+
|
608
|
+
<div class="footnotes" role="doc-endnotes">
|
609
|
+
<ol>
|
610
|
+
<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>
|
620
|
+
</ol>
|
621
|
+
</div>
|
622
|
+
)
|
623
|
+
end
|
624
|
+
|
476
625
|
test_given_govspeak "
|
477
626
|
1. rod
|
478
627
|
2. jane
|
@@ -899,43 +1048,44 @@ Teston
|
|
899
1048
|
)
|
900
1049
|
end
|
901
1050
|
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
|
908
|
-
|
909
|
-
|
910
|
-
|
911
|
-
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
|
930
|
-
|
931
|
-
|
932
|
-
|
933
|
-
|
934
|
-
|
935
|
-
|
936
|
-
|
937
|
-
|
938
|
-
|
1051
|
+
# FIXME: this code is buggy and replaces abbreviations in HTML tags - removing the functionality for now
|
1052
|
+
# test_given_govspeak "
|
1053
|
+
# $LegislativeList
|
1054
|
+
# * 1. Item 1[^1] with an ACRONYM
|
1055
|
+
# * 2. Item 2[^2]
|
1056
|
+
# * 3. Item 3
|
1057
|
+
# $EndLegislativeList
|
1058
|
+
#
|
1059
|
+
# [^1]: Footnote definition one
|
1060
|
+
# [^2]: Footnote definition two with an ACRONYM
|
1061
|
+
#
|
1062
|
+
# *[ACRONYM]: This is the acronym explanation
|
1063
|
+
# " do
|
1064
|
+
# assert_html_output %(
|
1065
|
+
# <ol class="legislative-list">
|
1066
|
+
# <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>
|
1067
|
+
# </li>
|
1068
|
+
# <li>2. Item 2<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">[footnote 2]</a></sup>
|
1069
|
+
# </li>
|
1070
|
+
# <li>3. Item 3</li>
|
1071
|
+
# </ol>
|
1072
|
+
#
|
1073
|
+
# <div class="footnotes" role="doc-endnotes">
|
1074
|
+
# <ol>
|
1075
|
+
# <li id="fn:1" role="doc-endnote">
|
1076
|
+
# <p>
|
1077
|
+
# Footnote definition one<a href="#fnref:1" class="reversefootnote" role="doc-backlink" aria-label="go to where this is referenced">↩</a>
|
1078
|
+
# </p>
|
1079
|
+
# </li>
|
1080
|
+
# <li id="fn:2" role="doc-endnote">
|
1081
|
+
# <p>
|
1082
|
+
# 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>
|
1083
|
+
# </p>
|
1084
|
+
# </li>
|
1085
|
+
# </ol>
|
1086
|
+
# </div>
|
1087
|
+
# )
|
1088
|
+
# end
|
939
1089
|
|
940
1090
|
test_given_govspeak "
|
941
1091
|
The quick brown
|
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.7.
|
4
|
+
version: 6.7.8
|
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:
|
11
|
+
date: 2022-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionview
|
@@ -196,14 +196,14 @@ dependencies:
|
|
196
196
|
requirements:
|
197
197
|
- - "~>"
|
198
198
|
- !ruby/object:Gem::Version
|
199
|
-
version: 4.
|
199
|
+
version: 4.2.0
|
200
200
|
type: :development
|
201
201
|
prerelease: false
|
202
202
|
version_requirements: !ruby/object:Gem::Requirement
|
203
203
|
requirements:
|
204
204
|
- - "~>"
|
205
205
|
- !ruby/object:Gem::Version
|
206
|
-
version: 4.
|
206
|
+
version: 4.2.0
|
207
207
|
- !ruby/object:Gem::Dependency
|
208
208
|
name: simplecov
|
209
209
|
requirement: !ruby/object:Gem::Requirement
|