metanorma-ietf 2.0.13 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 618fe15c1205c409e7f57dc672f45545a408bf20dd7fdeb68577e295232bf226
4
- data.tar.gz: 42104d4c8b90df8481c5bf25d598a68e7c447d71bfa53349b4bef8194dd0e3b0
3
+ metadata.gz: 64b7510c103e030759b4c5430edf1165dd55859f28a6914f091a8f028400ef95
4
+ data.tar.gz: '088ba7ce77c62226026e0fab41af28429a16623bc6379cc95d99f4bfa1a8fbe9'
5
5
  SHA512:
6
- metadata.gz: 18a552d7d528ae211fcbad094c876c6fac60b0503687725edc13d809a3a9f2fd93aafa7a14ede31f47b7b5e9c1d6b5fa092c261f4fd6d63ca9e7eb391fcc6dea
7
- data.tar.gz: 9c58535cb308711ef79df7a58d261887cbbadbedb3fb1a0edcd0247f782b5caa9c58df24ff371ffacd4fe1381f4f4840e61a267903a33fb40ccbd633a7f249c5
6
+ metadata.gz: c12d417a764debe8f8c4003e88730df92e34168c6fa85ecb322f94f63c7775c5c3d425faf2096b561edc7bd1598e95157a07bca6833acb26e2b7e5903b768ceb
7
+ data.tar.gz: 7117f344165e8150e0acd0fbc397cb73a2ec12e22763c4069d8d05e6f283df5622b998f7ed83eb067730f51e596ed8d9874ced2389e5a8f0d05da286f0bf82d4
@@ -36,7 +36,6 @@ jobs:
36
36
  uses: actions/setup-ruby@v1
37
37
  with:
38
38
  ruby-version: ${{ matrix.ruby }}
39
- architecture: 'x64'
40
39
  - name: Update gems
41
40
  run: |
42
41
  sudo gem install bundler --force
@@ -35,7 +35,6 @@ jobs:
35
35
  uses: actions/setup-ruby@v1
36
36
  with:
37
37
  ruby-version: ${{ matrix.ruby }}
38
- architecture: 'x64'
39
38
  - name: Update gems
40
39
  run: |
41
40
  gem install bundler
@@ -36,7 +36,6 @@ jobs:
36
36
  uses: actions/setup-ruby@v1
37
37
  with:
38
38
  ruby-version: ${{ matrix.ruby }}
39
- architecture: 'x64'
40
39
  - name: Update gems
41
40
  shell: pwsh
42
41
  run: |
@@ -26,19 +26,9 @@ module Asciidoctor
26
26
  super
27
27
  end
28
28
 
29
- def document(node)
30
- init(node)
31
- ret1 = makexml(node)
32
- ret = ret1.to_xml(indent: 2)
33
- unless node.attr("nodoc") || !node.attr("docfile")
34
- filename = node.attr("docfile").gsub(/\.adoc/, ".xml").
35
- gsub(%r{^.*/}, "")
36
- File.open(filename, "w") { |f| f.write(ret) }
37
- rfc_converter(node).convert filename unless node.attr("nodoc")
38
- end
39
- @log.write(@localdir + @filename + ".err") unless @novalid
40
- @files_to_delete.each { |f| FileUtils.rm f }
41
- ret
29
+ def outputs(node, ret)
30
+ File.open(@filename + ".xml", "w:UTF-8") { |f| f.write(ret) }
31
+ rfc_converter(node).convert(@filename + ".xml")
42
32
  end
43
33
 
44
34
  def doctype(node)
@@ -922,6 +922,9 @@
922
922
  <optional>
923
923
  <attribute name="script"/>
924
924
  </optional>
925
+ <optional>
926
+ <attribute name="type"/>
927
+ </optional>
925
928
  <optional>
926
929
  <attribute name="obligation">
927
930
  <choice>
@@ -961,9 +964,6 @@
961
964
  </define>
962
965
  <define name="content-subsection">
963
966
  <element name="clause">
