Skip to content

Commit 7cc639d

Browse files
committed
move processing of obligation subtitle for non-resolutions to Presentation XML: metanorma/isodoc#613
1 parent 1e1ef0d commit 7cc639d

File tree

6 files changed

+78
-41
lines changed

6 files changed

+78
-41
lines changed

Gemfile.devel

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
1-
gem "metanorma-standoc", git: "https://github.com/metanorma/metanorma-standoc", branch: "main"
2-
gem "isodoc", git: "https://github.com/metanorma/isodoc", branch: "main"
1+
gem "isodoc", git: "https://github.com/metanorma/isodoc", branch: "fix/presxml-20241106"
2+
3+
4+

lib/isodoc/itu/base_convert.rb

-11
Original file line numberDiff line numberDiff line change
@@ -59,17 +59,6 @@ def annex_name(annex, name, div)
5959
div.h1 class: r_a ? "RecommendationAnnex" : "Annex" do |t|
6060
name&.children&.each { |c2| parse(c2, t) }
6161
end
62-
# TODO to Presentation XML
63-
@meta.get[:doctype_original] == "resolution" or
64-
annex_obligation_subtitle(annex, div)
65-
end
66-
67-
def annex_obligation_subtitle(annex, div)
68-
info = annex["obligation"] == "informative"
69-
div.p class: "annex_obligation" do |p|
70-
p << (info ? @i18n.inform_annex : @i18n.norm_annex)
71-
.sub("%", @meta.get[:doctype] || "")
72-
end
7362
end
7463

7564
def annex(node, out)

lib/isodoc/itu/presentation_xml_convert.rb

+17-1
Original file line numberDiff line numberDiff line change
@@ -111,12 +111,28 @@ def clause1_super?(elem)
111111
end
112112

113113
def annex1(elem)
114-
@doctype == "resolution" or return super
114+
if @doctype == "resolution"
115+
annex1_resolution(elem)
116+
else
117+
super
118+
annex1_non_resolution(elem)
119+
end
120+
end
121+
122+
def annex1_resolution(elem)
115123
elem.elements.first.previous = annex1_supertitle(elem)
116124
t = elem.at(ns("./title")) and
117125
t.children = "<strong>#{to_xml(t.children)}</strong>"
118126
end
119127

