metanorma-ietf 1.0.10 → 2.0.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.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/macos.yml +3 -2
  3. data/.github/workflows/ubuntu.yml +3 -2
  4. data/.github/workflows/windows.yml +4 -3
  5. data/README.adoc +9 -0
  6. data/lib/asciidoctor/ietf/basicdoc.rng +1045 -0
  7. data/lib/asciidoctor/ietf/biblio.rng +1142 -0
  8. data/lib/asciidoctor/ietf/blocks.rb +76 -0
  9. data/lib/asciidoctor/ietf/converter.rb +211 -0
  10. data/lib/asciidoctor/ietf/front.rb +143 -0
  11. data/lib/asciidoctor/ietf/ietf.rng +882 -0
  12. data/lib/asciidoctor/ietf/isodoc.rng +514 -0
  13. data/lib/asciidoctor/ietf/isostandard.rng +860 -0
  14. data/lib/asciidoctor/ietf/reqt.rng +171 -0
  15. data/lib/asciidoctor/ietf/validate.rb +84 -0
  16. data/lib/isodoc/ietf/blocks.rb +215 -0
  17. data/lib/isodoc/ietf/cleanup.rb +220 -0
  18. data/lib/isodoc/ietf/footnotes.rb +70 -0
  19. data/lib/isodoc/ietf/front.rb +232 -0
  20. data/lib/isodoc/ietf/inline.rb +136 -0
  21. data/lib/isodoc/ietf/metadata.rb +62 -0
  22. data/lib/isodoc/ietf/references.rb +129 -0
  23. data/lib/isodoc/ietf/reqt.rb +74 -0
  24. data/lib/isodoc/ietf/rfc_convert.rb +60 -0
  25. data/lib/isodoc/ietf/section.rb +162 -0
  26. data/lib/isodoc/ietf/table.rb +43 -0
  27. data/lib/isodoc/ietf/terms.rb +65 -0
  28. data/lib/metanorma-ietf.rb +2 -1
  29. data/lib/metanorma/ietf/processor.rb +16 -37
  30. data/lib/metanorma/ietf/version.rb +1 -1
  31. data/metanorma-ietf.gemspec +3 -3
  32. metadata +36 -36
  33. data/Gemfile.lock +0 -327
  34. data/lib/asciidoctor/rfc.rb +0 -8
  35. data/lib/asciidoctor/rfc/common/base.rb +0 -544
  36. data/lib/asciidoctor/rfc/common/front.rb +0 -120
  37. data/lib/asciidoctor/rfc/common/validate.rb +0 -31
  38. data/lib/asciidoctor/rfc/v2/base.rb +0 -380
  39. data/lib/asciidoctor/rfc/v2/blocks.rb +0 -299
  40. data/lib/asciidoctor/rfc/v2/converter.rb +0 -60
  41. data/lib/asciidoctor/rfc/v2/front.rb +0 -69
  42. data/lib/asciidoctor/rfc/v2/inline_anchor.rb +0 -111
  43. data/lib/asciidoctor/rfc/v2/lists.rb +0 -135
  44. data/lib/asciidoctor/rfc/v2/table.rb +0 -116
  45. data/lib/asciidoctor/rfc/v2/validate.rng +0 -716
  46. data/lib/asciidoctor/rfc/v3/base.rb +0 -330
  47. data/lib/asciidoctor/rfc/v3/blocks.rb +0 -246
  48. data/lib/asciidoctor/rfc/v3/converter.rb +0 -62
  49. data/lib/asciidoctor/rfc/v3/front.rb +0 -122
  50. data/lib/asciidoctor/rfc/v3/inline_anchor.rb +0 -89
  51. data/lib/asciidoctor/rfc/v3/lists.rb +0 -176
  52. data/lib/asciidoctor/rfc/v3/svg.rng +0 -9081
  53. data/lib/asciidoctor/rfc/v3/table.rb +0 -65
  54. data/lib/asciidoctor/rfc/v3/validate.rng +0 -2143
