metanorma-itu 1.0.10 → 1.0.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/asciidoctor/itu/cleanup.rb +72 -5
- data/lib/asciidoctor/itu/converter.rb +5 -2
- data/lib/asciidoctor/itu/i18n-en.yaml +5 -1
- data/lib/asciidoctor/itu/isodoc.rng +5 -0
- data/lib/asciidoctor/itu/validate.rb +79 -10
- data/lib/isodoc/itu/base_convert.rb +0 -6
- data/lib/isodoc/itu/html/html_itu_titlepage.html +2 -2
- data/lib/isodoc/itu/html/htmlstyle.scss +6 -0
- data/lib/isodoc/itu/html/itu.scss +4 -0
- data/lib/isodoc/itu/i18n-en.yaml +2 -0
- data/lib/isodoc/itu/metadata.rb +1 -1
- data/lib/isodoc/itu/ref.rb +12 -7
- data/lib/isodoc/itu/xref.rb +16 -5
- data/lib/metanorma/itu.rb +0 -3
- data/lib/metanorma/itu/version.rb +1 -1
- data/metanorma-itu.gemspec +0 -1
- metadata +2 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e0b6bcda9ee8aa042d7647e9b8865c7bac5a07943541e6278ac311ae35b7ecdb
|
4
|
+
data.tar.gz: 2c2916e7706336f89a13d65cd63022a0a2288a576957684856134f482ecfa7eb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3905f473b483696859238779600e0074eb3fb668cef4898ce288d62be053339426afee23d8c6e32e36c8a706dbe0be0f60c5626181c45f78cea30b2baa9e7a23
|
7
|
+
data.tar.gz: 21907c33e9ad329cf2852b10ccce61b9ca407c9fb0e01896a69c60d380d665df3366721cd155db14c48549b1b350c6f74922fe2213f5fdef6c21468a9ad2d586
|
@@ -6,6 +6,71 @@ module Asciidoctor
|
|
6
6
|
x.xpath("//*[@inline-header]").each do |h|
|
7
7
|
h.delete("inline-header")
|
8
8
|
end
|
9
|
+
insert_missing_sections(x) unless @no_insert_missing_sections
|
10
|
+
end
|
11
|
+
|
12
|
+
def table_cleanup(xmldoc)
|
13
|
+
super
|
14
|
+
xmldoc.xpath("//thead/tr[1]/th | //thead/tr[1]/td").each do |t|
|
15
|
+
text = t.at("./descendant::text()") or next
|
16
|
+
text.replace(text.text.titlecase)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def insert_missing_sections(x)
|
21
|
+
insert_scope(x)
|
22
|
+
insert_norm_ref(x)
|
23
|
+
insert_terms(x)
|
24
|
+
insert_symbols(x)
|
25
|
+
insert_conventions(x)
|
26
|
+
end
|
27
|
+
|
28
|
+
def insert_scope(x)
|
29
|
+
x.at("./*/sections") or
|
30
|
+
x.at("./*/preface | ./*/boilerplate | ./*/bibdata").next =
|
31
|
+
"<sections><sentinel/></sections>"
|
32
|
+
x.at("./*/sections/*") or x.at("./*/sections") << "<sentinel/>"
|
33
|
+
ins = x.at("//sections").children.first
|
34
|
+
unless x.at("//sections/clause/title[text() = 'Scope']")
|
35
|
+
ins.previous = "<clause><title>Scope</title><p>"\
|
36
|
+
"#{@labels['clause_empty']}</p></clause>"
|
37
|
+
end
|
38
|
+
x&.at("//sentinel")&.remove
|
39
|
+
end
|
40
|
+
|
41
|
+
def insert_norm_ref(x)
|
42
|
+
x.at("//bibliography") or x.at("./*/annex[last()] | ./*/sections").next =
|
43
|
+
"<bibliography><sentinel/></bibliography>"
|
44
|
+
ins = x.at("//bibliography").children.first
|
45
|
+
unless x.at("//bibliography/references/title[text() = 'References']")
|
46
|
+
ins.previous = "<references><title>References</title><p>"\
|
47
|
+
"#{@labels['clause_empty']}</p></references>"
|
48
|
+
end
|
49
|
+
x&.at("//sentinel")&.remove
|
50
|
+
end
|
51
|
+
|
52
|
+
def insert_terms(x)
|
53
|
+
ins = x.at("//sections/clause/title[text() = 'Scope']")
|
54
|
+
unless x.at("//sections/terms")
|
55
|
+
ins.next = "<terms><title>Definitions</title><p>"\
|
56
|
+
"#{@labels['clause_empty']}</p></terms>"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def insert_symbols(x)
|
61
|
+
ins = x.at("//terms")
|
62
|
+
unless x.at("//sections//definitions")
|
63
|
+
ins.next = "<definitions><title>Definitions</title><p>"\
|
64
|
+
"#{@labels['clause_empty']}</p></definitions>"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def insert_conventions(x)
|
69
|
+
ins = x.at("//sections//definitions")
|
70
|
+
unless x.at("//sections/clause/title[text() = 'Conventions']")
|
71
|
+
ins.next = "<clause><title>Conventions</title><p>"\
|
72
|
+
"#{@labels['clause_empty']}</p></clause>"
|
73
|
+
end
|
9
74
|
end
|
10
75
|
|
11
76
|
def cleanup(xmldoc)
|
@@ -19,7 +84,7 @@ module Asciidoctor
|
|
19
84
|
next unless n.text?
|
20
85
|
n.replace(HTMLEntities.new.encode(
|
21
86
|
n.text.gsub(/\u2019|\u2018|\u201a|\u201b/, "'").
|
22
|
-
|
87
|
+
gsub(/\u201c|\u201d|\u201e|\u201f/, '"'), :basic))
|
23
88
|
end
|
24
89
|
xmldoc
|
25
90
|
end
|
@@ -48,7 +113,8 @@ module Asciidoctor
|
|
48
113
|
|
49
114
|
def pub_class(bib)
|
50
115
|
return 1 if bib.at("#{PUBLISHER}[abbreviation = 'ITU']")
|
51
|
-
return 1 if bib.at("#{PUBLISHER}[name = 'International
|
116
|
+
return 1 if bib.at("#{PUBLISHER}[name = 'International "\
|
117
|
+
"Telecommunication Union']")
|
52
118
|
return 2 if bib.at("#{PUBLISHER}[abbreviation = 'ISO']")
|
53
119
|
return 2 if bib.at("#{PUBLISHER}[name = 'International Organization "\
|
54
120
|
"for Standardization']")
|
@@ -56,7 +122,8 @@ module Asciidoctor
|
|
56
122
|
return 3 if bib.at("#{PUBLISHER}[name = 'International "\
|
57
123
|
"Electrotechnical Commission']")
|
58
124
|
return 4 if bib.at("./docidentifier[@type][not(@type = 'DOI' or "\
|
59
|
-
"@type = 'metanorma' or @type = 'ISSN' or @type =
|
125
|
+
"@type = 'metanorma' or @type = 'ISSN' or @type = "\
|
126
|
+
"'ISBN')]")
|
60
127
|
5
|
61
128
|
end
|
62
129
|
|
@@ -73,8 +140,8 @@ module Asciidoctor
|
|
73
140
|
def sort_biblio_key(bib)
|
74
141
|
pubclass = pub_class(bib)
|
75
142
|
num = bib&.at("./docnumber")&.text
|
76
|
-
id = bib&.at("./docidentifier[not(@type = 'DOI' or "\
|
77
|
-
|
143
|
+
id = bib&.at("./docidentifier[not(@type = 'DOI' or @type = "\
|
144
|
+
"'metanorma' or @type = 'ISSN' or @type = 'ISBN')]")
|
78
145
|
metaid = bib&.at("./docidentifier[@type = 'metanorma']")&.text
|
79
146
|
abbrid = metaid unless /^\[\d+\]$/.match(metaid)
|
80
147
|
type = id['type'] if id
|
@@ -29,6 +29,8 @@ module Asciidoctor
|
|
29
29
|
def init(node)
|
30
30
|
super
|
31
31
|
@smartquotes = node.attr("smartquotes") == "true"
|
32
|
+
@no_insert_missing_sections = doctype(node) != "recommendation" ||
|
33
|
+
node.attr("legacy-do-not-insert-missing-sections")
|
32
34
|
end
|
33
35
|
|
34
36
|
def makexml(node)
|
@@ -63,6 +65,7 @@ module Asciidoctor
|
|
63
65
|
word_converter(node).convert filename unless node.attr("nodoc")
|
64
66
|
pdf_converter(node).convert filename unless node.attr("nodoc")
|
65
67
|
end
|
68
|
+
@log.write(@filename + ".err") unless @novalid
|
66
69
|
@files_to_delete.each { |f| FileUtils.rm f }
|
67
70
|
ret
|
68
71
|
end
|
@@ -146,11 +149,11 @@ module Asciidoctor
|
|
146
149
|
end
|
147
150
|
|
148
151
|
def html_extract_attributes(node)
|
149
|
-
super.merge(hierarchical_assets: node.attr("hierarchical-
|
152
|
+
super.merge(hierarchical_assets: node.attr("hierarchical-object-numbering"))
|
150
153
|
end
|
151
154
|
|
152
155
|
def doc_extract_attributes(node)
|
153
|
-
super.merge(hierarchical_assets: node.attr("hierarchical-
|
156
|
+
super.merge(hierarchical_assets: node.attr("hierarchical-object-numbering"))
|
154
157
|
end
|
155
158
|
|
156
159
|
def html_converter(node)
|
@@ -9,4 +9,8 @@ external_terms_boilerplate:
|
|
9
9
|
no_terms_boilerplate:
|
10
10
|
None.
|
11
11
|
symbols_boilerplate:
|
12
|
-
"This Recommendation uses the following abbreviations:"
|
12
|
+
"This Recommendation uses the following abbreviations and acronyms:"
|
13
|
+
norm_empty_pref:
|
14
|
+
None.
|
15
|
+
clause_empty:
|
16
|
+
None.
|
@@ -12,13 +12,13 @@ module Asciidoctor
|
|
12
12
|
recommendation-corrigendum recommendation-errata recommendation-annex
|
13
13
|
focus-group implementers-guide technical-paper technical-report
|
14
14
|
joint-itu-iso-iec).include? doctype or
|
15
|
-
|
15
|
+
@log.add("Document Attributes", nil, "#{doctype} is not a recognised document type")
|
16
16
|
end
|
17
17
|
|
18
18
|
def stage_validate(xmldoc)
|
19
19
|
stage = xmldoc&.at("//bibdata/status/stage")&.text
|
20
20
|
%w(in-force superseded in-force-prepublished withdrawn draft).include? stage or
|
21
|
-
|
21
|
+
@log.add("Document Attributes", nil, "#{stage} is not a recognised status")
|
22
22
|
end
|
23
23
|
|
24
24
|
def content_validate(doc)
|
@@ -27,38 +27,107 @@ module Asciidoctor
|
|
27
27
|
itu_identifier_validate(doc)
|
28
28
|
bibdata_validate(doc.root)
|
29
29
|
termdef_style(doc.root)
|
30
|
+
title_validate1(doc.root)
|
31
|
+
requirement_validate(doc.root)
|
32
|
+
numbers_validate(doc.root)
|
33
|
+
end
|
34
|
+
|
35
|
+
# Editing Guidelines 6.3
|
36
|
+
def title_validate1(xmldoc)
|
37
|
+
t = xmldoc.at("//bibdata/title")&.text
|
38
|
+
xmldoc.xpath("//bibdata/series/title").each do |s|
|
39
|
+
series = s.text.sub(/^[A-Z]: /, "")
|
40
|
+
t.downcase.include?(series.downcase) and
|
41
|
+
@log.add("Document Attributes", nil, "Title includes series name #{series}")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def extract_text(node)
|
46
|
+
return "" if node.nil?
|
47
|
+
node1 = Nokogiri::XML.fragment(node.to_s)
|
48
|
+
node1.xpath("//link | //locality").each(&:remove)
|
49
|
+
ret = ""
|
50
|
+
node1.traverse { |x| ret += x.text if x.text? }
|
51
|
+
ret
|
52
|
+
end
|
53
|
+
|
54
|
+
# Editing Guidelines 7
|
55
|
+
def requirement_validate(xmldoc)
|
56
|
+
xmldoc.xpath("//preface/*").each do |c|
|
57
|
+
extract_text(c).split(/\.\s+/).each do |t|
|
58
|
+
/\b(shall|must)\b/i.match(t) and
|
59
|
+
@log.add("Style", c, "Requirement possibly in preface: #{t.strip}")
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# Editing Guidelines 9.4.3
|
65
|
+
def numbers_validate(xmldoc)
|
66
|
+
xmldoc.xpath("//clause | //preface/* | //annex").each do |x|
|
67
|
+
xx = x.dup
|
68
|
+
xx.xpath("./clause").each { |c| c.remove }
|
69
|
+
style_two_regex_not_prev(x, extract_text(xx),
|
70
|
+
/^(?<num>-?[0-9][0-9,. ]{3,})$/,
|
71
|
+
%r{(\bISO|\bIEC|\bIEEE/)$},
|
72
|
+
"number not broken up in threes by apostrophe")
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def style_two_regex_not_prev(n, text, re, re_prev, warning)
|
77
|
+
return if text.nil?
|
78
|
+
arr = text.split(/\W+/)
|
79
|
+
arr.each_index do |i|
|
80
|
+
m = re.match arr[i]
|
81
|
+
m_prev = i.zero? ? nil : re_prev.match(arr[i - 1])
|
82
|
+
if !m.nil? && m_prev.nil?
|
83
|
+
@log.add("Style", n, "#{warning}: #{m[:num]}")
|
84
|
+
end
|
85
|
+
end
|
30
86
|
end
|
31
87
|
|
32
88
|
def approval_validate(xmldoc)
|
33
89
|
s = xmldoc.at("//bibdata/ext/recommendationstatus/approvalstage") || return
|
34
90
|
process = s["process"]
|
35
91
|
if process == "aap" and %w(determined in-force).include? s.text
|
36
|
-
|
92
|
+
@log.add("Document Attributes", nil, "Recommendation Status #{s.text} inconsistent with AAP")
|
37
93
|
end
|
38
94
|
if process == "tap" and !%w(determined in-force).include? s.text
|
39
|
-
|
95
|
+
@log.add("Document Attributes", nil, "Recommendation Status #{s.text} inconsistent with TAP")
|
40
96
|
end
|
41
97
|
end
|
42
98
|
|
43
99
|
def itu_identifier_validate(xmldoc)
|
44
100
|
s = xmldoc.xpath("//bibdata/docidentifier[@type = 'ITU']").each do |x|
|
45
101
|
/^ITU-[RTF] [AD-VX-Z]\.[0-9]+$/.match(x.text) or
|
46
|
-
|
102
|
+
@log.add("Style", nil, "#{x.text} does not match ITU document identifier conventions")
|
47
103
|
end
|
48
104
|
end
|
49
105
|
|
106
|
+
def section_validate(doc)
|
107
|
+
super
|
108
|
+
section_check(doc.root)
|
109
|
+
end
|
110
|
+
|
111
|
+
# Editing Guidelines 7.2, 7.3
|
112
|
+
def section_check(xmldoc)
|
113
|
+
xmldoc.at("//bibdata/abstract") or
|
114
|
+
@log.add("Style", nil, "No Summary has been provided")
|
115
|
+
xmldoc.at("//bibdata/keywords") or
|
116
|
+
@log.add("Style", nil, "No Keywords have been provided")
|
117
|
+
end
|
118
|
+
|
50
119
|
def termdef_style(xmldoc)
|
51
120
|
xmldoc.xpath("//term").each do |t|
|
52
121
|
para = t.at("./definition") || return
|
53
122
|
term = t.at("./preferred").text
|
54
|
-
termdef_warn(term, /^[A-Z][a-z]+/, term, "term is not lowercase")
|
55
|
-
termdef_warn(para.text, /^[a-z]/, term, "term definition does not start with capital")
|
56
|
-
termdef_warn(para.text, /[^.]$/, term, "term definition does not end with period")
|
123
|
+
termdef_warn(term, /^[A-Z][a-z]+/, t, term, "term is not lowercase")
|
124
|
+
termdef_warn(para.text, /^[a-z]/, t, term, "term definition does not start with capital")
|
125
|
+
termdef_warn(para.text, /[^.]$/, t, term, "term definition does not end with period")
|
57
126
|
end
|
58
127
|
end
|
59
128
|
|
60
|
-
def termdef_warn(text, re, term, msg)
|
61
|
-
re.match(text) &&
|
129
|
+
def termdef_warn(text, re, t, term, msg)
|
130
|
+
re.match(text) && @log.add("Style", t, "#{term}: #{msg}")
|
62
131
|
end
|
63
132
|
end
|
64
133
|
end
|
@@ -47,12 +47,6 @@ module IsoDoc
|
|
47
47
|
l10n("#{@note_lbl} #{n[:label]} – ")
|
48
48
|
end
|
49
49
|
|
50
|
-
def formula_where(dl, out)
|
51
|
-
return unless dl
|
52
|
-
out.p { |p| p << l10n("#{@where_lbl}:") }
|
53
|
-
parse(dl, out)
|
54
|
-
end
|
55
|
-
|
56
50
|
def prefix_container(container, linkend, _target)
|
57
51
|
l10n("#{linkend} #{@labels["in"]} #{anchor(container, :xref)}")
|
58
52
|
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
<div class="document-stage-band" id=
|
1
|
+
<div class="document-stage-band" id="{{ stage | downcase | replace: ' ', '-' }}-band">
|
2
2
|
<p class="document-stage">{{ stage }}</p>
|
3
3
|
</div>
|
4
4
|
|
5
|
-
<div class="document-type-band" id=
|
5
|
+
<div class="document-type-band" id="{{ doctype | downcase | replace: ' ', '-' }}-band">
|
6
6
|
<p class="document-type">ITU {{ doctype }}</p>
|
7
7
|
</div>
|
8
8
|
|
@@ -714,6 +714,10 @@ p.Formula, li.Formula, div.Formula
|
|
714
714
|
mso-fareast-font-family:$bodyfont;
|
715
715
|
mso-bidi-font-family:$bodyfont;
|
716
716
|
mso-ansi-language:EN-GB;}
|
717
|
+
table.formula_dl {
|
718
|
+
margin-left:1.4cm;
|
719
|
+
margin-right:1.4cm;
|
720
|
+
}
|
717
721
|
/* definition list */
|
718
722
|
p.enumlev1, li.enumlev1, div.enumlev1
|
719
723
|
{mso-style-name:enumlev1;
|
data/lib/isodoc/itu/i18n-en.yaml
CHANGED
data/lib/isodoc/itu/metadata.rb
CHANGED
data/lib/isodoc/itu/ref.rb
CHANGED
@@ -11,9 +11,6 @@ module IsoDoc
|
|
11
11
|
out.div do |div|
|
12
12
|
num = num + 1
|
13
13
|
clause_name(num, @normref_lbl, div, nil)
|
14
|
-
f.elements.reject do |e|
|
15
|
-
%w(reference title bibitem note).include? e.name
|
16
|
-
end.each { |e| parse(e, div) }
|
17
14
|
biblio_list(f, div, false)
|
18
15
|
end
|
19
16
|
num
|
@@ -65,13 +62,21 @@ module IsoDoc
|
|
65
62
|
|
66
63
|
def render_identifiers(ids)
|
67
64
|
ids.map do |id|
|
68
|
-
|
69
|
-
|
70
|
-
"recommendation") + " " : "") +
|
71
|
-
docid_prefix(id["type"], id.text.sub(/^\[/, "").sub(/\]$/, ""))
|
65
|
+
id["type"] == "ITU" ? doctype_title(id) :
|
66
|
+
docid_prefix(id["type"], id.text.sub(/^\[/, "").sub(/\]$/, ""))
|
72
67
|
end.join(" | ")
|
73
68
|
end
|
74
69
|
|
70
|
+
def doctype_title(id)
|
71
|
+
type = id.parent&.at(ns("./ext/doctype"))&.text || "recommendation"
|
72
|
+
if type == "recommendation" &&
|
73
|
+
/^(?<prefix>ITU-[A-Z] [A-Z])[ .-]Sup[a-z]*\.[ ]?(?<num>\d+)$/ =~ id.text
|
74
|
+
"#{prefix}-series Recommendations – Supplement #{num}"
|
75
|
+
else
|
76
|
+
"#{titlecase(type)} #{docid_prefix(id["type"], id.text.sub(/^\[/, '').sub(/\]$/, ''))}"
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
75
80
|
def reference_format_start(b, r)
|
76
81
|
id = multi_bibitem_ref_code(b)
|
77
82
|
r << render_identifiers(id)
|
data/lib/isodoc/itu/xref.rb
CHANGED
@@ -67,14 +67,15 @@ module IsoDoc
|
|
67
67
|
"-"
|
68
68
|
end
|
69
69
|
|
70
|
-
|
71
|
-
return super unless @hierarchical_assets
|
72
|
-
middle_sections = "//clause[title = 'Scope'] | "\
|
70
|
+
MIDDLE_SECTIONS = "//clause[title = 'Scope'] | "\
|
73
71
|
"//foreword | //introduction | //acknowledgements | "\
|
74
72
|
"//references[title = 'References' or title = 'references'] | "\
|
75
73
|
"//sections/terms | //preface/clause | "\
|
76
|
-
"//sections/definitions | //clause[parent::sections]"
|
77
|
-
|
74
|
+
"//sections/definitions | //clause[parent::sections]".freeze
|
75
|
+
|
76
|
+
def middle_section_asset_names(d)
|
77
|
+
return super unless @hierarchical_assets
|
78
|
+
d.xpath(ns(MIDDLE_SECTIONS)).each do |c|
|
78
79
|
hierarchical_asset_names(c, @anchors[c["id"]][:label])
|
79
80
|
end
|
80
81
|
end
|
@@ -111,6 +112,16 @@ module IsoDoc
|
|
111
112
|
t["unnumbered"])
|
112
113
|
end
|
113
114
|
end
|
115
|
+
|
116
|
+
def sequential_formula_names(clause)
|
117
|
+
clause&.first&.xpath(ns(MIDDLE_SECTIONS))&.each do |c|
|
118
|
+
if c["id"] && @anchors[c["id"]]
|
119
|
+
hierarchical_formula_names(c, @anchors[c["id"]][:label] || @anchors[c["id"]][:xref] || "???")
|
120
|
+
else
|
121
|
+
hierarchical_formula_names(c, "???")
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
114
125
|
end
|
115
126
|
end
|
116
127
|
end
|
data/lib/metanorma/itu.rb
CHANGED
data/metanorma-itu.gemspec
CHANGED
@@ -38,7 +38,6 @@ Gem::Specification.new do |spec|
|
|
38
38
|
spec.add_development_dependency "rubocop", "= 0.54.0"
|
39
39
|
spec.add_development_dependency "simplecov", "~> 0.15"
|
40
40
|
spec.add_development_dependency "timecop", "~> 0.9"
|
41
|
-
spec.add_development_dependency "metanorma", "~> 0.3.0"
|
42
41
|
spec.add_development_dependency "vcr", "~> 5.0.0"
|
43
42
|
spec.add_development_dependency "webmock"
|
44
43
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma-itu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-03-
|
11
|
+
date: 2020-03-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: htmlentities
|
@@ -192,20 +192,6 @@ dependencies:
|
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: '0.9'
|
195
|
-
- !ruby/object:Gem::Dependency
|
196
|
-
name: metanorma
|
197
|
-
requirement: !ruby/object:Gem::Requirement
|
198
|
-
requirements:
|
199
|
-
- - "~>"
|
200
|
-
- !ruby/object:Gem::Version
|
201
|
-
version: 0.3.0
|
202
|
-
type: :development
|
203
|
-
prerelease: false
|
204
|
-
version_requirements: !ruby/object:Gem::Requirement
|
205
|
-
requirements:
|
206
|
-
- - "~>"
|
207
|
-
- !ruby/object:Gem::Version
|
208
|
-
version: 0.3.0
|
209
195
|
- !ruby/object:Gem::Dependency
|
210
196
|
name: vcr
|
211
197
|
requirement: !ruby/object:Gem::Requirement
|