metanorma-ietf 3.6.4 → 3.6.6

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: 847ebcc079c10fdcfc8298bc41d98602c51a9ec5708b0e5bd61bfb7e18bcd131
4
- data.tar.gz: d542c9d3828babe304e69ec511af80b3fd622aa2084896d377efe2fc0f5c6382
3
+ metadata.gz: edd5d53757c7142ccf379c7ffb83ecc79874c544593de69a9b1421a00e90cc3f
4
+ data.tar.gz: ce343131a888ca5c1b617abfea081e2bee46c2f6c2162bd99331e0ce05add13e
5
5
  SHA512:
6
- metadata.gz: 4c9012346f76db59d2bfdcf47ae3573a6fe92fffda03d25636bc7d8c6af5daf0fd577ab1da3ea9b0d2e7bc30c419bc2ec638b2e63b692ba3d133c8282dafbe7b
7
- data.tar.gz: d33727a9961bce1c883c07d6a8039715b42e151e9fb42bed36a4d143ad89f7072d9d607d5a25f6a43ed1c253fb18908d28ba59cb1d0387111004ffee7fbcbb5e
6
+ metadata.gz: 3440d8db12dda0936d60ded38bbe47c72fb76ffbbc5aac8ee914b0bb03f3808f93078bba4aeb69edf4133d7b4d6e2561419b9b1e8eaedeb2ce803f0817db1c73
7
+ data.tar.gz: 74564e708027fd31b303cf215d6a5a98c25e4e8ed40bf58e207805d9a7a49ac6a882f483fbae3db4fdc92c973c5db22deb133b3ecfb0380d471b9d32954d1485
@@ -99,7 +99,12 @@ module IsoDoc
99
99
  end
100
100
 
101
101
  def front_cleanup(xmldoc)
102
- xmldoc.xpath("//title").each { |s| s.children = s.text }
102
+ xmldoc.xpath("//title").each do |s|
103
+ s.xpath(".//eref[normalize-space(.)='']").each do |e|
104
+ e.replace(e["target"])
105
+ end
106
+ s.children = s.text
107
+ end
103
108
  xmldoc.xpath("//reference/front[not(author)]").each do |f|
104
109
  insert = f.at("./seriesInfo[last()]") || f.at("./title")
105
110
  insert.next = "<author surname='Unknown'/>"
@@ -72,7 +72,8 @@ module IsoDoc
72
72
  isoxml.xpath("//xmlns:bibdata/xmlns:contributor[xmlns:role/@type = " \
73
73
  "'author' or xmlns:role/@type = 'editor']").each do |c|
74
74
  role = c.at(ns("./role/@type")).text == "editor" ? "editor" : nil
75
- (c.at("./organization") and org_author(c, role, front)) or
75
+ c.at(ns("./organization/subdivision[@type = 'Workgroup']")) and next
76
+ (c.at(ns("./organization")) and org_author(c, role, front)) or
76
77
  person_author(c, role, front)
77
78
  end
78
79
  end
@@ -104,7 +105,7 @@ module IsoDoc
104
105
  front.author **attrs do |a|
105
106
  org = contrib.at(ns("./person/affiliation/organization")) and
106
107
  organization(org, a, contrib.document.at(ns("//showOnFrontPage")))
107
- address(contrib.xpath(ns(".//address")),
108
+ address(contrib.at(ns(".//address")),
108
109
  contrib.at(ns(".//phone[not(@type = 'fax')]")),
109
110
  contrib.at(ns(".//phone[@type = 'fax']")),
110
111
  contrib.xpath(ns(".//email")), contrib.at(ns(".//uri")), a)
@@ -126,13 +127,13 @@ module IsoDoc
126
127
  name = org.at(ns("./name"))&.text
127
128
  out.organization name, **attr_code(
128
129
  showOnFrontPage: show&.text, ascii: output_if_translit(name),
129
- asciiAbbrev: output_if_translit(org.at(ns("./abbreviation"))),
130
+ asciiAbbrev: output_if_translit(org.at(ns("./abbreviation"))&.text),
130
131
  abbrev: org.at(ns("./abbreviation"))
131
132
  )
132
133
  end
133
134
 
134
135
  def address(addr, phone, fax, email, uri, out)
135
- return unless addr || phone || fax || email || uri
136
+ return unless addr || phone || fax || !email.empty? || uri
136
137
 
137
138
  out.address do |a|
138
139
  addr and postal(addr, a)
@@ -3,3 +3,5 @@ no_terms_boilerplate: ""
3
3
  internal_terms_boilerplate: ""
4
4
  external_terms_boilerplate: ""
5
5
  internal_external_terms_boilerplate: ""
6
+ punct:
7
+ biblio-terminator: ""
@@ -162,6 +162,7 @@ module IsoDoc
162
162
  ) or return ""