@@ -0,0 +1,162 @@
1
+ module IsoDoc::Ietf
2
+ class RfcConvert < ::IsoDoc::Convert
3
+ def common_rfc_pis(node)
4
+ rfc_pis = {
5
+ artworkdelimiter: node&.at(ns("//pi/artworkdelimiter"))&.text,
6
+ artworklines: node&.at(ns("//pi/artworklines"))&.text,
7
+ authorship: node&.at(ns("//pi/authorship"))&.text,
8
+ autobreaks: node&.at(ns("//pi/autobreaks"))&.text,
9
+ background: node&.at(ns("//pi/background"))&.text,
10
+ colonspace: node&.at(ns("//pi/colonspace"))&.text,
11
+ comments: node&.at(ns("//pi/comments"))&.text,
12
+ docmapping: node&.at(ns("//pi/docmapping"))&.text,
13
+ editing: node&.at(ns("//pi/editing"))&.text,
14
+ emoticonic: node&.at(ns("//pi/emoticonic"))&.text,
15
+ footer: node&.at(ns("//pi/footer"))&.text,
16
+ header: node&.at(ns("//pi/header"))&.text,
17
+ inline: node&.at(ns("//pi/inline"))&.text,
18
+ iprnotified: node&.at(ns("//pi/iprnotified"))&.text,
19
+ linkmailto: node&.at(ns("//pi/linkmailto"))&.text,
20
+ linefile: node&.at(ns("//pi/linefile"))&.text,
21
+ notedraftinprogress: node&.at(ns("//pi/notedraftinprogress"))&.text,
22
+ private: node&.at(ns("//pi/private"))&.text,
23
+ refparent: node&.at(ns("//pi/refparent"))&.text,
24
+ rfcedstyle: node&.at(ns("//pi/rfcedstyle"))&.text,
25
+ slides: node&.at(ns("//pi/slides"))&.text,
26
+ "text-list-symbols": node&.at(ns("//pi/text-list-symbols"))&.text,
27
+ tocappendix: node&.at(ns("//pi/tocappendix"))&.text,
28
+ tocindent: node&.at(ns("//pi/tocindent"))&.text,
29
+ tocnarrow: node&.at(ns("//pi/tocnarrow"))&.text,
30
+ tocompact: node&.at(ns("//pi/tocompact"))&.text,
31
+ topblock: node&.at(ns("//pi/topblock"))&.text,
32
+ useobject: node&.at(ns("//pi/useobject"))&.text,
33
+ strict: node&.at(ns("//pi/strict"))&.text || "yes",
34
+ compact: node&.at(ns("//pi/compact"))&.text || "yes",
35
+ subcompact: node&.at(ns("//pi/subcompact"))&.text || "no",
36
+ toc: node&.at(ns("//pi/toc-include"))&.text,
37
+ tocdepth: node&.at(ns("//pi/toc-depth"))&.text || "4",
38
+ symrefs: node&.at(ns("//pi/sym-refs"))&.text || "yes",
39
+ sortrefs: node&.at(ns("//pi/sort-refs"))&.text || "yes",
40
+ }
41
+ attr_code(rfc_pis)
42
+ end
43
+
44
+ def set_pis(node, doc)
45
+ rfc_pis = common_rfc_pis(node)
46
+ rfc_pis.each_pair do |k, v|
47
+ pi = Nokogiri::XML::ProcessingInstruction.new(doc, "rfc",
48
+ "#{k}=\"#{v}\"")
49
+ doc.root.add_previous_sibling(pi)
50
+ end
51
+ doc.to_xml
52
+ end
53
+
54
+ def rfc_attributes(docxml)
55
+ t = Time.now.getutc
56
+ obs = xpath_comma(docxml.xpath(ns(
57
+ "//bibdata/relation[@type = 'obsoletes']/bibitem/docidentifier")))
58
+ upd = xpath_comma(docxml.xpath(ns(
59
+ "//bibdata/relation[@type = 'updates']/bibitem/docidentifier")))
60
+ {
61
+ docName: @meta.get[:doctype] == "Internet Draft" ? @meta.get[:docnumber] : nil,
62
+ number: @meta.get[:doctype].casecmp?("rfc") ? @meta.get[:docnumber] : nil,
63
+ category: docxml&.at(ns("//bibdata/series[@type = 'intended']/title"))&.text || "std",
64
+ ipr: docxml&.at(ns("//bibdata/ext/ipr"))&.text,
65
+ obsoletes: obs,
66
+ updates: upd,
67
+ indexInclude: docxml&.at(ns("//bibdata/ext/indexInclude"))&.text,
68
+ iprExtract: docxml&.at(ns("//bibdata/ext/iprExtract"))&.text,
69
+ sortRefs: docxml&.at(ns("//bibdata/ext/sortRefs"))&.text,
70
+ symRefs: docxml&.at(ns("//bibdata/ext/symRefs"))&.text,
71
+ tocInclude: docxml&.at(ns("//bibdata/ext/tocInclude"))&.text,
72
+ tocDepth: docxml&.at(ns("//bibdata/ext/tocDepth"))&.text,
73
+ submissionType: docxml&.at(ns(
74
+ "//bibdata/series[@type = 'stream']/title"))&.text || "IETF",
75
+ 'xml:lang': docxml&.at(ns("//bibdata/language"))&.text,
76
+ version: "3",
77
+ 'xmlns:xi': "http://www.w3.org/2001/XInclude",
78
+ prepTime: sprintf("%04d-%02d-%02dT%02d:%02d:%02dZ",
79
+ t.year, t.month, t.day, t.hour, t.min, t.sec),
80
+ }
81
+ end
82
+
83
+ def xpath_comma(xpath)
84
+ return nil if xpath.empty?
85
+ xpath.map { |x| x.text }.join(", ")
86
+ end
87
+
88
+ def make_link(out, isoxml)
89
+ links = isoxml.xpath(ns(
90
+ "//bibdata/relation[@type = 'includedIn' or @type = 'describedBy' or "\
91
+ "@type = 'derivedFrom' or @type = 'equivalent']")) || return
92
+ links.each do |l|
93
+ out.link **{ href: l&.at(ns("./bibitem/docidentifier"))&.text,
94
+ rel: rel2iana(l["type"]) }
95
+ end
96
+ end
97
+
98
+ def rel2iana(type)
99
+ case type
100
+ when "includedIn" then "item"
101
+ when "describedBy" then "describedby"
102
+ when "derivedFrom" then "convertedfrom"
103
+ when "equivalent" then "alternate"
104
+ else
105
+ "alternate"
106
+ end
107
+ end
108
+
109
+ def make_middle(out, isoxml)
110
+ out.middle do |middle|
111
+ clause isoxml, middle
112
+ end
113
+ end
114
+
115
+ def make_back(out, isoxml)
116
+ out.back do |back|
117
+ annex isoxml, back
118
+ bibliography isoxml, back
119
+ end
120
+ end
121
+
122
+ def clause_parse_title(node, div, c1, out)
123
+ return unless c1
124
+ div.name do |n|
125
+ c1&.children&.each { |c2| parse(c2, n) }
126
+ end
127
+ end
128
+
129
+ def clause_parse(node, out)
130
+ out.section **attr_code( anchor: node["id"], numbered: node["numbered"],
131
+ removeInRFC: node["removeInRFC"], toc: node["toc"]) do |div|
132
+ clause_parse_title(node, div, node.at(ns("./title")), out)
133
+ node.children.reject { |c1| c1.name == "title" }.each do |c1|
134
+ parse(c1, div)
135
+ end
136
+ end
137
+ end
138
+
139
+ def clause(isoxml, out)
140
+ isoxml.xpath("//xmlns:preface/child::*[not(name() = 'abstract' or name() = 'foreword')] "\
141
+ "| //xmlns:sections/child::*").each do |c|
142
+ clause1(c, out)
143
+ end
144
+ end
145
+
146
+ def clause1(c, out)
147
+ out.section **attr_code( anchor: c["id"], numbered: c["numbered"],
148
+ removeInRFC: c["removeInRFC"], toc: c["toc"]) do |div|
149
+ clause_parse_title(c, div, c.at(ns("./title")), out)
150
+ c.elements.reject { |c1| c1.name == "title" }.each do |c1|
151
+ parse(c1, div)
152
+ end
153
+ end
154
+ end
155
+
156
+ def annex(isoxml, out)
157
+ isoxml.xpath(ns("//annex")).each do |c|
158
+ clause1(c, out)
159
+ end
160
+ end
161
+ end
162
+ end
@@ -0,0 +1,43 @@
1
+ module IsoDoc::Ietf
2
+ class RfcConvert < ::IsoDoc::Convert
3
+ def make_table_attr(node)
4
+ attr_code(anchor: node["id"], align: node["align"])
5
+ end
6
+
7
+ def table_parse(node, out)
8
+ @in_table = true
9
+ out.table **make_table_attr(node) do |t|
10
+ table_title_parse(node, out)
11
+ thead_parse(node, t)
12
+ tbody_parse(node, t)
13
+ tfoot_parse(node, t)
14
+ end
15
+ (dl = node.at(ns("./dl"))) && parse(dl, out)
16
+ node.xpath(ns("./note")).each { |n| parse(n, out) }
17
+ @in_table = false
18
+ end
19
+
20
+ def table_title_parse(node, out)
21
+ name = node.at(ns("./name")) || return
22
+ out.name do |p|
23
+ name.children.each { |n| parse(n, p) }
24
+ end
25
+ end
26
+
27
+ def tr_parse(node, out, ord, totalrows, header)
28
+ out.tr do |r|
29
+ node.elements.each do |td|
30
+ attrs = make_tr_attr(td, ord, totalrows - 1, header)
31
+ r.send td.name, **attrs do |entry|
32
+ td.children.each { |n| parse(n, entry) }
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+ def make_tr_attr(td, row, totalrows, header)
39
+ attr_code(rowspan: td["rowspan"], colspan: td["colspan"],
40
+ align: td["align"] )
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,65 @@
1
+ module IsoDoc::Ietf
2
+ class RfcConvert < ::IsoDoc::Convert
3
+
4
+ def definition_parse(node, out)
5
+ node.children.each { |n| parse(n, out) }
6
+ end
7
+
8
+ def modification_parse(node, out)
9
+ para = node.at(ns("./p"))
10
+ out << " -- "
11
+ para.children.each { |n| parse(n, out) }
12
+ end
13
+
14
+ def deprecated_term_parse(node, out)
15
+ out.t do |p|
16
+ p << l10n("#{@deprecated_lbl}: ")
17
+ node.children.each { |c| parse(c, p) }
18
+ end
19
+ end
20
+
21
+ def admitted_term_parse(node, out)
22
+ out.t do |p|
23
+ node.children.each { |c| parse(c, p) }
24
+ end
25
+ end
26
+
27
+ def term_parse(node, out)
28
+ out.name do |p|
29
+ node.children.each { |n| parse(n, p) }
30
+ end
31
+ end
32
+
33
+ def termnote_parse(node, out)
34
+ note_parse(node, out)
35
+ end
36
+
37
+ def termref_parse(node, out)
38
+ out.t do |p|
39
+ p << "SOURCE: "
40
+ node.children.each { |n| parse(n, p) }
41
+ end
42
+ end
43
+
44
+ def termdef_parse(node, out)
45
+ set_termdomain("")
46
+ clause_parse(node, out)
47
+ end
48
+
49
+ def termdocsource_parse(_node, _out)
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
+ end
65
+ end
@@ -2,6 +2,7 @@ require "asciidoctor" unless defined? Asciidoctor::Converter
2
2
  require "metanorma"
