metanorma-ietf 2.4.1 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: def69cf551c6c50fcb28fcdf04ab02e0d3d9cf83ba3dcd81114c41f71860599f
4
- data.tar.gz: 5afc33bb93c93fbc86565d984562a3a61ed02b700e0a1e66a70f47289ef230c9
3
+ metadata.gz: 7a36096d484f0abebdb0aac35196a9f8975f7d5704851d3209d133e9901b1b82
4
+ data.tar.gz: 1fbef89a62eddc130fdf1c99367fae06c29369206f11bcbef9c24e1c1ab07c3d
5
5
  SHA512:
6
- metadata.gz: 4a2c6f8d47d875c1fb896d1fffdc5d5f789c05a679ab474ae7dfbc52795b9df47eb4763164f08c2da964c0de53ad51f91233ea230a8bce9553a31986f19bf4cd
7
- data.tar.gz: eb7fbd7913907b01e95f07bd2b28058b1d8c953f5f9b8b8a9c81a6c1638319fbb2ce8f593a3d83970b5ea748fbf34b7d0ba60b73ea5fa8f9c1a41e3076aec6ac
6
+ metadata.gz: 2ecdee7ac6dd34da6fe68e4613233b352b6eb1fa35ddec7a7f427b1dcce3bf09d8d5672f37efef8aac10f8e6cbf81c7d2f6466818db0a2fbae27676202c57dff
7
+ data.tar.gz: f914bccab27c70cbf81281aa0475896190e578bdd09a00072f8802d03903cca7b814bde12d214bfa01d43a95b218a9c1f13312877f6736dad9bf80f2c171253f
@@ -624,6 +624,9 @@
624
624
  <choice>
625
625
  <ref name="PureTextElement"/>
626
626
  <ref name="stem"/>
627
+ <ref name="eref"/>
628
+ <ref name="xref"/>
629
+ <ref name="hyperlink"/>
627
630
  </choice>
628
631
  </zeroOrMore>
629
632
  </element>
@@ -634,6 +637,9 @@
634
637
  <choice>
635
638
  <ref name="PureTextElement"/>
636
639
  <ref name="stem"/>
640
+ <ref name="eref"/>
641
+ <ref name="xref"/>
642
+ <ref name="hyperlink"/>
637
643
  </choice>
638
644
  </zeroOrMore>
639
645
  </element>
@@ -641,7 +647,12 @@
641
647
  <define name="tt">
642
648
  <element name="tt">
643
649
  <zeroOrMore>
644
- <ref name="PureTextElement"/>
650
+ <choice>
651
+ <ref name="PureTextElement"/>
652
+ <ref name="eref"/>
653
+ <ref name="xref"/>
654
+ <ref name="hyperlink"/>
655
+ </choice>
645
656
  </zeroOrMore>
646
657
  </element>
647
658
  </define>
@@ -822,7 +833,9 @@
822
833
  <attribute name="alt"/>
823
834
  </optional>
824
835
  <ref name="CitationType"/>
825
- <text/>
836
+ <oneOrMore>
837
+ <ref name="PureTextElement"/>
838
+ </oneOrMore>
826
839
  </define>
827
840
  <define name="hyperlink">
828
841
  <element name="link">
@@ -835,7 +848,9 @@
835
848
  <optional>
836
849
  <attribute name="alt"/>
837
850
  </optional>
838
- <text/>
851
+ <oneOrMore>
852
+ <ref name="PureTextElement"/>
853
+ </oneOrMore>
839
854
  </element>
840
855
  </define>
841
856
  <define name="xref">
@@ -849,7 +864,9 @@
849
864
  <optional>
850
865
  <attribute name="alt"/>
851
866
  </optional>
852
- <text/>
867
+ <oneOrMore>
868
+ <ref name="PureTextElement"/>
869
+ </oneOrMore>
853
870
  </element>
854
871
  </define>
855
872
  <define name="fn">
@@ -6,6 +6,8 @@ module Asciidoctor
6
6
  abstract_cleanup(xmldoc)
7
7
  super
8
8
  rfc_anchor_cleanup(xmldoc)
9
+ cref_cleanup(xmldoc)
10
+ xmldoc
9
11
  end