964
- <optional>
965
- <attribute name="type"/>
966
- </optional>
967
967
  <ref name="Content-Section"/>
968
968
  </element>
969
969
  </define>
@@ -992,6 +992,9 @@
992
992
  </choice>
993
993
  </attribute>
994
994
  </optional>
995
+ <optional>
996
+ <attribute name="type"/>
997
+ </optional>
995
998
  <optional>
996
999
  <ref name="section-title"/>
997
1000
  </optional>
@@ -1011,9 +1014,6 @@
1011
1014
  </define>
1012
1015
  <define name="clause">
1013
1016
  <element name="clause">
1014
- <optional>
1015
- <attribute name="type"/>
1016
- </optional>
1017
1017
  <ref name="Clause-Section"/>
1018
1018
  </element>
1019
1019
  </define>
@@ -1042,6 +1042,9 @@
1042
1042
  </choice>
1043
1043
  </attribute>
1044
1044
  </optional>
1045
+ <optional>
1046
+ <attribute name="type"/>
1047
+ </optional>
1045
1048
  <optional>
1046
1049
  <ref name="section-title"/>
1047
1050
  </optional>
@@ -1180,6 +1183,9 @@
1180
1183
  <optional>
1181
1184
  <attribute name="script"/>
1182
1185
  </optional>
1186
+ <optional>
1187
+ <attribute name="type"/>
1188
+ </optional>
1183
1189
  <optional>
1184
1190
  <attribute name="obligation">
1185
1191
  <choice>
@@ -72,7 +72,9 @@ module IsoDoc::Ietf
72
72
  end
73
73
 
74
74
  def note_label(node)
75
- l10n("#{super}: ")
75
+ n = @xrefs.get[node["id"]]
76
+ return l10n("#{@i18n.note}: ") if n.nil? || n[:label].nil? || n[:label].empty?
77
+ l10n("#{@i18n.note} #{n[:label]}: ")
76
78
  end
77
79
 
78
80
  def note_parse(node, out)
@@ -94,10 +96,10 @@ module IsoDoc::Ietf
94
96
  end
95
97
 
96
98
  def example_label(node, div, name)
97
- n = get_anchors[node["id"]]
99
+ n = @xrefs.get[node["id"]]
98
100
  div.t **attr_code(anchor: node["id"], keepWithNext: "true") do |p|
99
- lbl = (n.nil? || n[:label].nil? || n[:label].empty?) ? @example_lbl :
100
- l10n("#{@example_lbl} #{n[:label]}")
101
+ lbl = (n.nil? || n[:label].nil? || n[:label].empty?) ? @i18n.example :
102
+ l10n("#{@i18n.example} #{n[:label]}")
101
103
  p << lbl
102
104
  name and !lbl.nil? and p << ": "
103
105
  name and name.children.each { |n| parse(n, p) }
@@ -137,14 +139,14 @@ module IsoDoc::Ietf
137
139
 
138
140
  def formula_where(dl, out)
139
141
  return unless dl
140
- out.t { |p| p << @where_lbl }
142
+ out.t { |p| p << @i18n.where }
141
143
  parse(dl, out)
142
144
  end
143
145
 
144
146
  def formula_parse1(node, out)
145
147
  out.t **attr_code(anchor: node["id"]) do |p|
146
148
  parse(node.at(ns("./stem")), p)
147
- lbl = anchor(node['id'], :label, false)
149
+ lbl = @xrefs.anchor(node['id'], :label, false)
148
150
  lbl.nil? or
149
151
  p << " (#{lbl})"
150
152
  end
@@ -157,7 +157,8 @@ module IsoDoc::Ietf
157
157
  s.children = s.children.to_xml.gsub(%r{<br/>\n}, "\n").
158
158
  gsub(%r{\s+(<t[ >])}, "\\1").gsub(%r{</t>\s+}, "</t>")
159
159
  sourcecode_remove_markup(s)