3
3
 
4
4
  require_relative "metanorma/ietf"
5
- require_relative "asciidoctor/rfc"
5
+ require_relative "asciidoctor/ietf/converter"
6
+ require_relative "isodoc/ietf/rfc_convert"
6
7
 
7
8
  Metanorma::Registry.instance.register(Metanorma::Ietf::Processor)
@@ -8,13 +8,13 @@ module Metanorma
8
8
  def initialize
9
9
  @short = :ietf
10
10
  @input_format = :asciidoc
11
- @asciidoctor_backend = :rfc2
11
+ @asciidoctor_backend = :ietf
12
12
  end
13
13
 
14
14
  def output_formats
15
15
  {
16
- xmlrfc2: "xml",
17
- xmlrfc3: "v3.xml",
16
+ xml: "xml",
17
+ rfc: "rfc.xml",
18
18
  html: "html",
19
19
  txt: "txt"
20
20
  }
@@ -25,15 +25,10 @@ module Metanorma
25
25
  end
26
26
 
27
27
  def input_to_isodoc(file, filename)
28
- # TODO: storing these two variables for xmlrfc2. Remove when we have IsoDoc
29
- @file = file
30
- @filename = filename
31
-
32
28
  # This is XML RFC v3 output in text
33
29
  Metanorma::Input::Asciidoc.new.process(file, filename, @asciidoctor_backend)