10
12
 
11
13
  def abstract_cleanup(xmldoc)
@@ -15,6 +17,21 @@ module Asciidoctor
15
17
  end
16
18
  end
17
19
 
20
+ def cref_cleanup(xmldoc)
21
+ xmldoc.xpath("//crefref").each do |r|
22
+ if c = xmldoc.at("//review[@id = '#{r.text}']")
23
+ r.replace(c.remove)
24
+ else
25
+ @log.add("Crossrefences", r,
26
+ "No matching review for cref:[#{r.text}]")
27
+ end
28
+ end
29
+ end
30
+
31
+ BCP_KEYWORDS = ["MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
32
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
33
+ "OPTIONAL"].freeze
34
+
18
35
  def bcp14_cleanup(xmldoc)
19
36
  return unless @bcp_bold
20
37
 
@@ -26,12 +43,13 @@ module Asciidoctor
26
43
  end
27
44
 
28
45
  def rfc_anchor_cleanup(xmldoc)
29
- map = {}
30
- xmldoc.xpath("//bibitem[docidentifier/@type = 'rfc-anchor']").each do |b|
31
- next if b.at("./ancestor::bibdata")
46
+ map = xmldoc.xpath("//bibitem[docidentifier/@type = 'rfc-anchor']")
47
+ .each_with_object({}) do |b, m|
48
+ next if b.at("./ancestor::bibdata | ./ancestor::bibitem")
32
49
 
33
- map[b["id"]] = b.at("./docidentifier[@type = 'rfc-anchor']").text
34
- b["id"] = b.at("./docidentifier[@type = 'rfc-anchor']").text
50
+ id = b.at("./docidentifier[@type = 'rfc-anchor']").text
51
+ m[b["id"]] = id
52
+ b["id"] = id
35
53
  end
36
54
  xmldoc.xpath("//eref | //origin").each do |x|
37
55
  map[x["bibitemid"]] and x["bibitemid"] = map[x["bibitemid"]]
@@ -45,7 +63,12 @@ module Asciidoctor
45
63
 
46
64
  n.replace(HTMLEntities.new.encode(
47
65
  n.text.gsub(/\u2019|\u2018|\u201a|\u201b/, "'")
48
- .gsub(/\u201c|\u201d|\u201e|\u201f/, '"'), :basic
66
+ .gsub(/\u201c|\u201d|\u201e|\u201f/, '"')
67
+ .gsub(/[\u2010-\u2015]/, "-")
68
+ .gsub(/\u2026/, "...")
69
+ .gsub(/[\u200b-\u200c]/, "")
70
+ .gsub(/[\u2000-\u200a]|\u202f|\u205f/, " "),
71
+ :basic,
49
72
  ))
50
73
  end
51
74
  xmldoc
@@ -5,10 +5,15 @@ require_relative "./front"
5
5
  require_relative "./blocks"
6
6
  require_relative "./validate"
7
7
  require_relative "./cleanup"
8
+ require_relative "./macros"
8
9
 
9
10
  module Asciidoctor
10
11
  module Ietf
11
12
  class Converter < ::Asciidoctor::Standoc::Converter
13
+ Asciidoctor::Extensions.register do
14
+ inline_macro Asciidoctor::Ietf::InlineCrefMacro
15
+ end
16
+
12
17
  XML_ROOT_TAG = "ietf-standard".freeze
13
18
  XML_NAMESPACE = "https://www.metanorma.org/ns/ietf".freeze
14
19
 
@@ -113,70 +118,7 @@ module Asciidoctor
113
118
  [t, rel]
114
119
  end
115
120
 
