metanorma-ietf 3.2.2 → 3.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/isodoc/ietf/cleanup.rb +65 -14
- data/lib/isodoc/ietf/references.rb +24 -122
- data/lib/isodoc/ietf/validation.rb +1 -0
- data/lib/metanorma/ietf/basicdoc.rng +56 -37
- data/lib/metanorma/ietf/biblio.rng +10 -1
- data/lib/metanorma/ietf/cleanup.rb +1 -1
- data/lib/metanorma/ietf/isodoc.rng +52 -1
- data/lib/metanorma/ietf/processor.rb +1 -0
- data/lib/metanorma/ietf/version.rb +1 -1
- data/lib/relaton/render/config.yml +59 -0
- data/lib/relaton/render/fields.rb +26 -0
- data/lib/relaton/render/general.rb +23 -0
- data/lib/relaton/render/parse.rb +101 -0
- data/lib/relaton/render/template.rb +29 -0
- data/metanorma-ietf.gemspec +2 -1
- metadata +23 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 15679fd3c253726b9f401c099a73c02f242a946eb358b4c7dc025f13d5aa0ed8
|
4
|
+
data.tar.gz: c2fef641bba26aff816757f36a6f61642190f0120874c2a01165a2513b5bb5db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25c51c60d9b85a0693db8c21f3159b4875fbb0cb430a0cdbf17b33d527d1ace7106bc118d9dde7f0b607953c1c459b43688c4121e110379ef7420336822d0861
|
7
|
+
data.tar.gz: ca609bafe3ade87598fd0b87de4de63e6649a2c1e976f0f94768e778c98c0163561eac55a2d20d6872e8b48cb46ac5c0791ee2590827047e83c4b018521a0557
|
data/lib/isodoc/ietf/cleanup.rb
CHANGED
@@ -9,17 +9,64 @@ module IsoDoc
|
|
9
9
|
table_cleanup(docxml)
|
10
10
|
footnote_cleanup(docxml)
|
11
11
|
sourcecode_cleanup(docxml)
|
12
|
-
annotation_cleanup(docxml)
|
13
12
|
li_cleanup(docxml)
|
14
13
|
deflist_cleanup(docxml)
|
15
14
|
bookmark_cleanup(docxml)
|
16
15
|
cref_cleanup(docxml)
|
17
|
-
aside_cleanup(docxml)
|
18
16
|
front_cleanup(docxml)
|
19
17
|
u_cleanup(docxml)
|
18
|
+
biblio_cleanup(docxml) # feeds aside
|
19
|
+
aside_cleanup(docxml)
|
20
20
|
docxml
|
21
21
|
end
|
22
22
|
|
23
|
+
def biblio_cleanup(xmldoc)
|
24
|
+
biblio_abstract_cleanup(xmldoc)
|
25
|
+
biblio_date_cleanup(xmldoc)
|
26
|
+
biblio_refcontent_cleanup(xmldoc)
|
27
|
+
annotation_cleanup(xmldoc)
|
28
|
+
end
|
29
|
+
|
30
|
+
def biblio_date_cleanup(xmldoc)
|
31
|
+
xmldoc.xpath("//date[@cleanme]").each do |a|
|
32
|
+
a.delete("cleanme")
|
33
|
+
d = @c.decode(a.text).gsub(/–/, "-").sub(/-\d\d\d\d.*$/, "")
|
34
|
+
if attrs = date_attr(d)
|
35
|
+
attrs.each do |k, v|
|
36
|
+
a[k] = v
|
37
|
+
end
|
38
|
+
a.children.remove
|
39
|
+
else a.remove end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def biblio_abstract_cleanup(xmldoc)
|
44
|
+
xmldoc.xpath("//abstract[@cleanme]").each do |a|
|
45
|
+
a.delete("cleanme")
|
46
|
+
ret = reparse_abstract(a)
|
47
|
+
a.children = if a.at("./p") then ret
|
48
|
+
else "<t>#{ret}</t>"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def biblio_refcontent_cleanup(xmldoc)
|
54
|
+
xmldoc.xpath("//refcontent").each do |a|
|
55
|
+
val = a.text.strip
|
56
|
+
if val.empty? then a.remove
|
57
|
+
else a.children = val
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def reparse_abstract(abstract)
|
63
|
+
a1 = Nokogiri::XML(abstract.dup.to_xml
|
64
|
+
.sub("<abstract>", "<abstract xmlns='http://www.example.com'>")).root
|
65
|
+
noko do |xml|
|
66
|
+
a1.children.each { |n| parse(n, xml) }
|
67
|
+
end.join
|
68
|
+
end
|
69
|
+
|
23
70
|
def li_cleanup(xmldoc)
|
24
71
|
xmldoc.xpath("//li[t]").each do |li|
|
25
72
|
next unless li.elements.size == 1
|
@@ -93,10 +140,10 @@ module IsoDoc
|
|
93
140
|
|
94
141
|
def make_postamble(docxml)
|
95
142
|
docxml.xpath("//figure").each do |f|
|
96
|
-
a = f
|
97
|
-
name = f
|
98
|
-
b = a
|
99
|
-
c = a
|
143
|
+
a = f.at("./artwork | ./sourcecode") || next
|
144
|
+
name = f.at("./name")&.remove
|
145
|
+
b = a.xpath("./preceding-sibling::*")&.remove
|
146
|
+
c = a.xpath("./following-sibling::*")&.remove
|
100
147
|
a = a.remove
|
101
148
|
name and f << name
|
102
149
|
b.empty? or f << "<preamble>#{to_xml(b)}</preamble>"
|
@@ -151,18 +198,22 @@ module IsoDoc
|
|
151
198
|
|
152
199
|
def annotation_cleanup(docxml)
|
153
200
|
docxml.xpath("//reference").each do |r|
|
154
|
-
|
155
|
-
|
156
|
-
aside = r.next_element
|
157
|
-
aside.name = "annotation"
|
158
|
-
aside.traverse do |n|
|
159
|
-
n.name == "t" and n.replace(n.children)
|
201
|
+
while r.next_element&.name == "aside"
|
202
|
+
annotation_cleanup1(r)
|
160
203
|
end
|
161
|
-
r << aside
|
162
204
|
end
|
163
205
|
docxml.xpath("//references/aside").each(&:remove)
|
164
206
|
end
|
165
207
|
|
208
|
+
def annotation_cleanup1(ref)
|
209
|
+
aside = ref.next_element
|
210
|
+
aside.name = "annotation"
|
211
|
+
aside.traverse do |n|
|
212
|
+
n.name == "t" and n.replace(n.children)
|
213
|
+
end
|
214
|
+
ref << aside
|
215
|
+
end
|
216
|
+
|
166
217
|
def deflist_cleanup(docxml)
|
167
218
|
dt_cleanup(docxml)
|
168
219
|
dd_cleanup(docxml)
|
@@ -170,7 +221,7 @@ module IsoDoc
|
|
170
221
|
|
171
222
|
def dt_cleanup(docxml)
|
172
223
|
docxml.xpath("//dt").each do |d|
|
173
|
-
d
|
224
|
+
d.first_element_child&.name == "bookmark" and
|
174
225
|
d["anchor"] ||= d.first_element_child["anchor"]
|
175
226
|
d.xpath(".//t").each do |t|
|
176
227
|
d["anchor"] ||= t["anchor"]
|
@@ -1,11 +1,11 @@
|
|
1
|
+
require_relative "../../relaton/render/general"
|
2
|
+
|
1
3
|
module IsoDoc
|
2
4
|
module Ietf
|
3
5
|
class RfcConvert < ::IsoDoc::Convert
|
4
|
-
def bibliography(
|
5
|
-
|
6
|
-
|
7
|
-
end
|
8
|
-
isoxml.xpath(ns("//bibliography/references | " \
|
6
|
+
def bibliography(docxml, out)
|
7
|
+
bibliography_prep(docxml)
|
8
|
+
docxml.xpath(ns("//bibliography/references | " \
|
9
9
|
"//bibliography/clause[.//references] | " \
|
10
10
|
"//annex/clause[.//references] | " \
|
11
11
|
"//annex/references | " \
|
@@ -14,6 +14,15 @@ module IsoDoc
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
+
def bibliography_prep(docxml)
|
18
|
+
docxml.xpath(ns("//references/bibitem/docidentifier")).each do |i|
|
19
|
+
i.children = docid_prefix(i["type"], i.text)
|
20
|
+
end
|
21
|
+
@bibrenderer =
|
22
|
+
::Relaton::Render::Ietf::General.new(language: @lang,
|
23
|
+
i18nhash: @i18n.get)
|
24
|
+
end
|
25
|
+
|
17
26
|
def bibliography1(node, out)
|
18
27
|
out.references **attr_code(anchor: node["id"]) do |div|
|
19
28
|
title = node.at(ns("./title")) and div.name do |name|
|
@@ -29,7 +38,7 @@ module IsoDoc
|
|
29
38
|
end
|
30
39
|
end
|
31
40
|
|
32
|
-
def biblio_list(node, div,
|
41
|
+
def biblio_list(node, div, _biblio)
|
33
42
|
i = 0
|
34
43
|
node.xpath(ns("./bibitem | ./note")).each do |b|
|
35
44
|
next if implicit_reference(b)
|
@@ -37,133 +46,26 @@ module IsoDoc
|
|
37
46
|
i += 1 if b.name == "bibitem"
|
38
47
|
if b.name == "note" then note_parse(b, div)
|
39
48
|
else
|
40
|
-
|
49
|
+
ietf_bibitem(div, b, i)
|
41
50
|
end
|
42
51
|
end
|
43
52
|
end
|
44
53
|
|
45
|
-
def
|
54
|
+
def ietf_bibitem(list, bib, _ordinal)
|
46
55
|
uris = bib.xpath(ns("./uri"))
|
47
56
|
target = nil
|
48
57
|
uris&.each { |u| target = u.text if u["type"] == "src" }
|
49
58
|
list.reference **attr_code(target: target,
|
50
59
|
anchor: bib["id"]) do |r|
|
51
|
-
|
52
|
-
|
53
|
-
r.format nil, **attr_code(target: u.text, type: u["type"])
|
54
|
-
end
|
55
|
-
docidentifier_render(bib, r)
|
56
|
-
end
|
60
|
+
bibitem_render(r, bib)
|
61
|
+
end
|
57
62
|
end
|
58
63
|
|
59
|
-
def
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
u["type"] == "DOI" and
|
65
|
-
out.seriesInfo nil, **attr_code(value: u.text.sub(/^DOI[ ]/, ""),
|
66
|
-
name: "DOI")
|
67
|
-
%w(IETF RFC).include?(u["type"]) and docidentifier_ietf(u, out)
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
def docidentifier_ietf(ident, out)
|
72
|
-
if /^RFC[ ]/.match?(ident.text)
|
73
|
-
out.seriesInfo nil, **attr_code(value: ident.text.sub(/^RFC[ ]0*/, ""),
|
74
|
-
name: "RFC")
|
75
|
-
elsif /^I-D\./.match?(ident.text)
|
76
|
-
out.seriesInfo nil, **attr_code(value: ident.text.sub(/^I-D\./, ""),
|
77
|
-
name: "Internet-Draft")
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
def nonstd_bibitem_front(ref, bib)
|
82
|
-
ref.front do |f|
|
83
|
-
relaton_to_title(bib, f)
|
84
|
-
relaton_to_author(bib, f)
|
85
|
-
relaton_to_date(bib, f)
|
86
|
-
relaton_to_keyword(bib, f)
|
87
|
-
relaton_to_abstract(bib, f)
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
def relaton_to_title(bib, node)
|
92
|
-
title = bib&.at(ns("./title")) || bib&.at(ns("./formattedref")) or
|
93
|
-
return
|
94
|
-
node.title do |t|
|
95
|
-
title.children.each { |n| parse(n, t) }
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
def relaton_to_author(bib, node)
|
100
|
-
auths = bib.xpath(ns("./contributor[xmlns:role/@type = 'author' or " \
|
101
|
-
"xmlns:role/@type = 'editor']"))
|
102
|
-
auths.empty? and
|
103
|
-
auths = bib.xpath(ns("./contributor[xmlns:role/@type = " \
|
104
|
-
"'publisher']"))
|
105
|
-
auths.each do |a|
|
106
|
-
role = a.at(ns("./role[@type = 'editor']")) ? "editor" : nil
|
107
|
-
(p = a&.at(ns("./person/name")) and
|
108
|
-
relaton_person_to_author(p, role, node)) or
|
109
|
-
relaton_org_to_author(a&.at(ns("./organization")), role, node)
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
def relaton_person_to_author(pers, role, node)
|
114
|
-
full = pers.at(ns("./completename"))&.text
|
115
|
-
surname = pers.at(ns("./surname"))&.text
|
116
|
-
initials = pers.xpath(ns("./initial"))&.map(&:text)&.join(" ") ||
|
117
|
-
pers.xpath(ns("./forename"))&.map { |i| i.text[0] }&.join(" ")
|
118
|
-
initials = nil if initials.empty?
|
119
|
-
node.author nil, **attr_code(
|
120
|
-
fullname: full,
|
121
|
-
asciiFullname: full&.transliterate,
|
122
|
-
role: role, surname: surname,
|
123
|
-
initials: initials,
|
124
|
-
asciiSurname: full ? surname&.transliterate : nil,
|
125
|
-
asciiInitials: full ? initials&.transliterate : nil
|
126
|
-
)
|
127
|
-
end
|
128
|
-
|
129
|
-
def relaton_org_to_author(org, _role, node)
|
130
|
-
name = org&.at(ns("./name"))&.text
|
131
|
-
abbrev = org&.at(ns("./abbreviation"))&.text
|
132
|
-
node.author do |_a|
|
133
|
-
node.organization name, **attr_code(ascii: name&.transliterate,
|
134
|
-
abbrev: abbrev)
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
def relaton_to_date(bib, node)
|
139
|
-
date = bib.at(ns("./date[@type = 'published']")) ||
|
140
|
-
bib.at(ns("./date[@type = 'issued']")) ||
|
141
|
-
bib.at(ns("./date[@type = 'circulated']"))
|
142
|
-
date or return
|
143
|
-
attr = date_attr(date.at(ns("./on | ./from"))&.text) or return
|
144
|
-
node.date **attr_code(attr)
|
145
|
-
end
|
146
|
-
|
147
|
-
def relaton_to_keyword(bib, node)
|
148
|
-
bib.xpath(ns("./keyword")).each do |k|
|
149
|
-
node.keyword do |keyword|
|
150
|
-
k.children.each { |n| parse(n, keyword) }
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
def relaton_to_abstract(bib, node)
|
156
|
-
bib.xpath(ns("./abstract")).each do |k|
|
157
|
-
node.abstract do |abstract|
|
158
|
-
if k.at(ns("./p"))
|
159
|
-
k.children.each { |n| parse(n, abstract) }
|
160
|
-
else
|
161
|
-
abstract.t do |t|
|
162
|
-
k.children.each { |n| parse(n, t) }
|
163
|
-
end
|
164
|
-
end
|
165
|
-
end
|
166
|
-
end
|
64
|
+
def bibitem_render(ref, bib)
|
65
|
+
bib1 = bib.clone
|
66
|
+
@isodoc.prep_for_rendering(bib1)
|
67
|
+
bib1.namespace = nil
|
68
|
+
ref << @bibrenderer.render(bib1.to_xml, embedded: true)
|
167
69
|
end
|
168
70
|
end
|
169
71
|
end
|
@@ -346,6 +346,8 @@
|
|
346
346
|
<ref name="keyword"/>
|
347
347
|
<ref name="xref"/>
|
348
348
|
<ref name="hyperlink"/>
|
349
|
+
<ref name="index"/>
|
350
|
+
<ref name="index-xref"/>
|
349
351
|
</choice>
|
350
352
|
</oneOrMore>
|
351
353
|
</element>
|
@@ -623,6 +625,8 @@
|
|
623
625
|
<ref name="eref"/>
|
624
626
|
<ref name="xref"/>
|
625
627
|
<ref name="hyperlink"/>
|
628
|
+
<ref name="index"/>
|
629
|
+
<ref name="index-xref"/>
|
626
630
|
</choice>
|
627
631
|
</zeroOrMore>
|
628
632
|
</element>
|
@@ -636,6 +640,8 @@
|
|
636
640
|
<ref name="eref"/>
|
637
641
|
<ref name="xref"/>
|
638
642
|
<ref name="hyperlink"/>
|
643
|
+
<ref name="index"/>
|
644
|
+
<ref name="index-xref"/>
|
639
645
|
</choice>
|
640
646
|
</zeroOrMore>
|
641
647
|
</element>
|
@@ -648,6 +654,8 @@
|
|
648
654
|
<ref name="eref"/>
|
649
655
|
<ref name="xref"/>
|
650
656
|
<ref name="hyperlink"/>
|
657
|
+
<ref name="index"/>
|
658
|
+
<ref name="index-xref"/>
|
651
659
|
</choice>
|
652
660
|
</zeroOrMore>
|
653
661
|
</element>
|
@@ -655,7 +663,11 @@
|
|
655
663
|
<define name="keyword">
|
656
664
|
<element name="keyword">
|
657
665
|
<zeroOrMore>
|
658
|
-
<
|
666
|
+
<choice>
|
667
|
+
<ref name="PureTextElement"/>
|
668
|
+
<ref name="index"/>
|
669
|
+
<ref name="index-xref"/>
|
670
|
+
</choice>
|
659
671
|
</zeroOrMore>
|
660
672
|
</element>
|
661
673
|
</define>
|
@@ -676,7 +688,11 @@
|
|
676
688
|
<define name="strike">
|
677
689
|
<element name="strike">
|
678
690
|
<zeroOrMore>
|
679
|
-
<
|
691
|
+
<choice>
|
692
|
+
<ref name="PureTextElement"/>
|
693
|
+
<ref name="index"/>
|
694
|
+
<ref name="index-xref"/>
|
695
|
+
</choice>
|
680
696
|
</zeroOrMore>
|
681
697
|
</element>
|
682
698
|
</define>
|
@@ -898,44 +914,47 @@
|
|
898
914
|
-->
|
899
915
|
<define name="image">
|
900
916
|
<element name="image">
|
901
|
-
<
|
902
|
-
|
917
|
+
<ref name="Image"/>
|
918
|
+
</element>
|
919
|
+
</define>
|
920
|
+
<define name="Image">
|
921
|
+
<attribute name="id">
|
922
|
+
<data type="ID"/>
|
923
|
+
</attribute>
|
924
|
+
<attribute name="src">
|
925
|
+
<data type="anyURI"/>
|
926
|
+
</attribute>
|
927
|
+
<attribute name="mimetype"/>
|
928
|
+
<optional>
|
929
|
+
<attribute name="filename"/>
|
930
|
+
</optional>
|
931
|
+
<optional>
|
932
|
+
<attribute name="width">
|
933
|
+
<choice>
|
934
|
+
<data type="int"/>
|
935
|
+
<value>auto</value>
|
936
|
+
</choice>
|
903
937
|
</attribute>
|
904
|
-
|
938
|
+
</optional>
|
939
|
+
<optional>
|
940
|
+
<attribute name="height">
|
941
|
+
<choice>
|
942
|
+
<data type="int"/>
|
943
|
+
<value>auto</value>
|
944
|
+
</choice>
|
945
|
+
</attribute>
|
946
|
+
</optional>
|
947
|
+
<optional>
|
948
|
+
<attribute name="alt"/>
|
949
|
+
</optional>
|
950
|
+
<optional>
|
951
|
+
<attribute name="title"/>
|
952
|
+
</optional>
|
953
|
+
<optional>
|
954
|
+
<attribute name="longdesc">
|
905
955
|
<data type="anyURI"/>
|
906
956
|
</attribute>
|
907
|
-
|
908
|
-
<optional>
|
909
|
-
<attribute name="filename"/>
|
910
|
-
</optional>
|
911
|
-
<optional>
|
912
|
-
<attribute name="width">
|
913
|
-
<choice>
|
914
|
-
<data type="int"/>
|
915
|
-
<value>auto</value>
|
916
|
-
</choice>
|
917
|
-
</attribute>
|
918
|
-
</optional>
|
919
|
-
<optional>
|
920
|
-
<attribute name="height">
|
921
|
-
<choice>
|
922
|
-
<data type="int"/>
|
923
|
-
<value>auto</value>
|
924
|
-
</choice>
|
925
|
-
</attribute>
|
926
|
-
</optional>
|
927
|
-
<optional>
|
928
|
-
<attribute name="alt"/>
|
929
|
-
</optional>
|
930
|
-
<optional>
|
931
|
-
<attribute name="title"/>
|
932
|
-
</optional>
|
933
|
-
<optional>
|
934
|
-
<attribute name="longdesc">
|
935
|
-
<data type="anyURI"/>
|
936
|
-
</attribute>
|
937
|
-
</optional>
|
938
|
-
</element>
|
957
|
+
</optional>
|
939
958
|
</define>
|
940
959
|
<define name="video">
|
941
960
|
<element name="video">
|
@@ -348,6 +348,9 @@
|
|
348
348
|
<zeroOrMore>
|
349
349
|
<ref name="contact"/>
|
350
350
|
</zeroOrMore>
|
351
|
+
<optional>
|
352
|
+
<ref name="logo"/>
|
353
|
+
</optional>
|
351
354
|
</element>
|
352
355
|
</define>
|
353
356
|
<define name="orgname">
|
@@ -366,6 +369,11 @@
|
|
366
369
|
</choice>
|
367
370
|
</element>
|
368
371
|
</define>
|
372
|
+
<define name="logo">
|
373
|
+
<element name="logo">
|
374
|
+
<ref name="image"/>
|
375
|
+
</element>
|
376
|
+
</define>
|
369
377
|
<define name="NameWithVariants">
|
370
378
|
<element name="primary">
|
371
379
|
<ref name="LocalizedString"/>
|
@@ -942,6 +950,7 @@
|
|
942
950
|
<value>obsoleted</value>
|
943
951
|
<value>confirmed</value>
|
944
952
|
<value>updated</value>
|
953
|
+
<value>corrected</value>
|
945
954
|
<value>issued</value>
|
946
955
|
<value>transmitted</value>
|
947
956
|
<value>copied</value>
|
@@ -1283,7 +1292,7 @@
|
|
1283
1292
|
<value>mergedInto</value>
|
1284
1293
|
<value>splits</value>
|
1285
1294
|
<value>splitInto</value>
|
1286
|
-
<value>
|
1295
|
+
<value>instanceOf</value>
|
1287
1296
|
<value>hasInstance</value>
|
1288
1297
|
<value>exemplarOf</value>
|
1289
1298
|
<value>hasExemplar</value>
|
@@ -29,7 +29,7 @@ module Metanorma
|
|
29
29
|
|
30
30
|
BCP_KEYWORDS = ["MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
|
31
31
|
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
|
32
|
-
"OPTIONAL"].freeze
|
32
|
+
"NOT RECOMMENDED", "OPTIONAL"].freeze
|
33
33
|
|
34
34
|
def bcp14_cleanup(xmldoc)
|
35
35
|
return unless @bcp_bold
|
@@ -17,7 +17,7 @@
|
|
17
17
|
these elements; we just want one namespace for any child grammars
|
18
18
|
of this.
|
19
19
|
-->
|
20
|
-
<!-- VERSION v1.2.
|
20
|
+
<!-- VERSION v1.2.8 -->
|
21
21
|
<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">
|
22
22
|
<include href="reqt.rng"/>
|
23
23
|
<include href="basicdoc.rng">
|
@@ -485,6 +485,8 @@
|
|
485
485
|
<choice>
|
486
486
|
<text/>
|
487
487
|
<ref name="callout"/>
|
488
|
+
<ref name="xref"/>
|
489
|
+
<ref name="eref"/>
|
488
490
|
</choice>
|
489
491
|
</oneOrMore>
|
490
492
|
<zeroOrMore>
|
@@ -865,6 +867,7 @@
|
|
865
867
|
<ref name="PureTextElement"/>
|
866
868
|
<ref name="stem"/>
|
867
869
|
<ref name="index"/>
|
870
|
+
<ref name="index-xref"/>
|
868
871
|
<ref name="eref"/>
|
869
872
|
<ref name="erefstack"/>
|
870
873
|
<ref name="xref"/>
|
@@ -880,6 +883,7 @@
|
|
880
883
|
<ref name="PureTextElement"/>
|
881
884
|
<ref name="stem"/>
|
882
885
|
<ref name="index"/>
|
886
|
+
<ref name="index-xref"/>
|
883
887
|
<ref name="eref"/>
|
884
888
|
<ref name="erefstack"/>
|
885
889
|
<ref name="xref"/>
|
@@ -894,6 +898,7 @@
|
|
894
898
|
<choice>
|
895
899
|
<ref name="PureTextElement"/>
|
896
900
|
<ref name="index"/>
|
901
|
+
<ref name="index-xref"/>
|
897
902
|
<ref name="eref"/>
|
898
903
|
<ref name="erefstack"/>
|
899
904
|
<ref name="xref"/>
|
@@ -908,6 +913,7 @@
|
|
908
913
|
<choice>
|
909
914
|
<ref name="PureTextElement"/>
|
910
915
|
<ref name="index"/>
|
916
|
+
<ref name="index-xref"/>
|
911
917
|
</choice>
|
912
918
|
</zeroOrMore>
|
913
919
|
</element>
|
@@ -918,6 +924,7 @@
|
|
918
924
|
<choice>
|
919
925
|
<ref name="PureTextElement"/>
|
920
926
|
<ref name="index"/>
|
927
|
+
<ref name="index-xref"/>
|
921
928
|
</choice>
|
922
929
|
</zeroOrMore>
|
923
930
|
</element>
|
@@ -928,6 +935,7 @@
|
|
928
935
|
<choice>
|
929
936
|
<ref name="PureTextElement"/>
|
930
937
|
<ref name="index"/>
|
938
|
+
<ref name="index-xref"/>
|
931
939
|
</choice>
|
932
940
|
</zeroOrMore>
|
933
941
|
</element>
|
@@ -938,6 +946,7 @@
|
|
938
946
|
<choice>
|
939
947
|
<ref name="PureTextElement"/>
|
940
948
|
<ref name="index"/>
|
949
|
+
<ref name="index-xref"/>
|
941
950
|
</choice>
|
942
951
|
</zeroOrMore>
|
943
952
|
</element>
|
@@ -1004,6 +1013,14 @@
|
|
1004
1013
|
</oneOrMore>
|
1005
1014
|
</element>
|
1006
1015
|
</define>
|
1016
|
+
<define name="BasicBlock" combine="choice">
|
1017
|
+
<ref name="columnbreak"/>
|
1018
|
+
</define>
|
1019
|
+
<define name="columnbreak">
|
1020
|
+
<element name="columnbreak">
|
1021
|
+
<empty/>
|
1022
|
+
</element>
|
1023
|
+
</define>
|
1007
1024
|
<define name="MultilingualRenderingType">
|
1008
1025
|
<choice>
|
1009
1026
|
<value>common</value>
|
@@ -1037,6 +1054,17 @@
|
|
1037
1054
|
<ref name="date_inline"/>
|
1038
1055
|
</choice>
|
1039
1056
|
</define>
|
1057
|
+
<define name="PureTextElement" combine="choice">
|
1058
|
+
<ref name="passthrough_inline"/>
|
1059
|
+
</define>
|
1060
|
+
<define name="passthrough_inline">
|
1061
|
+
<element name="passthrough">
|
1062
|
+
<optional>
|
1063
|
+
<attribute name="formats"/>
|
1064
|
+
</optional>
|
1065
|
+
<text/>
|
1066
|
+
</element>
|
1067
|
+
</define>
|
1040
1068
|
<define name="add">
|
1041
1069
|
<element name="add">
|
1042
1070
|
<choice>
|
@@ -1047,6 +1075,8 @@
|
|
1047
1075
|
<ref name="keyword"/>
|
1048
1076
|
<ref name="xref"/>
|
1049
1077
|
<ref name="hyperlink"/>
|
1078
|
+
<ref name="index"/>
|
1079
|
+
<ref name="index-xref"/>
|
1050
1080
|
</choice>
|
1051
1081
|
</element>
|
1052
1082
|
</define>
|
@@ -1060,6 +1090,8 @@
|
|
1060
1090
|
<ref name="keyword"/>
|
1061
1091
|
<ref name="xref"/>
|
1062
1092
|
<ref name="hyperlink"/>
|
1093
|
+
<ref name="index"/>
|
1094
|
+
<ref name="index-xref"/>
|
1063
1095
|
</choice>
|
1064
1096
|
</element>
|
1065
1097
|
</define>
|
@@ -1071,6 +1103,9 @@
|
|
1071
1103
|
<optional>
|
1072
1104
|
<attribute name="style"/>
|
1073
1105
|
</optional>
|
1106
|
+
<optional>
|
1107
|
+
<attribute name="custom-charset"/>
|
1108
|
+
</optional>
|
1074
1109
|
<oneOrMore>
|
1075
1110
|
<ref name="TextElement"/>
|
1076
1111
|
</oneOrMore>
|
@@ -1126,6 +1161,8 @@
|
|
1126
1161
|
<choice>
|
1127
1162
|
<ref name="PureTextElement"/>
|
1128
1163
|
<ref name="stem"/>
|
1164
|
+
<ref name="index"/>
|
1165
|
+
<ref name="index-xref"/>
|
1129
1166
|
</choice>
|
1130
1167
|
</zeroOrMore>
|
1131
1168
|
</element>
|
@@ -1136,6 +1173,8 @@
|
|
1136
1173
|
<choice>
|
1137
1174
|
<ref name="PureTextElement"/>
|
1138
1175
|
<ref name="stem"/>
|
1176
|
+
<ref name="index"/>
|
1177
|
+
<ref name="index-xref"/>
|
1139
1178
|
</choice>
|
1140
1179
|
</zeroOrMore>
|
1141
1180
|
</element>
|
@@ -1369,6 +1408,9 @@
|
|
1369
1408
|
<optional>
|
1370
1409
|
<attribute name="number"/>
|
1371
1410
|
</optional>
|
1411
|
+
<optional>
|
1412
|
+
<attribute name="branch-number"/>
|
1413
|
+
</optional>
|
1372
1414
|
<optional>
|
1373
1415
|
<attribute name="obligation">
|
1374
1416
|
<choice>
|
@@ -1592,6 +1634,9 @@
|
|
1592
1634
|
<optional>
|
1593
1635
|
<attribute name="number"/>
|
1594
1636
|
</optional>
|
1637
|
+
<optional>
|
1638
|
+
<attribute name="branch-number"/>
|
1639
|
+
</optional>
|
1595
1640
|
<optional>
|
1596
1641
|
<attribute name="type"/>
|
1597
1642
|
</optional>
|
@@ -1643,6 +1688,9 @@
|
|
1643
1688
|
<optional>
|
1644
1689
|
<attribute name="number"/>
|
1645
1690
|
</optional>
|
1691
|
+
<optional>
|
1692
|
+
<attribute name="branch-number"/>
|
1693
|
+
</optional>
|
1646
1694
|
<optional>
|
1647
1695
|
<ref name="section-title"/>
|
1648
1696
|
</optional>
|
@@ -1740,6 +1788,9 @@
|
|
1740
1788
|
<optional>
|
1741
1789
|
<attribute name="number"/>
|
1742
1790
|
</optional>
|
1791
|
+
<optional>
|
1792
|
+
<attribute name="branch-number"/>
|
1793
|
+
</optional>
|
1743
1794
|
<optional>
|
1744
1795
|
<attribute name="obligation">
|
1745
1796
|
<choice>
|
@@ -0,0 +1,59 @@
|
|
1
|
+
extenttemplate:
|
2
|
+
book: "{{ volume }} {{ page }}"
|
3
|
+
booklet: book
|
4
|
+
proceedings: book
|
5
|
+
journal: book
|
6
|
+
standard: book
|
7
|
+
techreport: book
|
8
|
+
inbook: "{{ volume }} {{ page }}"
|
9
|
+
misc: "{{ volume }} {{issue}} {{ page }}, {{ duration }}"
|
10
|
+
nametemplate:
|
11
|
+
one: "{% if nonpersonal[0] %}<author><organization_ascii='{{nonpersonal[0] | ascii }}'{% if nonpersonalabbrev[0] %}_abbrev='{{ nonpersonalabbrev[0]}}'{% endif %}>{{ nonpersonal[0] }}</organization></author>{% else %}{% if surname[0] %}<author_surname='{{surname[0]}}'_asciiSurname='{{surname[0] | ascii }}'_initials='{{initials[0] | join: ''}}'_asciiInitials='{{initials[0] | join: '' | ascii}}'{%if role[0] %}_role='{{role[0]}}'{%endif%}/>{% else %}{% if completename[0] %}<author_fullname='{{completename[0]}}'_asciiFullname='{{completename[0] | ascii }}'{%if role[0] %}_role='{{role[0]}}'{%endif%}/>{% endif %}{% endif %}{% endif %}"
|
12
|
+
two: "{% if nonpersonal[0] %}<author><organization_ascii='{{nonpersonal[0] | ascii }}'_abbrev='{{ nonpersonalabbrev[0]}}'>{{ nonpersonal[0] }}</organization></author>{% else %}{% if surname[0] %}<author_surname='{{surname[0]}}'_asciiSurname='{{ surname[0] | ascii }}'_initials='{{initials[0] | join: ''}}'_asciiInitials='{{initials[0] | join: '' | ascii}}'{%if role[0] %}_role='{{role[0]}}'{%endif%}/>{% else %}{% if completename[0] %}<author_fullname='{{completename[0]}}'_asciiFullname='{{completename[0] | ascii }}'{%if role[0] %}_role='{{role[0]}}'{%endif%}/>{% endif %}{% endif %}{% endif %} {% if nonpersonal[1] %}<author><organization_ascii='{{nonpersonal[1] | ascii }}'_abbrev='{{ nonpersonalabbrev[1]}}'>{{ nonpersonal[1] }}</organization></author>{% else %}{% if surname[0] %}<author_surname='{{surname[1]}}'_asciiSurname='{{ surname[1] | ascii }}'_initials='{{initials[1] | join: ''}}'_asciiInitials='{{initials[1] | join: '' | ascii}}'{%if role[1] %}_role='{{role[1]}}'{%endif%}/>{% else %}{% if completename[1] %}<author_fullname='{{completename[1]}}'_asciiFullname='{{completename[1] | ascii }}'{%if role[1] %}_role='{{role[1]}}'{%endif%}/>{% endif %}{%endif%}{% endif %}"
|
13
|
+
more: "{% if nonpersonal[0] %}<author><organization_ascii='{{nonpersonal[0] | ascii }}'_abbrev='{{ nonpersonalabbrev[0]}}'>{{ nonpersonal[0] }}</organization></author>{% else %}{% if surname[0] %}<author_surname='{{surname[0]}}'_asciiSurname='{{ surname[0] | ascii }}'_initials='{{initials[0] | join: ''}}'_asciiInitials='{{initials[0] | join: '' | ascii}}'{%if role[0] %}_role='{{role[0]}}'{%endif%}/>{% else %}{% if completename[0] %}<author_fullname='{{completename[0]}}'_asciiFullname='{{completename[0] | ascii }}'{%if role[0] %}_role='{{role[0]}}'{%endif%}/>{% endif %}{% endif %}{%endif%} {% if nonpersonal[1] %}<author><organization_ascii='{{nonpersonal[1] | ascii }}'_abbrev='{{ nonpersonalabbrev[1]}}'>{{ nonpersonal[1] }}</organization></author>{% else %}{%if surname[1] %}<author_surname='{{surname[1]}}'_asciiSurname='{{ surname[1] | ascii }}'_initials='{{initials[1] | join: ''}}'_asciiInitials='{{initials[1] | join: '' | ascii}}'{%if role[1] %}_role='{{role[1]}}'{%endif%}/>{% else %}{% if completename[1] %}<author_fullname='{{completename[1]}}'_asciiFullname='{{completename[1] | ascii }}'{%if role[1] %}_role='{{role[1]}}'{%endif%}/>{% endif %}{% endif %}{% endif %} {% if nonpersonal[2] or nonpersonalabbrev[2] %}<author><organization_ascii='{{nonpersonal[2] | ascii }}'_abbrev='{{ nonpersonalabbrev[2]}}'>{{ nonpersonal[2] }}</organization></author>{% else %}{% if surname[2] %}<author_surname='{{surname[2]}}'_asciiSurname='{{ surname[2] | ascii }}'_initials='{{initials[2] | join: ''}}'_asciiInitials='{{initials[2] | join: '' | ascii}}'{%if role[2] %}_role='{{role[2]}}'{%endif%}/>{% else %}{% if completename[2] %}<author_fullname='{{completename[2]}}'_asciiFullname='{{completename[2] | ascii }}'{%if role[2] %}_role='{{role[2]}}'{%endif%}/>{% endif %}{% endif %}{% endif %}"
|
14
|
+
# disabled the following: they should be provided in inheriting calls
|
15
|
+
# etal: "{% if nonpersonal[0] %}{{ nonpersonal[0] }}{% else %}{{surname[0] | upcase}} ,_{%if given[0]%}{{given[0]}} {{middle[0]}}{%else%}{{initials[0] | join: ' '}}.{%endif%}{% endif %}, {% if nonpersonal[1] %}{{ nonpersonal[1] }}{% else %}{%if given[1]%}{{given[1]}} {{middle[1]}}{%else%}{{initials[1] | join: ' '}}.{%endif%} {{surname[1] | upcase}}{% endif %} <em>et al.</em>"
|
16
|
+
# etal_count: 5
|
17
|
+
seriestemplate: "{% if series_title and series_num %}<seriesInfo_name='{{ series_title }}'_value='{{series_num}}'/>{% else %}{% if series_formatted %}<refcontent>{{ series_formatted }}</refcontent>{% else %}{% if series_title %}<refcontent> {{series_title}} {{ series_run }} ,_{{ series_org }} ,_{{ series_place }} ,_{{ series_dates }} </refcontent>{% endif %}{% endif %}{% endif %}"
|
18
|
+
journaltemplate: "{% if series_title and series_num %}<seriesInfo_name='{{ series_title }}'_value='{{series_num}}'/>{% else %}{% if series_formatted %}<refcontent>{{ series_formatted }}</refcontent>{% else %}{% if series_title %}<refcontent> {{series_title}} {{ series_run }} ,_{{ series_org }} ,_{{ series_place }} ,_{{ series_dates }} </refcontent>{% endif %}{% endif %}{% endif %}"
|
19
|
+
template:
|
20
|
+
# skip standardidentifier, it is inserted in front of formattedref within metanorma
|
21
|
+
# date is cleaned up into RFC XML formatting afterwards
|
22
|
+
standard: "<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 u in uris %}<format_target='{{u.content}}'_type='{%if u.type%}{{u.type}}{%else%}HTML{%endif%}'/>{% endfor %} {{ series }} {%for d in doi %}<seriesInfo_value='{{ d | replace: ' ', ' ' | remove_first: 'DOI' | strip }}'_name='DOI'/>{% endfor %} {% if home_standard %}{% for i in authoritative_identifier %} <seriesInfo_value='{{ i | replace: ' ', ' ' | strip | split: ' ' | last | remove_first: 'I-D.'}}'_name='{%if i contains 'I-D.'%}Internet-Draft{% else %}{{ i | replace: ' ', ' ' | strip | split: ' ' | slice: -2 }}{%endif%}'/> {% endfor %} {% else %} <refcontent>{{authoritative_identifier | join: ', '}}</refcontent> {% endif %}"
|
23
|
+
website: standard
|
24
|
+
book: standard
|
25
|
+
booklet: standard
|
26
|
+
manual: standard
|
27
|
+
techreport: standard
|
28
|
+
proceedings: standard
|
29
|
+
inbook: standard
|
30
|
+
inproceedings: standard
|
31
|
+
incollection: standard
|
32
|
+
journal: standard
|
33
|
+
article: standard
|
34
|
+
software: standard
|
35
|
+
electronic resource: standard
|
36
|
+
dataset: standard
|
37
|
+
webresource: standard
|
38
|
+
unpublished: standard
|
39
|
+
presentation: standard
|
40
|
+
thesis: standard
|
41
|
+
misc: standard
|
42
|
+
# following are # unsupported types:
|
43
|
+
map: misc
|
44
|
+
audiovisual: misc
|
45
|
+
film: misc
|
46
|
+
video: misc
|
47
|
+
broadcast: misc
|
48
|
+
graphic_work: misc
|
49
|
+
music: misc
|
50
|
+
performance: misc
|
51
|
+
patent: misc
|
52
|
+
archival: misc
|
53
|
+
social_media: misc
|
54
|
+
alert: misc
|
55
|
+
message: misc
|
56
|
+
conversation: misc
|
57
|
+
internal: misc
|
58
|
+
|
59
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Relaton
|
2
|
+
module Render
|
3
|
+
module Ietf
|
4
|
+
class Fields < ::Relaton::Render::Fields
|
5
|
+
def nameformat(names)
|
6
|
+
names.nil? and return names
|
7
|
+
parts = %i(surname initials given middle nonpersonal
|
8
|
+
nonpersonalabbrev completename)
|
9
|
+
names_out = names.each_with_object({}) do |n, m|
|
10
|
+
parts.each do |i|
|
11
|
+
m[i] ||= []
|
12
|
+
m[i] << n[i]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
@r.nametemplate.render(names_out)
|
16
|
+
end
|
17
|
+
|
18
|
+
# do not format months
|
19
|
+
def dateformat(date, _hash)
|
20
|
+
date.nil? and return nil
|
21
|
+
date_range(date)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "relaton-render"
|
2
|
+
require_relative "parse"
|
3
|
+
require_relative "template"
|
4
|
+
require_relative "fields"
|
5
|
+
|
6
|
+
module Relaton
|
7
|
+
module Render
|
8
|
+
module Ietf
|
9
|
+
class General < ::Relaton::Render::IsoDoc::General
|
10
|
+
def config_loc
|
11
|
+
YAML.load_file(File.join(File.dirname(__FILE__), "config.yml"))
|
12
|
+
end
|
13
|
+
|
14
|
+
def klass_initialize(_options)
|
15
|
+
super
|
16
|
+
@parseklass = Relaton::Render::Ietf::Parse
|
17
|
+
@nametemplateklass = Relaton::Render::Ietf::Template::Name
|
18
|
+
@fieldsklass = Relaton::Render::Ietf::Fields
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
module Relaton
|
2
|
+
module Render
|
3
|
+
module Ietf
|
4
|
+
class Parse < ::Relaton::Render::Parse
|
5
|
+
def simple_or_host_xml2hash(doc, host)
|
6
|
+
ret = super
|
7
|
+
ret.merge(home_standard: home_standard(doc, ret[:publisher_raw]),
|
8
|
+
uris: uris(doc), keywords: keywords(doc),
|
9
|
+
abstract: abstract(doc))
|
10
|
+
end
|
11
|
+
|
12
|
+
def home_standard(_doc, pubs)
|
13
|
+
pubs&.any? do |r|
|
14
|
+
["Internet Engineering Task Force", "IETF", "RFC Publisher"]
|
15
|
+
.include?(r[:nonpersonal])
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# allow publisher for standards
|
20
|
+
def creatornames_roles_allowed
|
21
|
+
%w(author performer adapter translator editor publisher distributor
|
22
|
+
authorizer)
|
23
|
+
end
|
24
|
+
|
25
|
+
def series_xml2hash1(series, doc)
|
26
|
+
ret = super
|
27
|
+
%w(BCP RFC I-D. Internet-Draft).include?(ret[:series_title]) and return {}
|
28
|
+
ret
|
29
|
+
end
|
30
|
+
|
31
|
+
def uris(doc)
|
32
|
+
doc.link.map { |u| { content: u.content.to_s.strip, type: u.type } }
|
33
|
+
end
|
34
|
+
|
35
|
+
def keywords(doc)
|
36
|
+
doc.keyword.map { |u| content(u) }
|
37
|
+
end
|
38
|
+
|
39
|
+
def abstract(doc)
|
40
|
+
doc.abstract.join
|
41
|
+
end
|
42
|
+
|
43
|
+
def extractname(contributor)
|
44
|
+
org = contributor.entity if contributor.entity
|
45
|
+
.is_a?(RelatonBib::Organization)
|
46
|
+
person = contributor.entity if contributor.entity
|
47
|
+
.is_a?(RelatonBib::Person)
|
48
|
+
if org
|
49
|
+
return { nonpersonal: extract_orgname(org),
|
50
|
+
nonpersonalabbrev: extract_orgabbrev(org) }
|
51
|
+
end
|
52
|
+
return extract_personname(person) if person
|
53
|
+
|
54
|
+
nil
|
55
|
+
end
|
56
|
+
|
57
|
+
def extract_orgabbrev(org)
|
58
|
+
content(org.abbreviation)
|
59
|
+
end
|
60
|
+
|
61
|
+
def extract_personname(person)
|
62
|
+
surname = person.name.surname
|
63
|
+
completename = person.name.completename
|
64
|
+
given, middle, initials = given_and_middle_name(person)
|
65
|
+
{ surname: content(surname),
|
66
|
+
completename: content(completename),
|
67
|
+
given: given,
|
68
|
+
middle: middle,
|
69
|
+
initials: initials }.compact
|
70
|
+
end
|
71
|
+
|
72
|
+
# not just year-only
|
73
|
+
def date(doc, host)
|
74
|
+
ret = date1(doc.date)
|
75
|
+
host and ret ||= date1(host.date)
|
76
|
+
datepick(ret)
|
77
|
+
end
|
78
|
+
|
79
|
+
# return authors and editors together
|
80
|
+
def creatornames1(doc)
|
81
|
+
return [] if doc.nil?
|
82
|
+
|
83
|
+
add1 = pick_contributor(doc, "author") || []
|
84
|
+
add2 = pick_contributor(doc, "editor") || []
|
85
|
+
cr = add1 + add2
|
86
|
+
cr.empty? or return cr
|
87
|
+
super
|
88
|
+
end
|
89
|
+
|
90
|
+
# add BCP number
|
91
|
+
def authoritative_identifier(doc)
|
92
|
+
ret = super
|
93
|
+
if bcp = doc.series.detect { |s| s.title.title.content == "BCP" }
|
94
|
+
ret.unshift("BCP #{bcp.number}")
|
95
|
+
end
|
96
|
+
ret.reject { |x| /^(rfc-anchor|Internet-Draft)/.match? (x) }
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "sterile"
|
2
|
+
|
3
|
+
module Relaton
|
4
|
+
module Render
|
5
|
+
module Template
|
6
|
+
module Ascii
|
7
|
+
def ascii(ret)
|
8
|
+
ret.transliterate
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module Relaton
|
16
|
+
module Render
|
17
|
+
module Ietf
|
18
|
+
module Template
|
19
|
+
class Name < ::Relaton::Render::Template::Name
|
20
|
+
def customise_liquid
|
21
|
+
super
|
22
|
+
::Liquid::Template
|
23
|
+
.register_filter(::Relaton::Render::Template::Ascii)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/metanorma-ietf.gemspec
CHANGED
@@ -37,7 +37,8 @@ Gem::Specification.new do |spec|
|
|
37
37
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
|
38
38
|
|
39
39
|
spec.add_dependency "metanorma-ietf-data"
|
40
|
-
spec.add_dependency "metanorma-standoc", "~> 2.6.
|
40
|
+
spec.add_dependency "metanorma-standoc", "~> 2.6.3"
|
41
|
+
spec.add_dependency "relaton-render"
|
41
42
|
|
42
43
|
spec.add_development_dependency "debug"
|
43
44
|
spec.add_development_dependency "equivalent-xml", "~> 0.6"
|
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.2.
|
4
|
+
version: 3.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-11-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: metanorma-ietf-data
|
@@ -30,14 +30,28 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 2.6.
|
33
|
+
version: 2.6.3
|
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: 2.6.
|
40
|
+
version: 2.6.3
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: relaton-render
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: debug
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -256,6 +270,11 @@ files:
|
|
256
270
|
- lib/metanorma/ietf/reqt.rng
|
257
271
|
- lib/metanorma/ietf/validate.rb
|
258
272
|
- lib/metanorma/ietf/version.rb
|
273
|
+
- lib/relaton/render/config.yml
|
274
|
+
- lib/relaton/render/fields.rb
|
275
|
+
- lib/relaton/render/general.rb
|
276
|
+
- lib/relaton/render/parse.rb
|
277
|
+
- lib/relaton/render/template.rb
|
259
278
|
- metanorma-ietf.gemspec
|
260
279
|
- rfc2629-other.ent
|
261
280
|
- rfc2629-xhtml.ent
|