163
163
  ret.gsub(%r{</?span[^>]*>}, "").sub(/^,/, "")
164
164
  .sub(/^\s*(Sections?|Clauses?)/, "").strip.sub(/,$/, "")
165
+ .gsub(/\s+/, " ")
165
166
  end
166
167
 
167
168
  def semx_origin_parse(node, out)
@@ -29,7 +29,8 @@ module IsoDoc
29
29
 
30
30
  def docid(isoxml, _out)
31
31
  dn = isoxml.at(ns("//bibdata/docnumber"))
32
- set(:docnumber, dn&.text&.sub(/^rfc-/, "")&.sub(/\.[a-z0-9]+$/i, ""))
32
+ set(:docnumber, dn&.text&.strip&.sub(/^rfc-/, "")
33
+ &.sub(/\.[a-z0-9]+$/i, ""))
33
34
  end
34
35
 
35
36
  def author(xml, _out)
@@ -39,7 +40,8 @@ module IsoDoc
39
40
 
40
41
  def wg(xml)
41
42
  workgroups = []
42
- xml.xpath(ns("//bibdata/ext/editorialgroup/workgroup")).each do |wg|
43
+ xml.xpath(ns("//bibdata/contributor[role/description = 'committee']/" \
44
+ "organization/subdivision[@type = 'Workgroup']/name")).each do |wg|
43
45
  workgroups << wg.text
44
46
  end
45
47
  set(:wg, workgroups)
@@ -29,9 +29,7 @@ module IsoDoc
29
29
 
30
30
  def bibliography1(node, out)
31
31
  out.references **attr_code(anchor: node["id"]) do |div|
32
- title = node.at(ns("./title")) and div.name do |name|
33
- title.children.each { |n| parse(n, name) }
34
- end
32
+ bibliography1_title(node, div)
35
33
  node.elements.select do |e|
36
34
  %w(references clause).include? e.name
37
35
  end.each { |e| bibliography1(e, out) }
@@ -42,6 +40,12 @@ module IsoDoc
42
40
  end
43
41
  end
44
42
 
43
+ def bibliography1_title(node, div)
44
+ title = node.at(ns("./title")) and div.name do |name|
45
+ title.children.each { |n| parse(n, name) }
46
+ end
47
+ end
48
+
45
49
  def biblio_list(node, div, _biblio)
46
50
  i = 0
47
51
  node.xpath(ns("./bibitem | ./note")).each do |b|
@@ -66,15 +70,23 @@ module IsoDoc
66
70
  end
67
71
 
68
72
  def bibitem_render(ref, bib)
73
+ bib1 = bibitem_render_prep(bib)
74
+ if (f = bib1.at(ns("./formattedref"))) && !bib1.at(ns("./title"))
75
+ ref.front do |front|
76
+ front.title do |t|
77
+ children_parse(f, t)
78
+ end
79
+ end
80
+ else
81
+ ref << @bibrenderer.render(bib1.to_xml, embedded: true)
82
+ end
83
+ end
84
+
85
+ def bibitem_render_prep(bib)
69
86
  bib1 = bib.clone
70
87
  @isodoc.prep_for_rendering(bib1)
71
88
  bib1.namespace = nil
72
- ret = @bibrenderer.render(bib1.to_xml, embedded: true)
73
- ref << if bib1.at(ns("./formattedref")) && !bib1.at(ns("./title"))
74
- "<front><title>#{ret}</title></front>"
75
- else
76
- ret
77
- end
89
+ bib1
78
90
  end
79
91
  end
80
92
  end
@@ -869,7 +869,7 @@ depending on whether the items exist as independent documents, or are parts of a
869
869
  </zeroOrMore>
870
870
  </element>
871
871
  </define>
872
- <define name="BibItemType" combine="choice">
872
+ <define name="BibItemType">
873
873
  <a:documentation>Type of bibliographic item.
874
874
  The value list complies with the types provided in ISO 690:2021.
875
875
  NOTE: These values represent a strict superset to BibTeX
@@ -13,7 +13,7 @@ module Metanorma
13
13
  def boilerplate_isodoc(xmldoc)