128+
def annex1_non_resolution(elem)
129+
info = elem["obligation"] == "informative"
130+
ins = elem.at(ns("./title"))
131+
p = (info ? @i18n.inform_annex : @i18n.norm_annex)
132+
.sub("%", @i18n.doctype_dict[@meta.get[:doctype_original]] || "")
133+
ins.next = %(<p class="annex_obligation">#{p}</p>)
134+
end
135+
120136
def annex1_supertitle(elem)
121137
lbl = @xrefs.anchor(elem["id"], :label)
122138
res = elem.at(ns("//bibdata/title[@type = 'resolution']"))

spec/isodoc/i18n_spec.rb

+6-5
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
</references>
8080
</sections><annex id="P" inline-header="false" obligation="normative" displayorder="14">
8181
<title><strong>Annexe A</strong><br/><br/><strong>Annex</strong></title>
82+
<p class="annex_obligation">(Cette annexe fait partie intégrante de ce Recommendation.)</p>
8283
<clause id="Q" inline-header="false" obligation="normative">
8384
<title depth="2">A.1.<tab/>Annex A.1</title>
8485
<clause id="Q1" inline-header="false" obligation="normative">
@@ -170,7 +171,7 @@
170171
<br/>
171172
<div id="P" class="Section3">
172173
<h1 class="Annex"><b>Annexe A</b> <br/><br/><b>Annex</b></h1>
173-
<p class="annex_obligation">(Cette annexe fait partie int&#233;grante de ce Recommendation.)</p>
174+
<p class="annex_obligation">(Cette annexe fait partie intégrante de ce Recommandation.)</p>
174175
<div id="Q">
175176
<h2>A.1.&#160; Annex A.1</h2>
176177
<div id="Q1">
@@ -282,6 +283,7 @@
282283
</references>
283284
</sections><annex id="P" inline-header="false" obligation="normative" displayorder="13">
284285
<title><strong>&#x9644;&#x4EF6;A</strong><br/><br/><strong>Annex</strong></title>
286+
<p class="annex_obligation">(本附件不构成本Recommendation的不可或缺部分)</p>
285287
<clause id="Q" inline-header="false" obligation="normative">
286288
<title depth="2">A.1.<tab/>Annex A.1</title>
287289
<clause id="Q1" inline-header="false" obligation="normative">
@@ -380,9 +382,7 @@
380382
<br/>
381383
<b>Annex</b>
382384
</h1>
383-
<p class='annex_obligation'>
384-
&#65288;&#26412;&#38468;&#20214;&#19981;&#26500;&#25104;&#26412;Recommendation&#30340;&#19981;&#21487;&#25110;&#32570;&#37096;&#20998;&#65289;
385-
</p>
385+
<p class='annex_obligation'>(本附件不构成本建议书的不可或缺部分)</p>
386386
<div id='Q'>
387387
<h2>A.1.&#12288;Annex A.1</h2>
388388
<div id='Q1'>
@@ -406,7 +406,8 @@
406406
</div>
407407
</body>
408408
OUTPUT
409-
expect(Xml::C14n.format(strip_guid(IsoDoc::Itu::PresentationXMLConvert.new(presxml_options)
409+
expect(Xml::C14n.format(strip_guid(IsoDoc::Itu::PresentationXMLConvert
410+
.new(presxml_options)
410411
.convert("test", itudoc("zh"), true)
411412
.gsub(%r{<localized-strings>.*</localized-strings>}m, ""))))
412413
.to be_equivalent_to Xml::C14n.format(presxml)

spec/isodoc/section_spec.rb

+47-21
Original file line numberDiff line numberDiff line change
@@ -86,26 +86,46 @@
8686
<xref target="B1">Appendix I</xref>
8787
</abstract>
8888
</preface>
89-
<annex id="A1" obligation="normative" displayorder="3"><title><strong>Annex A</strong><br/><br/><strong>Annex</strong></title></annex>
90-
<annex id="A2" obligation="normative" displayorder="4"><title><strong>Annex B</strong><br/><br/><strong>Annex</strong></title></annex>
91-
<annex id="A3" obligation="normative" displayorder="5"><title><strong>Annex C</strong><br/><br/><strong>Annex</strong></title></annex>
92-
<annex id="A4" obligation="normative" displayorder="6"><title><strong>Annex D</strong><br/><br/><strong>Annex</strong></title></annex>
93-
<annex id="A5" obligation="normative" displayorder="7"><title><strong>Annex E</strong><br/><br/><strong>Annex</strong></title></annex>
94-
<annex id="A6" obligation="normative" displayorder="8"><title><strong>Annex F</strong><br/><br/><strong>Annex</strong></title></annex>
95-
<annex id="A7" obligation="normative" displayorder="9"><title><strong>Annex G</strong><br/><br/><strong>Annex</strong></title></annex>
96-
<annex id="A8" obligation="normative" displayorder="10"><title><strong>Annex H</strong><br/><br/><strong>Annex</strong></title></annex>
97-
<annex id="A9" obligation="normative" displayorder="11"><title><strong>Annex J</strong><br/><br/><strong>Annex</strong></title></annex>
98-
<annex id="A10" obligation="normative" displayorder="12"><title><strong>Annex K</strong><br/><br/><strong>Annex</strong></title></annex>
99-
<annex id="B1" obligation="informative" displayorder="13"><title><strong>Appendix I</strong><br/><br/><strong>Annex</strong></title></annex>
100-
<annex id="B2" obligation="informative" displayorder="14"><title><strong>Appendix II</strong><br/><br/><strong>Annex</strong></title></annex>
101-
<annex id="B3" obligation="informative" displayorder="15"><title><strong>Appendix III</strong><br/><br/><strong>Annex</strong></title></annex>
102-
<annex id="B4" obligation="informative" displayorder="16"><title><strong>Appendix IV</strong><br/><br/><strong>Annex</strong></title></annex>
103-
<annex id="B5" obligation="informative" displayorder="17"><title><strong>Appendix V</strong><br/><br/><strong>Annex</strong></title></annex>
104-
<annex id="B6" obligation="informative" displayorder="18"><title><strong>Appendix VI</strong><br/><br/><strong>Annex</strong></title></annex>
105-
<annex id="B7" obligation="informative" displayorder="19"><title><strong>Appendix VII</strong><br/><br/><strong>Annex</strong></title></annex>
106-
<annex id="B8" obligation="informative" displayorder="20"><title><strong>Appendix VIII</strong><br/><br/><strong>Annex</strong></title></annex>
107-
<annex id="B9" obligation="informative" displayorder="21"><title><strong>Appendix IX</strong><br/><br/><strong>Annex</strong></title></annex>
108-
<annex id="B10" obligation="informative" displayorder="22"><title><strong>Appendix X</strong><br/><br/><strong>Annex</strong></title></annex>
89+
<annex id="A1" obligation="normative" displayorder="3"><title><strong>Annex A</strong><br/><br/><strong>Annex</strong></title>
90+
<p class="annex_obligation">(This annex forms an integral part of this Recommendation.)</p></annex>
91+
<annex id="A2" obligation="normative" displayorder="4"><title><strong>Annex B</strong><br/><br/><strong>Annex</strong></title>
92+
<p class="annex_obligation">(This annex forms an integral part of this Recommendation.)</p></annex>
93+
<annex id="A3" obligation="normative" displayorder="5"><title><strong>Annex C</strong><br/><br/><strong>Annex</strong></title>
94+
<p class="annex_obligation">(This annex forms an integral part of this Recommendation.)</p></annex>
95+
<annex id="A4" obligation="normative" displayorder="6"><title><strong>Annex D</strong><br/><br/><strong>Annex</strong></title>
96+
<p class="annex_obligation">(This annex forms an integral part of this Recommendation.)</p></annex>
97+
<annex id="A5" obligation="normative" displayorder="7"><title><strong>Annex E</strong><br/><br/><strong>Annex</strong></title>
98+
<p class="annex_obligation">(This annex forms an integral part of this Recommendation.)</p></annex>
99+
<annex id="A6" obligation="normative" displayorder="8"><title><strong>Annex F</strong><br/><br/><strong>Annex</strong></title>
100+
<p class="annex_obligation">(This annex forms an integral part of this Recommendation.)</p></annex>
101+
<annex id="A7" obligation="normative" displayorder="9"><title><strong>Annex G</strong><br/><br/><strong>Annex</strong></title>
102+
<p class="annex_obligation">(This annex forms an integral part of this Recommendation.)</p></annex>
103+
<annex id="A8" obligation="normative" displayorder="10"><title><strong>Annex H</strong><br/><br/><strong>Annex</strong></title>
104+
<p class="annex_obligation">(This annex forms an integral part of this Recommendation.)</p></annex>
105+
<annex id="A9" obligation="normative" displayorder="11"><title><strong>Annex J</strong><br/><br/><strong>Annex</strong></title>
106+
<p class="annex_obligation">(This annex forms an integral part of this Recommendation.)</p></annex>
107+
<annex id="A10" obligation="normative" displayorder="12"><title><strong>Annex K</strong><br/><br/><strong>Annex</strong></title>
108+
<p class="annex_obligation">(This annex forms an integral part of this Recommendation.)</p></annex>
109+
<annex id="B1" obligation="informative" displayorder="13"><title><strong>Appendix I</strong><br/><br/><strong>Annex</strong></title>
110+
<p class="annex_obligation">(This appendix does not form an integral part of this Recommendation.)</p></annex>
111+
<annex id="B2" obligation="informative" displayorder="14"><title><strong>Appendix II</strong><br/><br/><strong>Annex</strong></title>
112+
<p class="annex_obligation">(This appendix does not form an integral part of this Recommendation.)</p></annex>
113+
<annex id="B3" obligation="informative" displayorder="15"><title><strong>Appendix III</strong><br/><br/><strong>Annex</strong></title>
114+
<p class="annex_obligation">(This appendix does not form an integral part of this Recommendation.)</p></annex>
115+
<annex id="B4" obligation="informative" displayorder="16"><title><strong>Appendix IV</strong><br/><br/><strong>Annex</strong></title>
116+
<p class="annex_obligation">(This appendix does not form an integral part of this Recommendation.)</p></annex>
117+
<annex id="B5" obligation="informative" displayorder="17"><title><strong>Appendix V</strong><br/><br/><strong>Annex</strong></title>
118+
<p class="annex_obligation">(This appendix does not form an integral part of this Recommendation.)</p></annex>
119+
<annex id="B6" obligation="informative" displayorder="18"><title><strong>Appendix VI</strong><br/><br/><strong>Annex</strong></title>
120+
<p class="annex_obligation">(This appendix does not form an integral part of this Recommendation.)</p></annex>
121+
<annex id="B7" obligation="informative" displayorder="19"><title><strong>Appendix VII</strong><br/><br/><strong>Annex</strong></title>
122+
<p class="annex_obligation">(This appendix does not form an integral part of this Recommendation.)</p></annex>
123+
<annex id="B8" obligation="informative" displayorder="20"><title><strong>Appendix VIII</strong><br/><br/><strong>Annex</strong></title>
124+
<p class="annex_obligation">(This appendix does not form an integral part of this Recommendation.)</p></annex>
125+
<annex id="B9" obligation="informative" displayorder="21"><title><strong>Appendix IX</strong><br/><br/><strong>Annex</strong></title>
126+
<p class="annex_obligation">(This appendix does not form an integral part of this Recommendation.)</p></annex>
127+
<annex id="B10" obligation="informative" displayorder="22"><title><strong>Appendix X</strong><br/><br/><strong>Annex</strong></title>
128+
<p class="annex_obligation">(This appendix does not form an integral part of this Recommendation.)</p></annex>
109129
</itu-standard>
110130
OUTPUT
111131
html = <<~OUTPUT
@@ -308,6 +328,7 @@
308328
</references><
309329
</sections><annex id="P" inline-header="false" obligation="normative" displayorder="14">
310330
<title><strong>Annex A</strong><br/><br/><strong>Annex</strong></title>
331+
<p class="annex_obligation">(This annex forms an integral part of this Recommendation.)</p>
311332
<clause id="Q" inline-header="false" obligation="normative">
312333
<title depth="2">A.1.<tab/>Annex A.1</title>
313334
<clause id="Q1" inline-header="false" obligation="normative">
@@ -591,13 +612,15 @@
591612
</sections>
592613
<annex id="P" inline-header="false" obligation="normative" displayorder="2">
593614
<title><strong>Annex A</strong><br/><br/><strong>Annex 1</strong></title>
615+
<p class="annex_obligation">(This annex forms an integral part of this Recommendation.)</p>
594616
<clause id="Q" inline-header="false" obligation="normative">
595617
<title>A.1<tab/>Annex A.1</title>
596618
<p>Hello</p>
597619
</clause>
598620
</annex>
599621
<annex id="P1" inline-header="false" obligation="normative" displayorder="3">
600622
<title><strong>Annex B</strong><br/><br/><strong>Annex 2</strong></title>
623+
<p class="annex_obligation">(This annex forms an integral part of this Recommendation.)</p>
601624
<p>Hello</p>
602625
<clause id="Q1" inline-header="false" obligation="normative">
603626
<title>B.1<tab/>Annex A1.1</title>
@@ -631,7 +654,7 @@
631654
</p>
632655
<div class="Section3"><a name="P" id="P"></a>
633656
<h1 class="Annex"><b>Annex A</b> <br/><br/><b>Annex 1</b></h1>
634-
<p class="annex_obligation">(This annex forms an integral part of this Recommendation.)</p>
657+
<p class="annex_obligation">(This annex forms an integral part of this Recommendation Annex.)</p>
635658
<div><a name="Q" id="Q"></a><h2>A.1<span style="mso-tab-count:1">&#xA0; </span>Annex A.1</h2>
636659
<p class="MsoNormal">Hello</p>
637660
</div>
@@ -720,6 +743,7 @@
720743
<br/>
721744
<strong>Annex</strong>
722745
</title>
746+
<p class="annex_obligation">(This annex forms an integral part of this Recommendation.)</p>
723747
<clause id='A2'>
724748
<title depth='2'>F2.1.<tab/>Subtitle</title>
725749
<table id='T'>
@@ -1453,6 +1477,7 @@
14531477
<br/>
14541478
<strong>Annex</strong>
14551479
</title>
1480+
<p class="annex_obligation">(This annex forms an integral part of this Contribution.)</p>
14561481
</annex>
14571482
<annex id="A2" type="justification" displayorder="5">
14581483
<title>
@@ -1461,6 +1486,7 @@
14611486
<br/>
14621487
<strong>A.13 justification for proposed draft new SG17-C1000 “Main Title”</strong>
14631488
</title>
1489+
<p class="annex_obligation">(This annex forms an integral part of this Contribution.)</p>
14641490
<table class="contribution-metadata" unnumbered="true" width="100%">
14651491
<colgroup>
14661492
<col width="15.9%"/>

spec/isodoc/xref_spec.rb

+4-1
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@
175175
</clause>
176176
</sections>
177177
<annex id="annex1" displayorder='6'><title><strong>Annex A</strong></title>
178+
<p class="annex_obligation">(This annex forms an integral part of this .)</p>
178179
<clause id="annex1a"><title>A.1.</title>
179180
</clause>
180181
<clause id="annex1b"><title>A.2.</title>
@@ -379,6 +380,7 @@
379380
<br/>
380381
<strong>Annex</strong>
381382
</title>
383+
<p class="annex_obligation">(This annex forms an integral part of this Recommendation Annex.)</p>
382384
<clause id='A2'>
383385
<title depth='2'>
384386
F2.1.
@@ -389,7 +391,8 @@
389391
</annex>
390392
</itu-standard>
391393
OUTPUT
392-
expect(Xml::C14n.format(strip_guid(IsoDoc::Itu::PresentationXMLConvert.new(presxml_options)
394+
expect(Xml::C14n.format(strip_guid(IsoDoc::Itu::PresentationXMLConvert
395+
.new(presxml_options)
393396
.convert("test", input, true)
394397
.gsub(%r{<localized-strings>.*</localized-strings>}m, ""))))
395398
.to be_equivalent_to Xml::C14n.format(output)

0 commit comments

Comments
 (0)