160
- s.children = "<![CDATA[#{s.children.to_xml.sub(/\A\n+/, "")}]]>"
160
+ text = HTMLEntities.new.decode(s.children.to_xml.sub(/\A\n+/, ""))
161
+ s.children = "<![CDATA[#{text}]]>"
161
162
  end
162
163
  end
163
164
 
@@ -23,11 +23,16 @@ module IsoDoc::Ietf
23
23
  super
24
24
  end
25
25
 
26
+ def output_if_translit(text)
27
+ return nil if text.nil?
28
+ text.transliterate != text ? text.transliterate : nil
29
+ end
30
+
26
31
  def title(isoxml, front)
27
32
  title = @meta.get[:doctitle] or return
28
33
  front.title title, **attr_code(abbrev: @meta.get[:docabbrev],
29
- ascii: @meta.get[:docascii] ||
30
- title.transliterate)
34
+ ascii: (@meta.get[:docascii] ||
35
+ output_if_translit(title)))
31
36
  end
32
37
 
33
38
  def seriesinfo(isoxml, front)
@@ -37,7 +42,7 @@ module IsoDoc::Ietf
37
42
 
38
43
  def seriesinfo_attr(isoxml)
39
44
  attr_code(value: @meta.get[:docnumber] || "",
40
- asciiValue: @meta.get[:docnumber]&.transliterate,
45
+ asciiValue: output_if_translit(@meta.get[:docnumber]),
41
46
  status: @meta.get[:stage],
42
47
  stream: isoxml&.at(ns("//bibdata/series[@type = 'stream']/"\
43
48
  "title"))&.text)
@@ -82,9 +87,9 @@ module IsoDoc::Ietf
82
87
 
83
88
  def pers_author_attrs1(ret, full, init, c)
84
89
  full and ret.merge!(attr_code(
85
- asciiFullname: full&.transliterate,
86
- asciiInitials: init&.transliterate,
87
- asciiSurname: c&.at(ns("./surname"))&.text&.transliterate))
90
+ asciiFullname: output_if_translit(full),
91
+ asciiInitials: output_if_translit(init),
92
+ asciiSurname: output_if_translit(c&.at(ns("./surname")))))
88
93
  ret
89
94
  end
90
95
 
@@ -113,8 +118,8 @@ module IsoDoc::Ietf
113
118
  def organization(org, out, show)
114
119
  name = org.at(ns("./name"))&.text
115
120
  out.organization name, **attr_code(
116
- showOnFrontPage: show&.text, ascii: name&.transliterate,
117
- asciiAbbrev: org&.at(ns("./abbreviation"))&.transliterate,
121
+ showOnFrontPage: show&.text, ascii: output_if_translit(name),
122
+ asciiAbbrev: output_if_translit(org.at(ns("./abbreviation"))),
118
123
  abbrev: org.at(ns("./abbreviation")))
119
124
  end
120
125
 
@@ -163,7 +168,7 @@ module IsoDoc::Ietf
163
168
 
164
169
  def date(isoxml, front)
165
170
  date = @meta.get[:publisheddate] || @meta.get[:circulateddate] || return
166
- date.gsub!(/T.*$/, "")
171
+ date = date.gsub(/T.*$/, "")
167
172
  attr = date_attr(date) || return
168
173
  front.date **attr_code(attr)
169
174
  end
@@ -1,5 +1,10 @@
1
1
  module IsoDoc::Ietf
2
2
  class RfcConvert < ::IsoDoc::Convert
3
+ def recommendation_labels(node)
4
+ [node.at(ns("./label")), node.at(ns("./title")),
5
+ @xrefs.anchor(node['id'], :label, false)]
6
+ end
7
+
3
8
  def recommendation_name(node, out, type)
4
9
  label, title, lbl = recommendation_labels(node)
5
10
  out.t **{ keepWithNext: "true" } do |b|
@@ -27,7 +32,7 @@ module IsoDoc::Ietf
27
32
  end
28
33
 
29
34
  def recommendation_parse(node, out)