14
14
  x = xmldoc.dup
15
15
  x.root.add_namespace(nil, xml_namespace)
16
- #xml = Nokogiri::XML(x.to_xml)
16
+ # xml = Nokogiri::XML(x.to_xml)
17
17
  @isodoc ||= isodoc(@lang, @script, @locale)
18
18
  # initialise @isodoc.xrefs, for @isodoc.xrefs.info
19
19
  @isodoc
@@ -41,8 +41,7 @@ module Metanorma
41
41
  c["to"] = id
42
42
  r.replace("<bookmark id='#{id}'/>")
43
43
  else
44
- @log.add("Crossrefences", r,
45
- "No matching annotation for cref:[#{r.text}]", severity: 1)
44
+ @log.add("IETF_1", r, params: [r.text])
46
45
  end
47
46
  end
48
47
  end
@@ -103,7 +102,6 @@ module Metanorma
103
102
  def section_names_refs_cleanup(xml); end
104
103
 
105
104
  def note_cleanup(xmldoc); end
106
-
107
105
  end
108
106
  end
109
107
  end
@@ -178,3 +178,5 @@ module Metanorma
178
178
  end
179
179
  end
180
180
  end
181
+
182
+ require_relative "./log"
@@ -259,11 +259,11 @@
259
259
  <ref name="index-tertiary"/>
260
260
  </element>
261
261
  </define>
262
- <define name="TextElement" combine="choice">
263
- <ref name="review"/>
264
- </define>
265
262
  </include>
266
263
  <!-- end overrides -->
264
+ <define name="TextElement" combine="choice">
265
+ <ref name="review"/>
266
+ </define>
267
267
  <define name="ReviewAttributes" combine="interleave">
268
268
  <optional>
269
269
  <attribute name="display"/>
@@ -311,17 +311,28 @@ and is intended to be referenced by a callout within the source code</a:document
311
311
  </ref>
312
312
  </optional>
313
313
  <choice>
314
- <a:documentation>Content of the figure</a:documentation>
315
- <ref name="image"/>
314
+ <a:documentation>Content of the figure </a:documentation>
315
+ <ref name="image">
316
+ <a:documentation>by default the content of a figure is a media file</a:documentation>
317
+ </ref>
316
318
  <ref name="video"/>
317
319
  <ref name="audio"/>
318
- <ref name="pre"/>
320
+ <ref name="pre">
321
+ <a:documentation>figures can contain ASCII art</a:documentation>
322
+ </ref>
319
323
  <oneOrMore>
320
- <ref name="paragraph-with-footnote"/>
324
+ <ref name="paragraph-with-footnote">
325
+ <a:documentation>figures can contain discursive art</a:documentation>
326
+ </ref>
321
327
  </oneOrMore>
322
328
  <zeroOrMore>
323
- <ref name="figure"/>
329
+ <ref name="figure">
330
+ <a:documentation>subfigures, nested directly within a figure</a:documentation>
331
+ </ref>
324
332
  </zeroOrMore>
333
+ <ref name="table">
334
+ <a:documentation>Table is understood in this context to be a tabular arrangement of subfigures</a:documentation>
335
+ </ref>
325
336
  </choice>
326
337
  <zeroOrMore>
327
338
  <ref name="fn">
@@ -354,17 +365,28 @@ and is intended to be referenced by a callout within the source code</a:document
354
365
  </ref>
355
366
  </optional>
356
367
  <choice>
357
- <a:documentation>Content of the figure</a:documentation>
358
- <ref name="image-no-id"/>
368
+ <a:documentation>Content of the figure </a:documentation>
369
+ <ref name="image-no-id">
370
+ <a:documentation>by default the content of a figure is a media file</a:documentation>
371
+ </ref>
359
372
  <ref name="video-no-id"/>
360
373
  <ref name="audio-no-id"/>
361
- <ref name="pre-no-id"/>
374
+ <ref name="pre-no-id">
375
+ <a:documentation>figures can contain ASCII art</a:documentation>
376
+ </ref>
362
377
  <oneOrMore>
363
- <ref name="paragraph-with-footnote-no-id"/>
378
+ <ref name="paragraph-with-footnote-no-id">
379
+ <a:documentation>figures can contain discursive art</a:documentation>
380
+ </ref>
364
381
  </oneOrMore>
365
382
  <zeroOrMore>