34
30
  end
35
31
 
36
- # TODO: we're not yet using IsoDoc here
37
32
  def extract_options(isodocxml)
38
33
  {}
39
34
  end
@@ -43,48 +38,32 @@ module Metanorma
43
38
  def which(cmd)
44
39
  exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
45
40
  ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
46
- exts.each { |ext|
41
+ exts.each do |ext|
47
42
  exe = File.join(path, "#{cmd}#{ext}")
48
43
  return exe if File.executable?(exe) && !File.directory?(exe)
49
- }
44
+ end
50
45
  end
51
46
  nil
52
47
  end
53
48
 
54
49
  def output(isodoc_node, outname, format, options={})
55
50
  case format
56
- when :xmlrfc2
57
- # TODO: we're using XML RFC v2 as the central format because our processor
58
- # is not updated to the new schema
59
-
60
- # xmlrfcdoc = Metanorma::Input::Asciidoc.new.process(@file, @filename, :rfc2)
61
- # File.open(outname, 'w') { |f| f << xmlrfcdoc }
62
-
63
- # TODO: When we have IsoDoc, we just translate IsoDoc to XML RFC v2
64
- File.open(outname, 'w') { |f| f << isodoc_node }
65
- when :xmlrfc3
66
- # TODO: When we have IsoDoc, we just translate IsoDoc to XML RFC v3
67
- xmlrfcdoc = Metanorma::Input::Asciidoc.new.process(@file, @filename, :rfc3)
68
- File.open(outname, 'w') { |f| f << xmlrfcdoc }
51
+ when :rfc
52
+ IsoDoc::Ietf::RfcConvert.new(options).convert(outname, isodoc_node)
53
+ @done_rfc = true
69
54
 
