metanorma-ietf 3.6.5 → 3.6.7
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 +4 -4
- data/lib/isodoc/ietf/i18n-en.yaml +2 -0
- data/lib/metanorma/ietf/biblio.rng +4 -4
- data/lib/metanorma/ietf/cleanup.rb +2 -4
- data/lib/metanorma/ietf/converter.rb +6 -0
- data/lib/metanorma/ietf/front.rb +14 -7
- data/lib/metanorma/ietf/isodoc.rng +27 -10
- data/lib/metanorma/ietf/log.rb +26 -0
- data/lib/metanorma/ietf/validate.rb +3 -7
- data/lib/metanorma/ietf/version.rb +1 -1
- data/lib/relaton/render/config.yml +1 -1
- data/lib/relaton/render/fields.rb +2 -2
- data/metanorma-ietf.gemspec +2 -1
- metadata +19 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6a507adfdfc4defd2390ebf2f7fb144c2ff4fbebeaa728a5df4c786c2410f0a9
|
|
4
|
+
data.tar.gz: efb0bb23d05e4e647c3effbdf1f5555a7781ef453534bddc5f0109811e4676fb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8c2a5ebe1e425b5389a7ec27e2f00acbf35ff7cd771e3344a332ae887fed53e37adb737de71f944151569ba4657070835d59cf3708db2687e4baa2322761c96e
|
|
7
|
+
data.tar.gz: 2305e96e1affa68ad4d9dc2c6ceaf2fc747f24f25edaf071fce2a2cc78762ba411b29453cd1a80f494c02dd1cf48abe1ca654ee6fafcea6922a932a837100dd8
|
|
@@ -690,7 +690,7 @@ Examples include GRID, LEI, CrossRef, and Ringgold</a:documentation>
|
|
|
690
690
|
<define name="CitationType">
|
|
691
691
|
<attribute name="bibitemid">
|
|
692
692
|
<a:documentation>Bibliographic item that the citation applies to, referenced as the anchor of a bibliographic description</a:documentation>
|
|
693
|
-
<
|
|
693
|
+
<ref name="IdRefType"/>
|
|
694
694
|
</attribute>
|
|
695
695
|
<choice>
|
|
696
696
|
<zeroOrMore>
|
|
@@ -1296,17 +1296,17 @@ for which this claim of validity is made, if applicable</a:documentation>
|
|
|
1296
1296
|
</define>
|
|
1297
1297
|
<define name="validityBegins">
|
|
1298
1298
|
<element name="validityBegins">
|
|
1299
|
-
<ref name="
|
|
1299
|
+
<ref name="ISO8601DateTime"/>
|
|
1300
1300
|
</element>
|
|
1301
1301
|
</define>
|
|
1302
1302
|
<define name="validityEnds">
|
|
1303
1303
|
<element name="validityEnds">
|
|
1304
|
-
<ref name="
|
|
1304
|
+
<ref name="ISO8601DateTime"/>
|
|
1305
1305
|
</element>
|
|
1306
1306
|
</define>
|
|
1307
1307
|
<define name="validityRevision">
|
|
1308
1308
|
<element name="revision">
|
|
1309
|
-
<ref name="
|
|
1309
|
+
<ref name="ISO8601DateTime"/>
|
|
1310
1310
|
</element>
|
|
1311
1311
|
</define>
|
|
1312
1312
|
<define name="TypedTitleString">
|
|
@@ -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("
|
|
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
|
|
@@ -161,6 +161,10 @@ module Metanorma
|
|
|
161
161
|
end
|
|
162
162
|
end
|
|
163
163
|
|
|
164
|
+
def default_svg_conform_profile
|
|
165
|
+
:svg_1_2_rfc
|
|
166
|
+
end
|
|
167
|
+
|
|
164
168
|
def html_extract_attributes(node)
|
|
165
169
|
super.merge(usexinclude: node.attr("use-xinclude"))
|
|
166
170
|
end
|
|
@@ -178,3 +182,5 @@ module Metanorma
|
|
|
178
182
|
end
|
|
179
183
|
end
|
|
180
184
|
end
|
|
185
|
+
|
|
186
|
+
require_relative "./log"
|
data/lib/metanorma/ietf/front.rb
CHANGED
|
@@ -26,13 +26,16 @@ module Metanorma
|
|
|
26
26
|
|
|
27
27
|
def metadata_series(node, xml)
|
|
28
28
|
xml.series **{ type: "stream" } do |s|
|
|
29
|
-
s
|
|
29
|
+
add_noko_elem(s, "title", node.attr("submission-type") || "IETF")
|
|
30
|
+
# s.title (node.attr("submission-type") || "IETF")
|
|
30
31
|
end
|
|
31
32
|
a = node.attr("intended-series") and
|
|
32
33
|
xml.series **{ type: "intended" } do |s|
|
|
33
34
|
parts = a.split(/ /)
|
|
34
|
-
s
|
|
35
|
-
s.
|
|
35
|
+
add_noko_elem(s, "title", parts[0])
|
|
36
|
+
# s.title parts[0]
|
|
37
|
+
add_noko_elem(s, "number", parts[1..-1].join(" ")) if parts.size > 1
|
|
38
|
+
# s.number parts[1..-1].join(" ") if parts.size > 1
|
|
36
39
|
end
|
|
37
40
|
end
|
|
38
41
|
|
|
@@ -53,16 +56,20 @@ module Metanorma
|
|
|
53
56
|
def metadata_ext(node, xml)
|
|
54
57
|
super
|
|
55
58
|
x = node.attr("area") and x.split(/,\s*/).each do |a|
|
|
56
|
-
xml
|
|
59
|
+
add_noko_elem(xml, "area", a)
|
|
60
|
+
# xml.area a
|
|
57
61
|
end
|
|
58
|
-
xml
|
|
62
|
+
add_noko_elem(xml, "ipr", node.attr("ipr") || "trust200902")
|
|
63
|
+
# xml.ipr (node.attr("ipr") || "trust200902")
|
|
59
64
|
x = node.attr("consensus") and xml.consensus (x != "false")
|
|
60
65
|
x = node.attr("index-include") and xml.indexInclude (x != "false")
|
|
61
|
-
|
|
66
|
+
add_noko_elem(xml, "iprExtract", node.attr("ipr-extract"))
|
|
67
|
+
# x = node.attr("ipr-extract") and xml.iprExtract x
|
|
62
68
|
x = node.attr("sort-refs") and xml.sortRefs (x != "false")
|
|
63
69
|
x = node.attr("sym-refs") and xml.symRefs (x != "false")
|
|
64
70
|
x = node.attr("toc-include") and xml.tocInclude (x != "false")
|
|
65
|
-
|
|
71
|
+
add_noko_elem(xml, "tocDepth", node.attr("toc-depth"))
|
|
72
|
+
# x = node.attr("toc-depth") and xml.tocDepth x
|
|
66
73
|
x = node.attr("show-on-front-page") and xml.showOnFrontPage (x != "false")
|
|
67
74
|
xml.pi { |pi| set_pi(node, pi) }
|
|
68
75
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
2
|
<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
|
3
|
-
<!-- VERSION v2.1.
|
|
3
|
+
<!-- VERSION v2.1.4 -->
|
|
4
4
|
|
|
5
5
|
<!--
|
|
6
6
|
ALERT: cannot have root comments, because of https://github.com/metanorma/metanorma/issues/437
|
|
@@ -905,15 +905,32 @@ titlecase, or lowercase</a:documentation>
|
|
|
905
905
|
</element>
|
|
906
906
|
</define>
|
|
907
907
|
<define name="image" combine="choice">
|
|
908
|
-
<
|
|
909
|
-
<
|
|
910
|
-
|
|
911
|
-
<
|
|
912
|
-
|
|
913
|
-
<
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
908
|
+
<choice>
|
|
909
|
+
<element name="image">
|
|
910
|
+
<ref name="RequiredId"/>
|
|
911
|
+
<ref name="ImageAttributes"/>
|
|
912
|
+
<optional>
|
|
913
|
+
<element name="svg">
|
|
914
|
+
<a:documentation>Allow svg in image/svg, for consistency</a:documentation>
|
|
915
|
+
<oneOrMore>
|
|
916
|
+
<choice>
|
|
917
|
+
<text/>
|
|
918
|
+
<ref name="AnyElement"/>
|
|
919
|
+
</choice>
|
|
920
|
+
</oneOrMore>
|
|
921
|
+
</element>
|
|
922
|
+
</optional>
|
|
923
|
+
</element>
|
|
924
|
+
<element name="svg">
|
|
925
|
+
<a:documentation>Add svg mark up to image</a:documentation>
|
|
926
|
+
<oneOrMore>
|
|
927
|
+
<choice>
|
|
928
|
+
<text/>
|
|
929
|
+
<ref name="AnyElement"/>
|
|
930
|
+
</choice>
|
|
931
|
+
</oneOrMore>
|
|
932
|
+
</element>
|
|
933
|
+
</choice>
|
|
917
934
|
</define>
|
|
918
935
|
<define name="ParagraphFnBody" combine="interleave">
|
|
919
936
|
<ref name="BlockSource">
|
|
@@ -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("
|
|
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("
|
|
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("
|
|
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
|
|
|
@@ -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> {
|
|
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
|
data/metanorma-ietf.gemspec
CHANGED
|
@@ -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.
|
|
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"
|
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
|
+
version: 3.6.7
|
|
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-
|
|
11
|
+
date: 2025-11-17 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.
|
|
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.
|
|
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
|
|
@@ -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
|