366
- <ref name="figure-no-id"/>
383
+ <ref name="figure-no-id">
384
+ <a:documentation>subfigures, nested directly within a figure</a:documentation>
385
+ </ref>
367
386
  </zeroOrMore>
387
+ <ref name="table-no-id">
388
+ <a:documentation>Table is understood in this context to be a tabular arrangement of subfigures</a:documentation>
389
+ </ref>
368
390
  </choice>
369
391
  <zeroOrMore>
370
392
  <ref name="fn">
@@ -876,6 +898,9 @@ titlecase, or lowercase</a:documentation>
876
898
  <data type="boolean"/>
877
899
  </attribute>
878
900
  </optional>
901
+ <ref name="LocalizedStringAttributes">
902
+ <a:documentation>Specify language of bibitem, can be used to render it with language-specific bibliographic style</a:documentation>
903
+ </ref>
879
904
  <ref name="ReducedBibliographicItem"/>
880
905
  </element>
881
906
  </define>
@@ -0,0 +1,26 @@
1
+ module Metanorma
2
+ module Ietf
3
+ class Converter
4
+ IETF_LOG_MESSAGES = {
5
+ # rubocop:disable Naming/VariableNumber
6
+ "IETF_1": { category: "Crossrefences",
7
+ error: "No matching annotation for cref:[%s]",
8
+ severity: 1 },
9
+ "IETF_2": { category: "Document Attributes",
10
+ error: "Editorial stream must have Informational status",
11
+ severity: 2 },
12
+ "IETF_3": { category: "Images",
13
+ error: "image %s is not SVG!",
14
+ severity: 1 },
15
+ "IETF_4": { category: "Document Attributes",
16
+ error: "IETF: unrecognised working group %s",
17
+ severity: 1 },
18
+ }.freeze
19
+ # rubocop:enable Naming/VariableNumber
20
+
21
+ def log_messages
22
+ super.merge(IETF_LOG_MESSAGES)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -19,15 +19,13 @@ module Metanorma
19
19
  stream = doc.at("//bibdata/series[@type = 'stream']/title")&.text
20
20
  status = doc.at("//bibdata/status/stage")&.text
21
21
  stream == "editorial" && status != "informational" and
22
- @log.add("Document Attributes", nil,
23
- "Editorial stream must have Informational status")
22
+ @log.add("IETF_2", nil)
24
23
  end
25
24
 
26
25
  def image_validate(doc)
27
26
  doc.xpath("//image").each do |i|
28
27
  i["mimetype"] == "image/svg+xml" and next
29
- @log.add("Images", i, "image #{i['src'][0, 40]} is not SVG!",
30
- severity: 1)
28
+ @log.add("IETF_3", i, params: [i["src"][0, 40]])
31
29
  end
32
30
  end
33
31
 
@@ -37,9 +35,7 @@ module Metanorma
37
35
  "organization/subdivision[@type = 'Workgroup']/name").each do |wg|
38
36
  wg_norm = wg.text.sub(/ (Working|Research) Group$/, "")
39
37
  @workgroups.include?(wg_norm) and next
40
- @log.add("Document Attributes", nil,
41
- "IETF: unrecognised working group #{wg.text}",
42
- severity: 1)
38
+ @log.add("IETF_4", nil, params: [wg.text])
43
39
  end
44
40
  end
45
41
 
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module Ietf
3
- VERSION = "3.6.4".freeze
3
+ VERSION = "3.6.6".freeze
4
4
  end
5
5
  end
@@ -20,7 +20,7 @@ template:
20
20
  # skip standardidentifier, it is inserted in front of formattedref within metanorma
21
21
  # date is cleaned up into RFC XML formatting afterwards
22
22
  # ref-included is cleaned up as referencegroup/reference in RFC XML afterwards