70
55
  when :txt, :html
71
- warn outname
72
- Tempfile.open(File.basename(outname)) do |f|
73
- f << isodoc_node
74
-
75
- unless which("xml2rfc")
76
- warn "[metanorma-ietf] Error: unable to generate #{format}, the command `xml2rfc` is not found in path."
77
- return
78
- end
79
-
80
- # In xml2rfc, --text and --html are used
81
- format = :text if format == :txt
82
- # puts "xml2rfc --#{format} #{f.path} -o #{outname}"
83
- system("xml2rfc --#{format} #{f.path} -o #{outname}")
56
+ rfcname = outname.sub(/\.(html|txt)$/, ".rfc.xml")
57
+ output(isodoc_node, outname, :rfc, options) unless @done_rfc
58
+ unless which("xml2rfc")
59
+ warn "[metanorma-ietf] Error: unable to generate #{format}, the command `xml2rfc` is not found in path."
60
+ return
84
61
  end
62
+ # In xml2rfc, --text and --html are used
63
+ format = :text if format == :txt
64
+ system("xml2rfc --#{format} #{rfcname} -o #{outname}")
85
65
  end
86
66
  end
87
-
88
67
  end
89
68
  end
90
69
  end
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module Ietf
3
- VERSION = "1.0.10".freeze
3
+ VERSION = "2.0.0".freeze
4
4
  end
5
5
  end
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
15
15
  metanorma-ietf lets you write IETF documents, such as Internet-Drafts and RFCs,
16
16
  in native AsciiDoc syntax. This is part of the Metanorma publishing framework.
17
17
 
18
- RFC XML ("xml2rfc" Vocabulary XML, RFC7322) is the XML-based language used for
18
+ RFC XML ("xml2rfc" Vocabulary XML, RFC 7991) is the XML-based language used for
19
19
  writing Internet-Drafts and RFCs, but not everyone likes hand-crafting XML,
20
20
  especially when the focus should be on the content.
21
21
 
@@ -37,9 +37,9 @@ Gem::Specification.new do |spec|
37
37
 
38
38
  spec.add_dependency "metanorma-standoc", "~> 1.3.0"
39
39
  spec.add_dependency "isodoc", "~> 1.0.0"
40
+ spec.add_dependency "mathml2asciimath"
40
41
 
41
- spec.add_development_dependency "bundler", "~> 2.0.1"
42
- spec.add_development_dependency "byebug", "~> 9.1"
42
+ spec.add_development_dependency "byebug"
43
43
  spec.add_development_dependency "equivalent-xml", "~> 0.6"
44
44
  spec.add_development_dependency "guard", "~> 2.14"
45
45
  spec.add_development_dependency "guard-rspec", "~> 4.7"
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: 1.0.10
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-12-13 00:00:00.000000000 Z
11
+ date: 2020-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: metanorma-standoc
@@ -39,33 +39,33 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.0.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: bundler
42
+ name: mathml2asciimath
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 2.0.1
48
- type: :development
47
+ version: '0'
48
+ type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 2.0.1
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: byebug
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '9.1'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '9.1'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: equivalent-xml
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -224,7 +224,7 @@ description: |
224
224
  metanorma-ietf lets you write IETF documents, such as Internet-Drafts and RFCs,
