metanorma-unece 0.0.5 → 0.0.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 +4 -4
- data/README.adoc +16 -5
- data/lib/asciidoctor/unece/converter.rb +16 -34
- data/lib/asciidoctor/unece/isodoc.rng +22 -0
- data/lib/asciidoctor/unece/unece.rng +91 -0
- data/lib/isodoc/unece/html/html_unece_plenary_titlepage.html +133 -0
- data/lib/isodoc/unece/html/html_unece_titlepage.html +5 -2
- data/lib/isodoc/unece/html/unece.scss +10 -3
- data/lib/isodoc/unece/html/word_unece_plenary_titlepage.html +35 -4
- data/lib/isodoc/unece/html/word_unece_titlepage.html +13 -0
- data/lib/isodoc/unece/html_convert.rb +3 -0
- data/lib/isodoc/unece/metadata.rb +31 -3
- data/lib/isodoc/unece/word_convert.rb +258 -246
- data/lib/metanorma/unece/version.rb +1 -1
- data/metanorma-unece.gemspec +2 -1
- metadata +21 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 93cd4ceeaf6825b20fc2292bdf21d4b1303c6beb7fdc15752130cda11f9e1bf6
|
4
|
+
data.tar.gz: ed0519860a0f996f436a3c40236ab6dc4040b303789467cb88482b24e1e4bd6e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: add90ed90dc0ab5745d6ac986c54d090b8929e914db6733601c3becb1e214f372347efa48295d941e07dc9ef8f71bd724d4830f4485bd084b59ca1f81ad7d34a
|
7
|
+
data.tar.gz: fb9137b591878903fb3618e5abd852da8cd4ba8227b58f62397675fd5cceddd12a1d2e47472d487a99449073c98ad8c094a2424b38c538538bddde7c02bf1f39
|
data/README.adoc
CHANGED
@@ -185,8 +185,11 @@ resolution:: Resolutions and other formal decisions of United Nations organs
|
|
185
185
|
`:committee:`:: The name of the relevant UNECE committee, for example,
|
186
186
|
`United Nations Centre for Trade Facilitation and Electronic Business (UN/CEFACT)` (mandatory)
|
187
187
|
|
188
|
-
`:language:` :: The language of the document
|
189
|
-
|
188
|
+
`:language:` :: The language(s) of the document. This is the language in which the document
|
189
|
+
has been issued, not the language(s) in which it has been submitted. ISO-639-1 codes are used
|
190
|
+
for languages, and they are comma-delimited. If not specified, the six official languages of the
|
191
|
+
UN are assumed: Arabic, Chinese, English, French, Russian and Spanish (`ar,zh,en,fr,ru,es`).
|
192
|
+
`:script:` :: The script of the document
|
190
193
|
|
191
194
|
`:toc:` :: Include table of contents in Word output. (Table of contents is always included in
|
192
195
|
HTML output.)
|
@@ -194,23 +197,31 @@ HTML output.)
|
|
194
197
|
NOTE: The attribute `:draft:`, if present, includes review notes in the XML output;
|
195
198
|
these are otherwise suppressed.
|
196
199
|
|
200
|
+
=== UN document-specific attributes
|
201
|
+
|
202
|
+
`:distribution:`:: Extent of distribution allowed. e.g. `General`
|
197
203
|
|
198
204
|
=== Recommendation specific attributes
|
199
205
|
|
200
206
|
`:docnumber:`:: The document number if the document is a Recommendation. e.g. `42` for Recommendation 42, which happens to be the ultimate answer. (mandatory for Recommendation)
|
201
207
|
|
208
|
+
`:submissionlanguage:`:: The language(s) in which the document was originally submitted.
|
209
|
+
ISO-639-1 codes are used for languages, and they are comma-delimited.
|
202
210
|
|
203
211
|
=== Plenary document specific attributes
|
204
212
|
|
205
213
|
`:session-date:`:: Date of the session where this document will be discussed. e.g. `Geneva, 30 April – 1 May 2018`
|
206
214
|
|
207
|
-
`:
|
215
|
+
`:item-number:`:: Number of the agenda item this document belongs to. e.g. `Item 6 of the provisional agenda`. If the document corresponds to multiple items, they are comma-delimited. If the document belongs to multiple subitems under a single item, following editorial practice of the UN (http://dd.dgacm.org/editorialmanual/ed-guidelines/format/Model_mast21.pdf), give the item and subitems identifiers here.
|
216
|
+
|
217
|
+
`:item-name:`:: Name of the agenda item this document belongs to. If the document corresponds to multiple items, they are comma-delimited.
|
218
|
+
`:subitem-name:`:: Name of the agenda subitem this document belongs to. If the document corresponds to multiple subitems, they are comma-delimited.
|
208
219
|
|
209
220
|
`:collaborator:`:: Collaborator of this document, if any. e.g. `World Economic Forum`
|
210
221
|
|
211
|
-
`:agenda-id:`:: The unique
|
222
|
+
`:agenda-id:`:: The unique identifier of this agenda item. e.g. `ECE/TRADE/C/CEFACT/2018/6`. If there are multiple agenda items or subitems, given them comma-delimited.
|
212
223
|
|
213
|
-
`:
|
224
|
+
`:item-footnote:`:: Footnoted reference to item, if item is on the preliminary list or the provisional agenda.
|
214
225
|
|
215
226
|
[[model_additions]]
|
216
227
|
== Asciidoctor features specific to CSAND
|
@@ -80,19 +80,33 @@ module Asciidoctor
|
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
|
+
def metadata_distribution(node, xml)
|
84
|
+
xml.distribution node.attr("distribution") if node.attr("distribution")
|
85
|
+
end
|
86
|
+
|
83
87
|
def metadata_session(node, xml)
|
84
88
|
xml.session do |session|
|
85
89
|
session.number node.attr("session") if node.attr("session")
|
86
90
|
session.date node.attr("session-date") if node.attr("session-date")
|
87
|
-
|
91
|
+
node&.attr("item-number")&.split(/,[ ]*/)&.each { |i| session.item_number i }
|
92
|
+
node&.attr("item-name")&.split(/,[ ]*/)&.each { |i| session.item_name i }
|
93
|
+
node&.attr("subitem-name")&.split(/,[ ]*/)&.each { |i| session.subitem_name i }
|
88
94
|
session.collaborator node.attr("collaborator") if node.attr("collaborator")
|
89
95
|
session.id node.attr("agenda-id") if node.attr("agenda-id")
|
90
|
-
session.
|
96
|
+
session.item_footnote node.attr("item-footnote") if node.attr("item-footnote")
|
91
97
|
end
|
92
98
|
end
|
93
99
|
|
100
|
+
def metadata_language(node, xml)
|
101
|
+
languages = node&.attr("language")&.split(/,[ ]*/) || %w(ar ru en fr zh es)
|
102
|
+
languages.each { |l| xml.language l }
|
103
|
+
languages = node&.attr("submissionlanguage")&.split(/,[ ]*/) || []
|
104
|
+
languages.each { |l| xml.submissionlanguage l }
|
105
|
+
end
|
106
|
+
|
94
107
|
def metadata(node, xml)
|
95
108
|
super
|
109
|
+
metadata_distribution(node, xml)
|
96
110
|
metadata_session(node, xml)
|
97
111
|
end
|
98
112
|
|
@@ -144,15 +158,6 @@ module Asciidoctor
|
|
144
158
|
File.join(File.dirname(__FILE__), "unece.rng"))
|
145
159
|
end
|
146
160
|
|
147
|
-
def literal(node)
|
148
|
-
noko do |xml|
|
149
|
-
xml.figure **id_attr(node) do |f|
|
150
|
-
figure_title(node, f)
|
151
|
-
f.pre node.lines.join("\n")
|
152
|
-
end
|
153
|
-
end
|
154
|
-
end
|
155
|
-
|
156
161
|
def style(n, t)
|
157
162
|
return
|
158
163
|
end
|
@@ -173,29 +178,6 @@ module Asciidoctor
|
|
173
178
|
IsoDoc::Unece::WordConvert.new(doc_extract_attributes(node))
|
174
179
|
end
|
175
180
|
|
176
|
-
def inline_quoted(node)
|
177
|
-
noko do |xml|
|
178
|
-
case node.type
|
179
|
-
when :emphasis then xml.em node.text
|
180
|
-
when :strong then xml.strong node.text
|
181
|
-
when :monospaced then xml.tt node.text
|
182
|
-
when :double then xml << "\"#{node.text}\""
|
183
|
-
when :single then xml << "'#{node.text}'"
|
184
|
-
when :superscript then xml.sup node.text
|
185
|
-
when :subscript then xml.sub node.text
|
186
|
-
when :asciimath then stem_parse(node.text, xml)
|
187
|
-
else
|
188
|
-
case node.role
|
189
|
-
when "strike" then xml.strike node.text
|
190
|
-
when "smallcap" then xml.smallcap node.text
|
191
|
-
when "keyword" then xml.keyword node.text
|
192
|
-
else
|
193
|
-
xml << node.text
|
194
|
-
end
|
195
|
-
end
|
196
|
-
end.join
|
197
|
-
end
|
198
|
-
|
199
181
|
def sections_cleanup(xmldoc)
|
200
182
|
super
|
201
183
|
xmldoc.xpath("//clause/p | //annex/p").each do |p|
|
@@ -384,6 +384,7 @@
|
|
384
384
|
<ref name="sourcecode"/>
|
385
385
|
<ref name="example"/>
|
386
386
|
<ref name="review"/>
|
387
|
+
<ref name="pre"/>
|
387
388
|
</choice>
|
388
389
|
</define>
|
389
390
|
<define name="paragraph">
|
@@ -540,6 +541,20 @@
|
|
540
541
|
</zeroOrMore>
|
541
542
|
</element>
|
542
543
|
</define>
|
544
|
+
<define name="pre">
|
545
|
+
<element name="pre">
|
546
|
+
<attribute name="id">
|
547
|
+
<data type="ID"/>
|
548
|
+
</attribute>
|
549
|
+
<optional>
|
550
|
+
<ref name="tname"/>
|
551
|
+
</optional>
|
552
|
+
<text/>
|
553
|
+
<zeroOrMore>
|
554
|
+
<ref name="note"/>
|
555
|
+
</zeroOrMore>
|
556
|
+
</element>
|
557
|
+
</define>
|
543
558
|
<define name="table">
|
544
559
|
<element name="table">
|
545
560
|
<attribute name="id">
|
@@ -710,6 +725,7 @@
|
|
710
725
|
</optional>
|
711
726
|
<choice>
|
712
727
|
<ref name="image"/>
|
728
|
+
<ref name="pre"/>
|
713
729
|
<zeroOrMore>
|
714
730
|
<ref name="figure"/>
|
715
731
|
</zeroOrMore>
|
@@ -735,6 +751,7 @@
|
|
735
751
|
<ref name="sub"/>
|
736
752
|
<ref name="sup"/>
|
737
753
|
<ref name="tt"/>
|
754
|
+
<ref name="keyword"/>
|
738
755
|
<ref name="strike"/>
|
739
756
|
<ref name="smallcap"/>
|
740
757
|
<ref name="xref"/>
|
@@ -765,6 +782,11 @@
|
|
765
782
|
<text/>
|
766
783
|
</element>
|
767
784
|
</define>
|
785
|
+
<define name="keyword">
|
786
|
+
<element name="keyword">
|
787
|
+
<text/>
|
788
|
+
</element>
|
789
|
+
</define>
|
768
790
|
<define name="sub">
|
769
791
|
<element name="sub">
|
770
792
|
<text/>
|
@@ -199,6 +199,9 @@
|
|
199
199
|
<zeroOrMore>
|
200
200
|
<ref name="language"/>
|
201
201
|
</zeroOrMore>
|
202
|
+
<zeroOrMore>
|
203
|
+
<ref name="submissionlanguage"/>
|
204
|
+
</zeroOrMore>
|
202
205
|
<zeroOrMore>
|
203
206
|
<ref name="script"/>
|
204
207
|
</zeroOrMore>
|
@@ -216,6 +219,12 @@
|
|
216
219
|
<zeroOrMore>
|
217
220
|
<ref name="ics"/>
|
218
221
|
</zeroOrMore>
|
222
|
+
<optional>
|
223
|
+
<ref name="distribution"/>
|
224
|
+
</optional>
|
225
|
+
<optional>
|
226
|
+
<ref name="session"/>
|
227
|
+
</optional>
|
219
228
|
</define>
|
220
229
|
<define name="preface">
|
221
230
|
<element name="preface">
|
@@ -236,11 +245,93 @@
|
|
236
245
|
</element>
|
237
246
|
</define>
|
238
247
|
</include>
|
248
|
+
<define name="session">
|
249
|
+
<element name="session">
|
250
|
+
<optional>
|
251
|
+
<ref name="session-number"/>
|
252
|
+
</optional>
|
253
|
+
<optional>
|
254
|
+
<ref name="session-date"/>
|
255
|
+
</optional>
|
256
|
+
<zeroOrMore>
|
257
|
+
<ref name="item-number"/>
|
258
|
+
</zeroOrMore>
|
259
|
+
<zeroOrMore>
|
260
|
+
<ref name="item-name"/>
|
261
|
+
</zeroOrMore>
|
262
|
+
<zeroOrMore>
|
263
|
+
<ref name="subitem-name"/>
|
264
|
+
</zeroOrMore>
|
265
|
+
<optional>
|
266
|
+
<ref name="collaborator"/>
|
267
|
+
</optional>
|
268
|
+
<optional>
|
269
|
+
<ref name="agenda-id"/>
|
270
|
+
</optional>
|
271
|
+
<optional>
|
272
|
+
<ref name="item-footnote"/>
|
273
|
+
</optional>
|
274
|
+
</element>
|
275
|
+
</define>
|
239
276
|
<define name="committee">
|
240
277
|
<element name="committee">
|
241
278
|
<text/>
|
242
279
|
</element>
|
243
280
|
</define>
|
281
|
+
<define name="session-number">
|
282
|
+
<element name="number">
|
283
|
+
<text/>
|
284
|
+
</element>
|
285
|
+
</define>
|
286
|
+
<define name="session-date">
|
287
|
+
<element name="session-date">
|
288
|
+
<data type="date"/>
|
289
|
+
</element>
|
290
|
+
</define>
|
291
|
+
<define name="item-number">
|
292
|
+
<element name="item-number">
|
293
|
+
<text/>
|
294
|
+
</element>
|
295
|
+
</define>
|
296
|
+
<define name="collaborator">
|
297
|
+
<element name="collaborator">
|
298
|
+
<text/>
|
299
|
+
</element>
|
300
|
+
</define>
|
301
|
+
<define name="agenda-id">
|
302
|
+
<element name="agenda-id">
|
303
|
+
<text/>
|
304
|
+
</element>
|
305
|
+
</define>
|
306
|
+
<define name="item-name">
|
307
|
+
<element name="item-name">
|
308
|
+
<text/>
|
309
|
+
</element>
|
310
|
+
</define>
|
311
|
+
<define name="subitem-name">
|
312
|
+
<element name="subitem-name">
|
313
|
+
<text/>
|
314
|
+
</element>
|
315
|
+
</define>
|
316
|
+
<define name="item-footnote">
|
317
|
+
<element name="item-footnote">
|
318
|
+
<text/>
|
319
|
+
</element>
|
320
|
+
</define>
|
321
|
+
<define name="submissionlanguage">
|
322
|
+
<element name="submissionlanguage">
|
323
|
+
<text/>
|
324
|
+
</element>
|
325
|
+
</define>
|
326
|
+
<define name="distribution">
|
327
|
+
<element name="distribution">
|
328
|
+
<choice>
|
329
|
+
<value>general</value>
|
330
|
+
<value>limited</value>
|
331
|
+
<value>restricted</value>
|
332
|
+
</choice>
|
333
|
+
</element>
|
334
|
+
</define>
|
244
335
|
<define name="unece-standard">
|
245
336
|
<element name="unece-standard">
|
246
337
|
<ref name="bibdata"/>
|
@@ -0,0 +1,133 @@
|
|
1
|
+
<div class="document-stage-band" id='{{ status | downcase | replace: " ", "-" }}-band'>
|
2
|
+
<p class="document-stage">{{ status }}</p>
|
3
|
+
</div>
|
4
|
+
|
5
|
+
<div class="document-type-band" id='{{ doctype | downcase | replace: " ", "-" }}-band'>
|
6
|
+
<p class="document-type">UNECE {{ doctype }}</p>
|
7
|
+
</div>
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
<div id='toggle'> <span>•</span> </div>
|
12
|
+
|
13
|
+
<header>
|
14
|
+
|
15
|
+
<!--<div class="WordSection1">-->
|
16
|
+
<div class="coverpage">
|
17
|
+
<div class="wrapper-top">
|
18
|
+
|
19
|
+
<div class="coverpage-doc-identity">
|
20
|
+
<div class="doc-number">
|
21
|
+
<span class="docnumber">{{ formatted_docnumber }}</span>
|
22
|
+
<span class="docyear">{{ draftinfo }}</span>
|
23
|
+
</div>
|
24
|
+
|
25
|
+
<div class="doc-number">
|
26
|
+
<p>{{ session_number }} session</p>
|
27
|
+
<p>{{ session_date }}</p>
|
28
|
+
{% if session_itemnumber.size == 1 %}
|
29
|
+
<p>Agenda item {{ session_itemnumber[0] }}</p>
|
30
|
+
{% endif %}
|
31
|
+
{% if session_itemnumber.size > 1 %}
|
32
|
+
<p>Agenda items {{ session_itemnumber | join: ", " }}</p>
|
33
|
+
{% endif %}
|
34
|
+
<p>{{ docnumber }}{% if item_footnote %}[{{item_footnote}}]{% endif %}
|
35
|
+
{% if session_itemname.size > 0 %}
|
36
|
+
<p> {{ session_itemname | join: "<br/>" }}</p>
|
37
|
+
{% endif %}
|
38
|
+
{% if session_subitemname.size > 0 %}
|
39
|
+
<p>{{ session_subitemname | join: "<br/>" }}</p>
|
40
|
+
{% endif %}
|
41
|
+
</div>
|
42
|
+
</div>
|
43
|
+
|
44
|
+
<div class="coverpage-title">
|
45
|
+
<span class="title-first">{{ doctitle }}</span>
|
46
|
+
<!--<span class="title-second">{{ docsubtitle }}</span>-->
|
47
|
+
</div>
|
48
|
+
</div>
|
49
|
+
|
50
|
+
<div class="coverpage-logo">
|
51
|
+
<span>UNECE {{ docyear }}</span>
|
52
|
+
</div>
|
53
|
+
|
54
|
+
<div class="coverpage-tc-name">
|
55
|
+
<span>{{ tc }}</span>
|
56
|
+
</div>
|
57
|
+
</div>
|
58
|
+
|
59
|
+
<div class="wrapper-top-bottom"></div>
|
60
|
+
|
61
|
+
<div class="WordSection11">
|
62
|
+
<div class="coverpage-stage-block" >
|
63
|
+
<span class="coverpage-stage" id="{{ doctype | replace: ' ', '-' | downcase }}">UNECE {{ doctype }}</span>
|
64
|
+
</div>
|
65
|
+
|
66
|
+
<div class="coverpage-stage-block" >
|
67
|
+
<p><span class="coverpage-maturity" id="{{ status | replace: ' ', '-' | downcase }}">{% if unpublished %}{{ status }}{% endif %}</span></p>
|
68
|
+
{% if submissionlanguage %}
|
69
|
+
<p><span class="coverpage-maturity">Original: {{ submissionlanguage | join: "/" }}</span></p>
|
70
|
+
{% endif %}
|
71
|
+
{% if language %}
|
72
|
+
<p><span class="coverpage-maturity">{{ language | join: ", " }} only</span></p>
|
73
|
+
{% endif %}
|
74
|
+
</div>
|
75
|
+
|
76
|
+
{% if doctype == "Policy And Procedures" or doctype == "Proposal" %}
|
77
|
+
<div class="coverpage-stage-block" >{{ revdate }}</div>
|
78
|
+
{% endif %}
|
79
|
+
|
80
|
+
{% if unpublished %}
|
81
|
+
<div class="coverpage-warning">
|
82
|
+
<span class="title">Warning for Drafts</span>
|
83
|
+
|
84
|
+
<p class="content">
|
85
|
+
This document is not a UNECE Standard. It is distributed for review and
|
86
|
+
comment, and is subject to change without notice and may not be referred to as
|
87
|
+
a Standard. Recipients of this draft are invited to submit, with their
|
88
|
+
comments, notification of any relevant patent rights of which they are aware
|
89
|
+
and to provide supporting documentation.
|
90
|
+
</p>
|
91
|
+
</div>
|
92
|
+
{% endif %}
|
93
|
+
|
94
|
+
<div class="info-section">
|
95
|
+
<div class="copyright">
|
96
|
+
<p class="year">
|
97
|
+
© {{ docyear }} United Nations.
|
98
|
+
</p>
|
99
|
+
|
100
|
+
<p class="message">
|
101
|
+
None of the materials provided on this web site may be used,
|
102
|
+
reproduced or transmitted, in whole or in part, in any form or by any
|
103
|
+
means, electronic or mechanical, including photocopying, recording or
|
104
|
+
the use of any information storage and retrieval system, except as
|
105
|
+
provided for in the Terms and Conditions of Use of United Nations Web
|
106
|
+
Sites, without permission in writing from the publisher. <br>
|
107
|
+
<br>
|
108
|
+
News-related material can be used as long as the appropriate credit is given and the United Nations is advised.<br>
|
109
|
+
<br>
|
110
|
+
To request such permission or for further enquires, please visit:
|
111
|
+
<a href="https://shop.un.org/rights-permissions">United Nations Publications: Rights and Permissions.</a><br>
|
112
|
+
</p>
|
113
|
+
|
114
|
+
<div class="contact-info">
|
115
|
+
<p class="name">UN Economic Commission for Europe: Information Service</p>
|
116
|
+
<p class="address">
|
117
|
+
Palais des Nations<br />
|
118
|
+
CH-1211 Geneva 10<br />
|
119
|
+
Switzerland<br />
|
120
|
+
<br />
|
121
|
+
<a href="tel:+41(0)229171234">+41 (0) 22 917 12 34 (switchboard)</a><br />
|
122
|
+
<a href="mailto:unece_info@un.org">unece_info@un.org</a><br />
|
123
|
+
<a href="https://www.unece.org/">www.unece.org/</a>
|
124
|
+
</p>
|
125
|
+
</div>
|
126
|
+
</div>
|
127
|
+
|
128
|
+
<div class="rule"></div>
|
129
|
+
</div>
|
130
|
+
</div>
|
131
|
+
|
132
|
+
|
133
|
+
</header>
|