30
- recommendation_name(node, out, @recommendation_lbl)
35
+ recommendation_name(node, out, @i18n.recommendation)
31
36
  recommendation_attributes(node, out)
32
37
  node.children.each do |n|
33
38
  parse(n, out) unless %w(label title).include? n.name
@@ -35,7 +40,7 @@ module IsoDoc::Ietf
35
40
  end
36
41
 
37
42
  def requirement_parse(node, out)
38
- recommendation_name(node, out, @requirement_lbl)
43
+ recommendation_name(node, out, @i18n.requirement)
39
44
  recommendation_attributes(node, out)
40
45
  node.children.each do |n|
41
46
  parse(n, out) unless %w(label title).include? n.name
@@ -43,7 +48,7 @@ module IsoDoc::Ietf
43
48
  end
44
49
 
45
50
  def permission_parse(node, out)
46
- recommendation_name(node, out, @permission_lbl)
51
+ recommendation_name(node, out, @i18n.permission)
47
52
  recommendation_attributes(node, out)
48
53
  node.children.each do |n|
49
54
  parse(n, out) unless %w(label title).include? n.name
@@ -9,11 +9,12 @@ require_relative "./cleanup"
9
9
  require_relative "./footnotes"
10
10
  require_relative "./references"
11
11
  require_relative "./section"
12
+ require_relative "./xref"
12
13
 
13
14
  module IsoDoc::Ietf
14
15
  class RfcConvert < ::IsoDoc::Convert
15
16
  def convert1(docxml, filename, dir)
16
- anchor_names docxml
17
+ @xrefs.parse docxml
17
18
  info docxml, nil
18
19
  xml = noko do |xml|
19
20
  xml.rfc **attr_code(rfc_attributes(docxml)) do |html|
@@ -26,10 +27,14 @@ module IsoDoc::Ietf
26
27
  set_pis(docxml, Nokogiri::XML(xml))
27
28
  end
28
29
 
29
- def metadata_init(lang, script, labels)
30
- @meta = Metadata.new(lang, script, labels)
30
+ def metadata_init(lang, script, i18n)
31
+ @meta = Metadata.new(lang, script, i18n)
31
32
  end
32
33
 
34
+ def xref_init(lang, script, klass, i18n, options)
35
+ @xrefs = Xref.new(lang, script, klass, i18n, options)
36
+ end
37
+
33
38
  def extract_delims(text)
34
39
  @openmathdelim = "$$"
35
40
  @closemathdelim = "$$"
@@ -58,7 +63,7 @@ module IsoDoc::Ietf
58
63
  result = from_xhtml(cleanup(to_xhtml(textcleanup(result)))).
59
64
  sub(/<!DOCTYPE[^>]+>\n/, "").
60
65
  sub(/(<rfc[^<]+? )lang="[^"]+"/, "\\1")
61
- File.open("#{filename}.rfc.xml", "w:UTF-8") { |f| f.write(result) }
66
+ File.open(filename, "w:UTF-8") { |f| f.write(result) }
62
67
  @files_to_delete.each { |f| FileUtils.rm_rf f }
63
68
  end
64
69
 
@@ -71,6 +76,7 @@ module IsoDoc::Ietf
71
76
  super
72
77
  @xinclude = options[:use_xinclude] == "true"
73
78
  @format = :rfc
79
+ @suffix = "rfc.xml"
74
80
  end
75
81
  end
76
82
  end
@@ -81,11 +81,11 @@ module IsoDoc::Ietf
81
81
 
82
82
  def series2category(series)
83
83
  case series&.downcase
84
- when "standard" then "std"
85
- when "informational" then "info"
86
- when "experimental" then "exp"
84
+ when "standard", "std" then "std"
85
+ when "informational", "info" then "info"
86
+ when "experimental", "exp" then "exp"
87
87
  when "bcp" then "bcp"
88
- when "fyi" then "info"
88
+ when "fyi", "info" then "info"
89
89
  when "full-standard" then "std"
90
90
  when "historic" then "historic"