225
225
  in native AsciiDoc syntax. This is part of the Metanorma publishing framework.
226
226
 
227
- RFC XML ("xml2rfc" Vocabulary XML, RFC7322) is the XML-based language used for
227
+ RFC XML ("xml2rfc" Vocabulary XML, RFC 7991) is the XML-based language used for
228
228
  writing Internet-Drafts and RFCs, but not everyone likes hand-crafting XML,
229
229
  especially when the focus should be on the content.
230
230
 
@@ -249,7 +249,6 @@ files:
249
249
  - ".rubocop.yml"
250
250
  - CODE_OF_CONDUCT.md
251
251
  - Gemfile
252
- - Gemfile.lock
253
252
  - Guardfile
254
253
  - LICENSE
255
254
  - README.adoc
@@ -263,27 +262,28 @@ files:
263
262
  - docs/installation.md
264
263
  - docs/navigation.md
265
264
  - docs/overview.md
266
- - lib/asciidoctor/rfc.rb
267
- - lib/asciidoctor/rfc/common/base.rb
268
- - lib/asciidoctor/rfc/common/front.rb
269
- - lib/asciidoctor/rfc/common/validate.rb
270
- - lib/asciidoctor/rfc/v2/base.rb
271
- - lib/asciidoctor/rfc/v2/blocks.rb
272
- - lib/asciidoctor/rfc/v2/converter.rb
273
- - lib/asciidoctor/rfc/v2/front.rb
274
- - lib/asciidoctor/rfc/v2/inline_anchor.rb
275
- - lib/asciidoctor/rfc/v2/lists.rb
276
- - lib/asciidoctor/rfc/v2/table.rb
277
- - lib/asciidoctor/rfc/v2/validate.rng
278
- - lib/asciidoctor/rfc/v3/base.rb
279
- - lib/asciidoctor/rfc/v3/blocks.rb
280
- - lib/asciidoctor/rfc/v3/converter.rb
281
- - lib/asciidoctor/rfc/v3/front.rb
282
- - lib/asciidoctor/rfc/v3/inline_anchor.rb
283
- - lib/asciidoctor/rfc/v3/lists.rb
284
- - lib/asciidoctor/rfc/v3/svg.rng
285
- - lib/asciidoctor/rfc/v3/table.rb
286
- - lib/asciidoctor/rfc/v3/validate.rng
265
+ - lib/asciidoctor/ietf/basicdoc.rng
266
+ - lib/asciidoctor/ietf/biblio.rng
267
+ - lib/asciidoctor/ietf/blocks.rb
268
+ - lib/asciidoctor/ietf/converter.rb
269
+ - lib/asciidoctor/ietf/front.rb
270
+ - lib/asciidoctor/ietf/ietf.rng
271
+ - lib/asciidoctor/ietf/isodoc.rng
272
+ - lib/asciidoctor/ietf/isostandard.rng
273
+ - lib/asciidoctor/ietf/reqt.rng
274
+ - lib/asciidoctor/ietf/validate.rb
275
+ - lib/isodoc/ietf/blocks.rb
276
+ - lib/isodoc/ietf/cleanup.rb
277
+ - lib/isodoc/ietf/footnotes.rb
278
+ - lib/isodoc/ietf/front.rb
279
+ - lib/isodoc/ietf/inline.rb
280
+ - lib/isodoc/ietf/metadata.rb
281
+ - lib/isodoc/ietf/references.rb
282
+ - lib/isodoc/ietf/reqt.rb
283
+ - lib/isodoc/ietf/rfc_convert.rb
284
+ - lib/isodoc/ietf/section.rb
285
+ - lib/isodoc/ietf/table.rb
286
+ - lib/isodoc/ietf/terms.rb
287
287
  - lib/metanorma-ietf.rb
288
288
  - lib/metanorma/ietf.rb
289
289
  - lib/metanorma/ietf/processor.rb
@@ -312,7 +312,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
312
312
  version: '0'
313
313
  requirements: []
314
314
  rubyforge_project:
315
- rubygems_version: 2.7.6
315
+ rubygems_version: 2.7.7
316
316
  signing_key:
317
317
  specification_version: 4
318
318
  summary: metanorma-ietf lets you write IETF documents, such as Internet-Drafts and