23
- standard: "{% if stream %}<stream>{{stream}}</stream>{% endif %} <front> <title>{{ title }}</title> {{ creatornames }} <date_cleanme='true'>{{date}}</date> {% for k in keywords %}<keyword>{{k}}</keyword>{%endfor%} <abstract_cleanme='true'>{{abstract}}</abstract> </front> {{ series }} {%for d in doi %}<seriesInfo_value='{{ d | replace: ' ', ' ' | remove_first: 'DOI' | strip }}'_name='DOI'/>{% endfor %} {% if home_standard %}{% for j in authoritative_identifier %} <seriesInfo_value='{{ j | replace: ' ', ' ' | strip | split: ' ' | last | remove_first: 'I-D.'}}'_name='{%if j contains 'I-D.'%}Internet-Draft{% else %}{{ j | replace: ' ', ' ' | strip | split: ' ' | slice: -2 }}{%endif%}'/> {% endfor %} {% else %} <refcontent>{{authoritative_identifier | join: ', '}}</refcontent> {% endif %} {% for i in included %}<ref-included target='{{ i.uris[0].content }}'> {% if i.stream %}<stream>{{i.stream}}</stream>{% endif %} <front> <title>{% if i.title %}{{ i.title}}{%else%}[TITLE]{%endif%}</title> {% if i.creatornames %}{{ i.creatornames }}{%else%}<author></author>{%endif%} <date_cleanme='true'>{{i.date}}</date> {% for k in i.keywords %}<keyword>{{k}}</keyword>{%endfor%} <abstract_cleanme='true'>{{i.abstract}}</abstract> </front> {{ series }} {%for d in i.doi %}<seriesInfo_value='{{ d | replace: ' ', ' ' | remove_first: 'DOI' | strip }}'_name='DOI'/>{% endfor %} {% if home_standard %}{% for j in i.authoritative_identifier %} <seriesInfo_value='{{ j | replace: ' ', ' ' | strip | split: ' ' | last | remove_first: 'I-D.'}}'_name='{%if j contains 'I-D.'%}Internet-Draft{% else %}{{ j | replace: ' ', ' ' | strip | split: ' ' | slice: -2 }}{%endif%}'/> {% endfor %} {% else %} <refcontent>{{i.authoritative_identifier | join: ', '}}</refcontent> {% endif %}</ref-included>{% endfor %}"
23
+ standard: "{% if stream %}<stream>{{stream}}</stream>{% endif %} <front> <title>{{ title }}</title> {{ creatornames }} <date_cleanme='true'>{{date}}</date> {% for k in keywords %}<keyword>{{k}}</keyword>{%endfor%} <abstract_cleanme='true'>{{abstract}}</abstract> </front> {%for d in doi %}<seriesInfo_value='{{ d | replace: ' ', ' ' | remove_first: 'DOI' | replace: '<esc> ': '<esc>' | replace: ' </esc>' : '</esc>' }}'_name='DOI'/>{% endfor %} {% if home_standard %}{% for j in authoritative_identifier %} <seriesInfo_value='{{ j | replace: ' ', ' ' | replace: '<esc> ': '<esc>' | replace: ' </esc>' : '</esc>' | split: ' ' | last | remove_first: 'I-D.'}}'_name='{%if j contains 'I-D.'%}Internet-Draft{% else %}{{ j | replace: ' ', ' ' | replace: '<esc> ': '<esc>' | replace: ' </esc>' : '</esc>' | split: ' ' | slice: -2 }}{%endif%}'/> {% endfor %} {% else %} <refcontent>{{authoritative_identifier | join: ', '}}</refcontent> {% endif %} {% for i in included %}<ref-included target='{{ i.uris[0].content }}'> {% if i.stream %}<stream>{{i.stream}}</stream>{% endif %} <front> <title>{% if i.title %}{{ i.title}}{%else%}[TITLE]{%endif%}</title> {% if i.creatornames %}{{ i.creatornames }}{%else%}<author></author>{%endif%} <date_cleanme='true'>{{i.date}}</date> {% for k in i.keywords %}<keyword>{{k}}</keyword>{%endfor%} <abstract_cleanme='true'>{{i.abstract}}</abstract> </front> {{ series }} {%for d in i.doi %}<seriesInfo_value='{{ d | replace: ' ', ' ' | remove_first: 'DOI' | replace: '<esc> ': '<esc>' | replace: ' </esc>' : '</esc>' }}'_name='DOI'/>{% endfor %} {% if home_standard %}{% for j in i.authoritative_identifier %} <seriesInfo_value='{{ j | replace: ' ', ' ' | replace: '<esc> ': '<esc>' | replace: ' </esc>' : '</esc>' | split: ' ' | last | remove_first: 'I-D.'}}'_name='{%if j contains 'I-D.'%}Internet-Draft{% else %}{{ j | replace: ' ', ' ' | replace: '<esc> ': '<esc>' | replace: ' </esc>' : '</esc>' | split: ' ' | slice: -2 }}{%endif%}'/> {% endfor %} {% else %} <refcontent>{{i.authoritative_identifier | join: ', '}}</refcontent> {% endif %}</ref-included>{% endfor %}"
24
24
  website: standard