91
91
  else
@@ -132,7 +132,7 @@ module IsoDoc::Ietf
132
132
  end
133
133
  end
134
134
 
135
- def clause_parse_title(node, div, c1, out)
135
+ def clause_parse_title(node, div, c1, out, _heading_attrs = {})
136
136
  return unless c1
137
137
  div.name do |n|
138
138
  c1&.children&.each { |c2| parse(c2, n) }
@@ -13,7 +13,7 @@ module IsoDoc::Ietf
13
13
 
14
14
  def deprecated_term_parse(node, out)
15
15
  out.t do |p|
16
- p << l10n("#{@deprecated_lbl}: ")
16
+ p << l10n("#{@i18n.deprecated}: ")
17
17
  node.children.each { |c| parse(c, p) }
18
18
  end
19
19
  end
@@ -48,18 +48,5 @@ module IsoDoc::Ietf
48
48
 
49
49
  def termdocsource_parse(_node, _out)
50
50
  end
51
-
52
- def termnote_anchor_names(docxml)
53
- docxml.xpath(ns("//term[descendant::termnote]")).each do |t|
54
- c = Counter.new
55
- notes = t.xpath(ns(".//termnote"))
56
- notes.each do |n|
57
- next if n["id"].nil? || n["id"].empty?
58
- idx = notes.size == 1 ? "" : " #{c.increment(n).print}"
59
- @anchors[n["id"]] =
60
- anchor_struct(idx, n, @note_xref_lbl, "note", false)
61
- end
62
- end
63
- end
64
51
  end
65
52
  end
@@ -0,0 +1,20 @@
1
+ require "isodoc"
2
+
3
+ module IsoDoc
4
+ module Ietf
5
+ class Xref < IsoDoc::Xref
6
+ def termnote_anchor_names(docxml)
7
+ docxml.xpath(ns("//term[descendant::termnote]")).each do |t|
8
+ c = IsoDoc::XrefGen::Counter.new
9
+ notes = t.xpath(ns(".//termnote"))
10
+ notes.each do |n|
11
+ next if n["id"].nil? || n["id"].empty?
12
+ idx = notes.size == 1 ? "" : " #{c.increment(n).print}"
13
+ @anchors[n["id"]] =
14
+ anchor_struct(idx, n, @labels["note_xref"], "note", false)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -26,11 +26,6 @@ module Metanorma
26
26
  "Metanorma::Ietf #{::Metanorma::Ietf::VERSION}"
27
27
  end
28
28
 
29
- def input_to_isodoc(file, filename)
30
- # This is XML RFC v3 output in text
31
- Metanorma::Input::Asciidoc.new.process(file, filename, @asciidoctor_backend)
32
- end
33
-
34
29
  def extract_options(isodocxml)
35
30
  {}
36
31
  end
@@ -48,14 +43,19 @@ module Metanorma
48
43
  nil
49
44
  end
50
45
 
46
+ def use_presentation_xml(ext)
47
+ false
48
+ end
49
+
51
50
  def xml2rfc_present?
52
51
  !which("xml2rfc").nil?
53
52
  end
54
53
 
55
- def output(isodoc_node, outname, format, options={})
54
+ def output(isodoc_node, inname, outname, format, options={})
56
55
  case format
57
56
  when :rfc
58
- IsoDoc::Ietf::RfcConvert.new(options).convert(outname, isodoc_node)
57
+ outname ||= inname.sub(/\.xml$/, ".rfc.xml")
58
+ IsoDoc::Ietf::RfcConvert.new(options).convert(inname, isodoc_node, nil, outname)
59
59
  @done_rfc = true
60
60
 
61
61
  when :txt
@@ -64,9 +64,10 @@ module Metanorma
64
64
  return
65
65
  end
66
66
 
67
- rfcname = outname.sub(/\.txt$/, ".rfc.xml")
68
- output(isodoc_node, outname, :rfc, options) unless @done_rfc
67
+ rfcname = inname.sub(/\.xml$/, ".rfc.xml")
68
+ output(isodoc_node, inname, rfcname, :rfc, options) unless @done_rfc
69
69
 
