metanorma-ietf 2.0.13 → 2.2.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: 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.