116
- def cleanup(xmldoc)
117
- bcp14_cleanup(xmldoc)
118
- abstract_cleanup(xmldoc)
119
- super
120
- rfc_anchor_cleanup(xmldoc)
121
- end
122
-
123
- BCP_KEYWORDS = ["MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
124
- "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", "OPTIONAL"].freeze
125
-
126
- def abstract_cleanup(xmldoc)
127
- xmldoc.xpath("//abstract[not(text())]").each do |x|
128
- x.remove
129
- warn "Empty abstract section removed"
130
- end
131
- end
132
-
133
- def bcp14_cleanup(xmldoc)
134
- return unless @bcp_bold
135
- xmldoc.xpath("//strong").each do |s|
136
- next unless BCP_KEYWORDS.include?(s.text)
137
- s.name = "bcp14"
138
- end
139
- end
140
-
141
- def rfc_anchor_cleanup(xmldoc)
142
- map = {}
143
- xmldoc.xpath("//bibitem[docidentifier/@type = 'rfc-anchor']").each do |b|
144
- next if b.at("./ancestor::bibdata | ./ancestor::bibitem")
145
-
146
- map[b["id"]] = b.at("./docidentifier[@type = 'rfc-anchor']").text
147
- b["id"] = b.at("./docidentifier[@type = 'rfc-anchor']").text
148
- end
149
- xmldoc.xpath("//eref | //origin").each do |x|
150
- map[x["bibitemid"]] and x["bibitemid"] = map[x["bibitemid"]]
151
- end
152
- xmldoc
153
- end
154
-
155
- def smartquotes_cleanup(xmldoc)
156
- xmldoc.traverse do |n|
157
- next unless n.text?
158
- n.replace(HTMLEntities.new.encode(
159
- n.text.gsub(/\u2019|\u2018|\u201a|\u201b/, "'").
160
- gsub(/\u201c|\u201d|\u201e|\u201f/, '"'), :basic))
161
- end
162
- xmldoc
163
- end
164
-
165
- def xref_to_eref(x)
166
- super
167
- x.delete("format")
168
- end
169
-
170
- def xref_cleanup(xmldoc)
171
- super
172
- xmldoc.xpath("//xref").each do |x|
173
- x.delete("displayFormat")
174
- x.delete("relative")
175
- end
176
- end
177
-
178
- def norm_ref_preface(f)
179
- end
121
+ def norm_ref_preface(sect); end
180
122
 
181
123
  def clause_parse(attrs, xml, node)
182
124
  attrs[:numbered] = node.attr("numbered")
@@ -459,14 +459,9 @@
459
459
  <ref name="section-title"/>
460
460
  </optional>
461
461
  <group>
462
- <group>
463
- <zeroOrMore>
464
- <ref name="BasicBlock"/>
465
- </zeroOrMore>
466
- <zeroOrMore>
467
- <ref name="note"/>
468
- </zeroOrMore>
469
- </group>
462
+ <zeroOrMore>
463
+ <ref name="BasicBlock"/>
464
+ </zeroOrMore>
470
465
  <zeroOrMore>
471
466
  <choice>
472
467
  <ref name="clause-subsection"/>
@@ -508,14 +503,9 @@
508
503
  <ref name="section-title"/>
509
504
  </optional>
510
505
  <group>
511
- <group>
512
- <zeroOrMore>
513
- <ref name="BasicBlock"/>
514
- </zeroOrMore>
515
- <zeroOrMore>
516
- <ref name="note"/>
517
- </zeroOrMore>
518
- </group>
506
+ <zeroOrMore>
507
+ <ref name="BasicBlock"/>
508
+ </zeroOrMore>
519
509
  <zeroOrMore>
520
510
  <ref name="clause-subsection"/>
521
511
  </zeroOrMore>
@@ -547,14 +537,9 @@
547
537
  <ref name="section-title"/>
548
538
  </optional>
549
539
  <group>
550
- <group>
551
- <zeroOrMore>
552
- <ref name="BasicBlock"/>
553
- </zeroOrMore>
554
- <zeroOrMore>
555
- <ref name="note"/>
556
- </zeroOrMore>
557
- </group>
540
+ <zeroOrMore>
541
+ <ref name="BasicBlock"/>
542
+ </zeroOrMore>
558
543
  <zeroOrMore>
559
544
  <ref name="content-subsection"/>
560
545
  </zeroOrMore>
@@ -602,7 +587,10 @@
602
587
  </define>
603
588
  </include>
604
589
  <define name="TextElement" combine="choice">
605
- <ref name="bcp14"/>
590
+ <choice>
591
+ <ref name="bcp14"/>
592
+ <ref name="review"/>
593
+ </choice>
606
594
  </define>
607
595
  <define name="bcp14">
608
596
  <element name="bcp14">