70
+ outname ||= inname.sub(/\.xml$/, ".txt")
70
71
  system("xml2rfc --text #{rfcname} -o #{outname}")
71
72
 
72
73
  when :pdf
@@ -75,9 +76,10 @@ module Metanorma
75
76
  return
76
77
  end
77
78
 
78
- rfcname = outname.sub(/\.pdf$/, ".rfc.xml")
79
- output(isodoc_node, outname, :rfc, options) unless @done_rfc
79
+ rfcname = inname.sub(/\.xml$/, ".rfc.xml")
80
+ output(isodoc_node, inname, rfcname, :rfc, options) unless @done_rfc
80
81
 
82
+ outname ||= inname.sub(/\.xml$/, ".pdf")
81
83
  system("xml2rfc --pdf #{rfcname} -o #{outname}")
82
84
 
83
85
  when :html
@@ -86,9 +88,10 @@ module Metanorma
86
88
  return
87
89
  end
88
90
 
89
- rfcname = outname.sub(/\.html$/, ".rfc.xml")
90
- output(isodoc_node, outname, :rfc, options) unless @done_rfc
91
+ rfcname = inname.sub(/\.xml$/, ".rfc.xml")
92
+ output(isodoc_node, inname, rfcname, :rfc, options) unless @done_rfc
91
93
 
94
+ outname ||= inname.sub(/\.xml$/, ".html")
92
95
  system("xml2rfc --html #{rfcname} -o #{outname}")
93
96
 
94
97
  else
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module Ietf
3
- VERSION = "2.0.13".freeze
3
+ VERSION = "2.2.0".freeze
4
4
  end
5
5
  end
@@ -35,8 +35,8 @@ Gem::Specification.new do |spec|
35
35
  spec.require_paths = ["lib"]
36
36
  spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
37
37
 
38
- spec.add_dependency "metanorma-standoc", "~> 1.4.0"
39
- spec.add_dependency "isodoc", "~> 1.0.0"
38
+ spec.add_dependency "metanorma-standoc", "~> 1.5.0"
39
+ spec.add_dependency "isodoc", "~> 1.2.0"
40
40
  spec.add_dependency "mathml2asciimath"
41
41
 
42
42
  spec.add_development_dependency "byebug"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-ietf
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.13
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-19 00:00:00.000000000 Z
11
+ date: 2020-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: metanorma-standoc
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.4.0
19
+ version: 1.5.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.4.0
26
+ version: 1.5.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: isodoc
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.0.0
33
+ version: 1.2.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.0.0
40
+ version: 1.2.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: mathml2asciimath
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -269,6 +269,7 @@ files:
269
269
  - lib/isodoc/ietf/section.rb
270
270
  - lib/isodoc/ietf/table.rb
271
271
  - lib/isodoc/ietf/terms.rb
272
+ - lib/isodoc/ietf/xref.rb
272
273
  - lib/metanorma-ietf.rb
273
274
  - lib/metanorma/ietf.rb
274
275
  - lib/metanorma/ietf/processor.rb
@@ -281,7 +282,7 @@ homepage: https://github.com/metanorma/metanorma-ietf
281
282
  licenses:
282
283
  - BSD-2-Clause
283
284
  metadata: {}
284
- post_install_message:
285
+ post_install_message:
285
286
  rdoc_options: []
286
287
  require_paths:
287
288
  - lib
@@ -296,9 +297,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
296
297
  - !ruby/object:Gem::Version
297
298
  version: '0'
298
299
  requirements: []
299
- rubyforge_project:
300
- rubygems_version: 2.7.6
301
- signing_key:
300
+ rubygems_version: 3.0.3
301
+ signing_key:
302
302
  specification_version: 4
303
303
  summary: metanorma-ietf lets you write IETF documents, such as Internet-Drafts and
304
304
  RFCs, in AsciiDoc.