25
25
  book: standard
26
26
  booklet: standard
@@ -2,7 +2,7 @@ module Relaton
2
2
  module Render
3
3
  module Ietf
4
4
  class Fields < ::Relaton::Render::Fields
5
- def nameformat(names)
5
+ def nameformat(names, hash)
6
6
  names.nil? and return names
7
7
  parts = %i(surname initials given middle nonpersonal
8
8
  nonpersonalabbrev completename)
@@ -12,7 +12,7 @@ module Relaton
12
12
  m[i] << n[i]
13
13
  end
14
14
  end
15
- @r.nametemplate.render(names_out)
15
+ @r.nametemplate.render(names_out, hash)
16
16
  end
17
17
 
18
18
  # do not format months
@@ -99,7 +99,7 @@ module Relaton
99
99
  %w(BCP STD).include?(s.title.title.content)
100
100
  end
101
101
  bcp and ret.unshift("BCP #{bcp.number}")
102
- ret.reject { |x| /^(rfc-anchor|Internet-Draft)/.match? (x) }
102
+ ret.reject { |x| /(rfc-anchor|Internet-Draft)/.match? (x) }
103
103
  end
104
104
 
105
105
  def simple_xml2hash(doc)
@@ -37,13 +37,14 @@ Gem::Specification.new do |spec|
37
37
  spec.required_ruby_version = Gem::Requirement.new(">= 3.1.0")
38
38
 
39
39
  spec.add_dependency "metanorma-ietf-data"
40
- spec.add_dependency "metanorma-standoc", "~> 3.1.0"
40
+ spec.add_dependency "metanorma-standoc", "~> 3.2.0"
41
41
  spec.add_dependency "relaton-render"
42
42
 
43
43
  spec.add_development_dependency "debug"
44
44
  spec.add_development_dependency "equivalent-xml", "~> 0.6"
45
45
  spec.add_development_dependency "guard", "~> 2.14"
46
46
  spec.add_development_dependency "guard-rspec", "~> 4.7"
47
+ spec.add_development_dependency "openssl"
47
48
  spec.add_development_dependency "rake", "~> 13.0"
48
49
  spec.add_development_dependency "rspec", "~> 3.6"
49
50
  spec.add_development_dependency "rubocop", "~> 1"
@@ -51,5 +52,5 @@ spec.add_development_dependency "rubocop-performance"
51
52
  spec.add_development_dependency "simplecov", "~> 0.15"
52
53
  spec.add_development_dependency "timecop", "~> 0.9"
53
54
  spec.add_development_dependency "webmock"
54
- spec.add_development_dependency "canon"
55
+ spec.add_development_dependency "canon", "= 0.1.3"
55
56
  end
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: 3.6.4
4
+ version: 3.6.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-09-15 00:00:00.000000000 Z
11
+ date: 2025-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: metanorma-ietf-data
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 3.1.0
33
+ version: 3.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: 3.1.0
40
+ version: 3.2.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: relaton-render
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '4.7'
111
+ - !ruby/object:Gem::Dependency
112
+ name: openssl
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: rake
113
127
  requirement: !ruby/object:Gem::Requirement
@@ -210,16 +224,16 @@ dependencies:
210
224
  name: canon
211
225
  requirement: !ruby/object:Gem::Requirement
212
226
  requirements:
213
- - - ">="
227
+ - - '='
214
228
  - !ruby/object:Gem::Version
215
- version: '0'
229
+ version: 0.1.3
216
230
  type: :development
217
231
  prerelease: false
218
232
  version_requirements: !ruby/object:Gem::Requirement
219
233
  requirements:
220
- - - ">="
234
+ - - '='
221
235
  - !ruby/object:Gem::Version
222
- version: '0'
236
+ version: 0.1.3
223
237
  description: |
224
238
  metanorma-ietf lets you write IETF documents, such as Internet-Drafts and RFCs,
225
239
  in native AsciiDoc syntax. This is part of the Metanorma publishing framework.
@@ -280,6 +294,7 @@ files:
280
294
  - lib/metanorma/ietf/front.rb
281
295
  - lib/metanorma/ietf/ietf.rng
282
296
  - lib/metanorma/ietf/isodoc.rng
297
+ - lib/metanorma/ietf/log.rb
283
298
  - lib/metanorma/ietf/macros.rb
284
299
  - lib/metanorma/ietf/processor.rb
285
300
  - lib/metanorma/ietf/relaton-ietf.rng