metanorma-itu 2.6.7 → 2.6.9

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.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/lib/isodoc/itu/html/_coverpage.css +7 -1
  3. data/lib/isodoc/itu/html/header.html +8 -8
  4. data/lib/isodoc/itu/html/html_itu_titlepage.html +2 -2
  5. data/lib/isodoc/itu/html/htmlstyle.css +7 -1
  6. data/lib/isodoc/itu/html/word_itu_intro.html +4 -2
  7. data/lib/isodoc/itu/html/word_itu_titlepage.html +1 -1
  8. data/lib/isodoc/itu/i18n-ar.yaml +1 -0
  9. data/lib/isodoc/itu/i18n-de.yaml +1 -0
  10. data/lib/isodoc/itu/i18n-en.yaml +1 -0
  11. data/lib/isodoc/itu/i18n-es.yaml +1 -0
  12. data/lib/isodoc/itu/i18n-fr.yaml +1 -0
  13. data/lib/isodoc/itu/i18n-ru.yaml +1 -0
  14. data/lib/isodoc/itu/i18n-zh-Hans.yaml +1 -0
  15. data/lib/isodoc/itu/itu.implementers-guide.xsl +9014 -10001
  16. data/lib/isodoc/itu/itu.in-force.xsl +9014 -10001
  17. data/lib/isodoc/itu/itu.recommendation-annex.xsl +9014 -10001
  18. data/lib/isodoc/itu/itu.recommendation-supplement.xsl +9014 -10001
  19. data/lib/isodoc/itu/itu.recommendation.xsl +9014 -10001
  20. data/lib/isodoc/itu/itu.resolution.xsl +9014 -10001
  21. data/lib/isodoc/itu/itu.service-publication.xsl +9014 -10001
  22. data/lib/isodoc/itu/itu.technical-paper.xsl +9014 -10001
  23. data/lib/isodoc/itu/itu.technical-report.xsl +9014 -10001
  24. data/lib/isodoc/itu/metadata.rb +2 -2
  25. data/lib/isodoc/itu/presentation_contribution.rb +38 -37
  26. data/lib/isodoc/itu/presentation_preface.rb +13 -9
  27. data/lib/isodoc/itu/presentation_section.rb +25 -9
  28. data/lib/metanorma/itu/boilerplate.adoc +3 -3
  29. data/lib/metanorma/itu/cleanup_section.rb +20 -15
  30. data/lib/metanorma/itu/converter.rb +0 -8
  31. data/lib/metanorma/itu/front_id.rb +6 -0
  32. data/lib/metanorma/itu/isodoc.rng +19 -2
  33. data/lib/metanorma/itu/version.rb +1 -1
  34. data/metanorma-itu.gemspec +1 -2
  35. metadata +4 -18
@@ -120,7 +120,7 @@ module IsoDoc
120
120
  def docid(xml, _out)
121
121
  { docnumber: "ITU", recommendationnumber: "ITU-Recommendation",
122
122
  docnumber_lang: "ITU-lang", docnumber_td: "ITU-TemporaryDocument",
123
- docnumber_provisional: "ITU-provisional" }
123
+ docnumber_provisional: "ITU-provisional", docnumber_iso: "ISO" }
124
124
  .each do |k, v|
125
125
  dn = xml.at(ns("//bibdata/docidentifier[@type = '#{v}']")) and
126
126
  set(k, dn.text)
@@ -168,7 +168,7 @@ module IsoDoc
168
168
  set(:doctype_display, "Recommendation")
169
169
  else super
170
170
  end
171
- d = get[:doctype] and
171
+ d = get[:doctype_display] and
172
172
  set(:draft_new_doctype, @labels["draft_new"].sub("%", d))
173
173
  end
174
174
 
@@ -11,25 +11,25 @@ module IsoDoc
11
11
  @doctype == "contribution" or return
12
12
  bureau = bold_and_upcase(@meta.get[:bureau_full])
13
13
  <<~TABLE
14
- <clause unnumbered="true" type="contribution-metadata">
15
- <table class="contribution-metadata" unnumbered="true" width="100%">
14
+ <clause #{add_id_text} unnumbered="true" type="contribution-metadata">
15
+ <table #{add_id_text} class="contribution-metadata" unnumbered="true" width="100%">
16
16
  <colgroup><col width="11.8%"/><col width="41.2%"/><col width="47.0%"/></colgroup>
17
17
  <thead>
18
- <tr><th rowspan="3"><image height="56" width="56" src="#{@meta.get[:logo_small]}"/></th>
19
- <td rowspan="3"><p style="font-size:8pt;margin-top:6pt;margin-bottom:0pt;">#{@i18n.international_telecommunication_union.upcase}</p>
18
+ <tr #{add_id_text}><th rowspan="3" #{add_id_text}><image height="56" width="56" src="#{@meta.get[:logo_small]}"/></th>
19
+ <td #{add_id_text} rowspan="3"><p style="font-size:8pt;margin-top:6pt;margin-bottom:0pt;">#{@i18n.international_telecommunication_union.upcase}</p>
20
20
  <p class="bureau_big" style="font-size:13pt;margin-top:6pt;margin-bottom:0pt;">#{bureau}</p>
21
21
  <p style="font-size:10pt;margin-top:6pt;margin-bottom:0pt;">#{@i18n.studyperiod.sub('%', @meta.get[:study_group_period]).upcase}</p></th>
22
- <th align="right"><p style="font-size:16pt;">#{@meta.get[:docnumber]}</p></th></tr>
23
- <tr><th align="right"><p style="font-size:14pt;">#{@meta.get[:group].upcase}</p></th></tr>
24
- <tr>
25
- <th align="right"><p style="font-size:14pt;">#{@i18n.l10n("#{@i18n.original}: #{@i18n.current_language}")}</p></th>
22
+ <th #{add_id_text} align="right"><p style="font-size:16pt;">#{@meta.get[:docnumber]}</p></th></tr>
23
+ <tr #{add_id_text}><th #{add_id_text} align="right"><p style="font-size:14pt;">#{@meta.get[:group].upcase}</p></th></tr>
24
+ <tr #{add_id_text}>
25
+ <th #{add_id_text} align="right"><p style="font-size:14pt;">#{@i18n.l10n("#{@i18n.original}: #{@i18n.current_language}")}</p></th>
26
26
  </tr></thead>
27
27
  <tbody>
28
- <tr><th align="left" width="95">#{colon_i18n(@i18n.questions)}</th><td>#{@meta.get[:questions]}</td>
29
- <td align="right">#{@i18n.l10n("#{@meta.get[:meeting_place]}, #{@meta.get[:meeting_date]}")}</td></tr>
30
- <tr><th align="center" colspan="3">#{@i18n.get['doctype_dict']['contribution'].upcase}</th></tr>
31
- <tr><th align="left" width="95">#{colon_i18n(@i18n.document_source)}</th><td colspan="2">#{@meta.get[:source]}</td></tr>
32
- <tr><th align="left" width="95">#{colon_i18n(@i18n.title)}</th><td colspan="2">#{@meta.get[:doctitle_en]}</td></tr>
28
+ <tr #{add_id_text}><th #{add_id_text} align="left" width="95">#{colon_i18n(@i18n.questions)}</th><td #{add_id_text}>#{@meta.get[:questions]}</td>
29
+ <td #{add_id_text} align="right">#{@i18n.l10n("#{@meta.get[:meeting_place]}, #{@meta.get[:meeting_date]}")}</td></tr>
30
+ <tr #{add_id_text}><th #{add_id_text} align="center" colspan="3">#{@i18n.get['doctype_dict']['contribution'].upcase}</th></tr>
31
+ <tr #{add_id_text}><th #{add_id_text} align="left" width="95">#{colon_i18n(@i18n.document_source)}</th><td #{add_id_text} colspan="2">#{@meta.get[:source]}</td></tr>
32
+ <tr #{add_id_text}><th #{add_id_text} align="left" width="95">#{colon_i18n(@i18n.title)}</th><td #{add_id_text} colspan="2">#{@meta.get[:doctitle_en]}</td></tr>
33
33
  #{contribution_table_contacts}
34
34
  </tbody></table>
35
35
  </clause>
@@ -55,7 +55,8 @@ module IsoDoc
55
55
  end
56
56
  n.map do |x|
57
57
  lbl = colon_i18n(@i18n.contact)
58
- "<tr><th align='left' width='95'>#{lbl}</th>#{x}</tr>"
58
+ "<tr #{add_id_text}>" \
59
+ "<th #{add_id_text} align='left' width='95'>#{lbl}</th>#{x}</tr>"
59
60
  end.join("\n")
60
61
  end
61
62
 
@@ -63,10 +64,10 @@ module IsoDoc
63
64
  @meta.get[:emails][idx] and
64
65
  e = "<br/>#{@i18n.email}<tab/>#{@meta.get[:emails][idx]}"
65
66
  <<~CELL
66
- <td>#{@meta.get[:authors][idx]}<br/>
67
+ <td #{add_id_text}>#{@meta.get[:authors][idx]}<br/>
67
68
  #{@meta.get[:affiliations][idx]}<br/>
68
69
  #{@meta.get[:addresses][idx]}</td>
69
- <td>#{@i18n.tel_abbrev}<tab/>#{@meta.get[:phones][idx]}#{e}</td>
70
+ <td #{add_id_text}>#{@i18n.tel_abbrev}<tab/>#{@meta.get[:phones][idx]}#{e}</td>
70
71
  CELL
71
72
  end
72
73
 
@@ -108,7 +109,7 @@ module IsoDoc
108
109
  def contribution_justification_auths
109
110
  auths = contrib_justification_contacts
110
111
  auths_tail = auths[1..auths.size].map do |x|
111
- "<tr><td colspan='2'>#{x}</td></td>"
112
+ "<tr #{add_id_text}><td #{add_id_text} colspan='2'>#{x}</td></td>"
112
113
  end.join("\n")
113
114
  [auths, auths_tail]
114
115
  end
@@ -118,33 +119,33 @@ module IsoDoc
118
119
  annex = doc.at(ns("//annex[@type = 'justification']")) or return
119
120
  auths, auths_tail = contribution_justification_auths
120
121
  annex.children = <<~TABLE
121
- <title>#{contribution_justification_title(doc)}</title>
122
- <table class="contribution-metadata" unnumbered="true" width="100%">
122
+ <title #{add_id_text}>#{contribution_justification_title(doc)}</title>
123
+ <table #{add_id_text} class="contribution-metadata" unnumbered="true" width="100%">
123
124
  <colgroup><col width="15.9%"/><col width="6.1%"/><col width="45.5%"/><col width="17.4%"/><col width="15.1%"/></colgroup>
124
125
  <tbody>
125
- <tr>
126
- <th align="left">#{colon_i18n(@i18n.questions)}</th><td>#{@meta.get[:questions]}</td>
127
- <th align="left">Proposed new ITU-T #{@meta.get[:subdoctype]}</th>
128
- <td colspan="2">#{@i18n.l10n("#{@meta.get[:meeting_place]}, #{@meta.get[:meeting_date]}")}</td>
126
+ <tr #{add_id_text}>
127
+ <th #{add_id_text} align="left">#{colon_i18n(@i18n.questions)}</th><td #{add_id_text}>#{@meta.get[:questions]}</td>
128
+ <th #{add_id_text} align="left">Proposed new ITU-T #{@meta.get[:subdoctype]}</th>
129
+ <td #{add_id_text} colspan="2">#{@i18n.l10n("#{@meta.get[:meeting_place]}, #{@meta.get[:meeting_date]}")}</td>
129
130
  </tr>
130
- <tr><th align="left">Reference and title:</th>
131
- <td colspan="4">Draft new #{@meta.get[:subdoctype]} on “#{@meta.get[:doctitle_en]}”</td>
131
+ <tr #{add_id_text}><th #{add_id_text} align="left">Reference and title:</th>
132
+ <td #{add_id_text} colspan="4">Draft new #{@meta.get[:subdoctype]} on “#{@meta.get[:doctitle_en]}”</td>
132
133
  </tr>
133
- <tr>
134
- <th align="left">Base text:</th><td colspan="2">#{extract_clause_data(annex, 'basetext')}</td>
135
- <th align="left">Timing:</th><td>#{@meta.get[:timing]}</td>
134
+ <tr #{add_id_text}>
135
+ <th #{add_id_text} align="left">Base text:</th><td #{add_id_text} colspan="2">#{extract_clause_data(annex, 'basetext')}</td>
136
+ <th #{add_id_text} align="left">Timing:</th><td #{add_id_text}>#{@meta.get[:timing]}</td>
136
137
  </tr>
137
- <tr><th align="left" rowspan="#{auths.size - 1}">Editor(s):</th>
138
- <td colspan="2">#{auths[0]}</td>
139
- <th align="left" rowspan="#{auths.size - 1}">Approval process:</th>
140
- <td rowspan="#{auths.size - 1}">#{@meta.get[:approval_process]}</td>
138
+ <tr #{add_id_text}><th #{add_id_text} align="left" rowspan="#{auths.size - 1}">Editor(s):</th>
139
+ <td #{add_id_text} colspan="2">#{auths[0]}</td>
140
+ <th #{add_id_text} align="left" rowspan="#{auths.size - 1}">Approval process:</th>
141
+ <td #{add_id_text} rowspan="#{auths.size - 1}">#{@meta.get[:approval_process]}</td>
141
142
  </tr>
142
143
  #{auths_tail}
143
- <tr><td colspan="5"><p><strong>Scope</strong> (defines the intent or object of the Recommendation and the aspects covered, thereby indicating the limits of its applicability):</p>#{extract_clause_data(annex, 'scope')}</td></tr>
144
- <tr><td colspan="5"><p><strong>Summary</strong> (provides a brief overview of the purpose and contents of the Recommendation, thus permitting readers to judge its usefulness for their work):</p>#{extract_clause_data(annex, 'summary')}</td></tr>
145
- <tr><td colspan="5"><p><strong>Relations to ITU-T Recommendations or to other standards</strong> (approved or under development):</p>#{extract_clause_data(annex, 'relatedstandards')}</td></tr>
146
- <tr><td colspan="5"><p><strong>Liaisons with other study groups or with other standards bodies:</strong></p>#{extract_clause_data(annex, 'liaisons')}</td></tr>
147
- <tr><td colspan="5"><p><strong>Supporting members that are committing to contributing actively to the work item:</strong></p>#{extract_clause_data(annex, 'supportingmembers')}</td></tr>
144
+ <tr #{add_id_text}><td #{add_id_text} colspan="5"><p><strong>Scope</strong> (defines the intent or object of the Recommendation and the aspects covered, thereby indicating the limits of its applicability):</p>#{extract_clause_data(annex, 'scope')}</td></tr>
145
+ <tr #{add_id_text}><td #{add_id_text} colspan="5"><p><strong>Summary</strong> (provides a brief overview of the purpose and contents of the Recommendation, thus permitting readers to judge its usefulness for their work):</p>#{extract_clause_data(annex, 'summary')}</td></tr>
146
+ <tr #{add_id_text}><td #{add_id_text} colspan="5"><p><strong>Relations to ITU-T Recommendations or to other standards</strong> (approved or under development):</p>#{extract_clause_data(annex, 'relatedstandards')}</td></tr>
147
+ <tr #{add_id_text}><td #{add_id_text} colspan="5"><p><strong>Liaisons with other study groups or with other standards bodies:</strong></p>#{extract_clause_data(annex, 'liaisons')}</td></tr>
148
+ <tr #{add_id_text}><td #{add_id_text} colspan="5"><p><strong>Supporting members that are committing to contributing actively to the work item:</strong></p>#{extract_clause_data(annex, 'supportingmembers')}</td></tr>
148
149
  </tbody>
149
150
  </table>
150
151
  TABLE
@@ -42,8 +42,8 @@ module IsoDoc
42
42
  ed_lbl &&= l10n("#{ed_lbl.capitalize}:")
43
43
  mail_lbl = l10n("#{@i18n.get['email']}: ")
44
44
  ret = <<~SUBMITTING
45
- <clause id="_#{UUIDTools::UUID.random_create}" type="editors">
46
- <table id="_#{UUIDTools::UUID.random_create}" unnumbered="true"><tbody>
45
+ <clause #{add_id_text} type="editors">
46
+ <table #{add_id_text} unnumbered="true"><tbody>
47
47
  SUBMITTING
48
48
  ret += editor_table_entries(eds, ed_lbl, mail_lbl)
49
49
  "#{ret}</tbody></table></clause>"
@@ -56,8 +56,10 @@ module IsoDoc
56
56
  mail = "#{mail_lbl}<link target='mailto:#{n[:email]}'>" \
57
57
  "#{n[:email]}</link>"
58
58
  aff = n[:affiliation].empty? ? "" : "<br/>#{n[:affiliation]}"
59
- th = "<th>#{i.zero? ? ed_lbl : ''}</th>"
60
- m << "<tr>#{th}<td>#{n[:name]}#{aff}</td><td>#{mail}</td></tr>"
59
+ th = "<th #{add_id_text}>#{i.zero? ? ed_lbl : ''}</th>"
60
+ m << <<~XML
61
+ <tr #{add_id_text}>#{th}<td #{add_id_text}>#{n[:name]}#{aff}</td><td #{add_id_text}>#{mail}</td></tr>
62
+ XML
61
63
  end.join("\n")
62
64
  end
63
65
 
@@ -87,11 +89,11 @@ module IsoDoc
87
89
  abstract.at(ns("./title"))&.remove
88
90
  abstract.at(ns("./fmt-title"))&.remove
89
91
  abstract.children = <<~TABLE
90
- <table class="abstract" unnumbered="true" width="100%">
92
+ <table #{add_id_text} class="abstract" unnumbered="true" width="100%">
91
93
  <colgroup><col width="11.8%"/><col width="78.2%"/></colgroup>
92
94
  <tbody>
93
- <tr><th align="left" width="95"><p>#{colon_i18n(@i18n.abstract)}</p></th>
94
- <td>#{abstract.children.to_xml}</td></tr>
95
+ <tr #{add_id_text}><th #{add_id_text} align="left" width="95"><p>#{colon_i18n(@i18n.abstract)}</p></th>
96
+ <td #{add_id_text}>#{abstract.children.to_xml}</td></tr>
95
97
  </tbody></table>
96
98
  TABLE
97
99
  end
@@ -99,8 +101,10 @@ module IsoDoc
99
101
  def keywords(_docxml)
100
102
  kw = @meta.get[:keywords]
101
103
  kw.nil? || kw.empty? || @doctype == "contribution" and return
102
- "<clause type='keyword'><fmt-title>#{@i18n.keywords}</fmt-title>" \
103
- "<p>#{@i18n.l10n(kw.join(', '))}.</p>"
104
+ <<~XML
105
+ <clause #{add_id_text} type='keyword'><fmt-title #{add_id_text}>#{@i18n.keywords}</fmt-title>
106
+ <p>#{@i18n.l10n(kw.join(', '))}.</p>
107
+ XML
104
108
  end
105
109
 
106
110
  def toc_title(docxml)
@@ -13,7 +13,6 @@ module IsoDoc
13
13
  "<p keep-with-next='true' class='supertitle'>" \
14
14
  "#{labelled_autonum(@i18n.get['section'].upcase, elem['id'],
15
15
  lbl)}</p>"
16
- # "<span element='fmt-element-name'>#{@i18n.get['section'].upcase}</span> #{autonum(elem['id'], lbl)}</p>"
17
16
  end
18
17
 
19
18
  def clause1_super?(elem)
@@ -43,7 +42,9 @@ module IsoDoc
43
42
  ins = elem.at(ns("./fmt-xref-label")) || elem.at(ns("./fmt-title"))
44
43
  p = (info ? @i18n.inform_annex : @i18n.norm_annex)
45
44
  .gsub("%", @i18n.doctype_dict[@meta.get[:doctype_original]] || "")
46
- ins.next = %(<p class="annex_obligation"><span class='fmt-obligation'>#{p}</span></p>)
45
+ ins.next = <<~XML
46
+ <p class="annex_obligation"><span class='fmt-obligation'>#{p}</span></p>
47
+ XML
47
48
  end
48
49
 
49
50
  def annex1_supertitle(elem)
@@ -86,16 +87,31 @@ module IsoDoc
86
87
 
87
88
  def middle_title_recommendation(isoxml, out)
88
89
  ret = ""
89
- type = @meta.get[:doctype]
90
+ id = @meta.get[:docnumber_iso] and ret += <<~XML
91
+ <p class='zzSTDTitle1'>#{@i18n.international_standard} #{id}</p>
92
+ XML
93
+ ret += middle_title_recommendation_first_line
94
+ ret += middle_title_recommendation_second_line(isoxml)
95
+ s = @meta.get[:docsubtitle] and ret += "<p class='zzSTDTitle3'>#{s}</p>"
96
+ out.previous = ret
97
+ end
98
+
99
+ def middle_title_recommendation_first_line
100
+ ret = ""
101
+ type = @meta.get[:doctype_display]
90
102
  @meta.get[:unpublished] && @meta.get[:draft_new_doctype] and
91
103
  type = @meta.get[:draft_new_doctype]
92
104
  id = @meta.get[:docnumber] and
93
- ret += "<<p class='zzSTDTitle1'>#{type} #{id}</p>"
94
- t = @meta.get[:doctitle] and
95
- ret += "<p class='zzSTDTitle2'>#{t}"
105
+ ret += "<p class='zzSTDTitle1'>#{type} #{id}</p>"
106
+ ret
107
+ end
108
+
109
+ def middle_title_recommendation_second_line(isoxml)
110
+ ret = ""
111
+ t = @meta.get[:doctitle] or return ret
112
+ ret += "<p class='zzSTDTitle2'>#{t}"
96
113
  ret += "#{title_footnotes(isoxml)}</p>"
97
- s = @meta.get[:docsubtitle] and ret += "<p class='zzSTDTitle3'>#{s}</p>"
98
- out.previous = ret
114
+ ret
99
115
  end
100
116
 
101
117
  def title_footnotes(isoxml)
@@ -103,7 +119,7 @@ module IsoDoc
103
119
  isoxml.xpath(ns("//note[@type = 'title-footnote']"))
104
120
  .each_with_index do |f, i|
105
121
  ret += <<~FN.strip
106
- <fn id='_#{UUIDTools::UUID.random_create}' reference='H#{i}'>#{f.remove.children.to_xml}</fn>
122
+ <fn #{add_id_text} reference='H#{i}'>#{f.remove.children.to_xml}</fn>
107
123
  FN
108
124
  end
109
125
  ret
@@ -12,7 +12,7 @@ All rights reserved. No part of this publication may be reproduced, by any means
12
12
 
13
13
  ITU draws attention to the possibility that the practice or implementation of this Recommendation may involve the use of a claimed Intellectual Property Right. ITU takes no position concerning the evidence, validity or applicability of claimed Intellectual Property Rights, whether asserted by ITU members or others outside of the Recommendation development process.
14
14
 
15
- As of the date of approval of this Recommendation, ITU had {% if ip_notice_received %}{% else %}not{% endif %} received notice of intellectual property, protected by patents, which may be required to implement this Recommendation. However, implementers are cautioned that this may not represent the latest information and are therefore strongly urged to consult the TSB patent database at http://www.itu.int/ITU-T/ipr/[].
15
+ As of the date of approval of this Recommendation, ITU had {% if ip_notice_received != 'false' %}{% else %}not{% endif %} received notice of intellectual property, protected by patents, which may be required to implement this Recommendation. However, implementers are cautioned that this may not represent the latest information and are therefore strongly urged to consult the TSB patent database at http://www.itu.int/ITU-T/ipr/[].
16
16
  {% endif %}
17
17
 
18
18
  == legal-statement
@@ -45,9 +45,9 @@ and it is not to be used outside of ITU.
45
45
  {% else %}
46
46
  {% if unpublished and docnumber_provisional == nil %}
47
47
  [[draft-warning]]
48
- === CAUTION! PREPUBLISHED {{ doctype | upcase }}
48
+ === CAUTION! PREPUBLISHED {{ doctype_display | upcase }}
49
49
 
50
- This prepublication is an unedited version of a recently approved {{doctype}}.
50
+ This prepublication is an unedited version of a recently approved {{doctype_display}}.
51
51
  It will be replaced by the published version after editing. Therefore,
52
52
  there will be differences between this prepublication and the published
53
53
  version.
@@ -26,10 +26,6 @@ module Metanorma
26
26
  insert_conventions(xml)
27
27
  end
28
28
 
29
- def add_id_txt
30
- %(id="_#{UUIDTools::UUID.random_create}")
31
- end
32
-
33
29
  def insert_scope(xml)
34
30
  xml.at("./*/sections") or
35
31
  xml.at("./*/preface | ./*/boilerplate | ./*/bibdata").next =
@@ -37,9 +33,10 @@ module Metanorma
37
33
  xml.at("./*/sections/*") or xml.at("./*/sections") << "<sentinel/>"
38
34
  ins = xml.at("//sections").elements.first
39
35
  xml.at("//sections/clause[@type = 'scope']") or
40
- ins.previous =
41
- "<clause type='scope' #{add_id_txt}><title>#{@i18n.scope}</title><p>" \
42
- "#{@i18n.clause_empty}</p></clause>"
36
+ ins.previous = <<~XML
37
+ <clause type='scope' #{add_id_text}><title #{add_id_text}>#{@i18n.scope}</title>
38
+ <p>#{@i18n.clause_empty}</p></clause>
39
+ XML
43
40
  xml.at("//sentinel")&.remove
44
41
  end
45
42
 
@@ -49,23 +46,29 @@ module Metanorma
49
46
  "<bibliography><sentinel/></bibliography>"
50
47
  ins = xml.at("//bibliography").elements.first
51
48
  xml.at("//bibliography/references[@normative = 'true']") or
52
- ins.previous = "<references #{add_id_txt} normative='true'>" \
53
- "<title>#{@i18n.normref}</title></references>"
49
+ ins.previous = <<~XML
50
+ <references #{add_id_text} normative='true'>
51
+ <title #{add_id_text}>#{@i18n.normref}</title></references>
52
+ XML
54
53
  xml.at("//sentinel")&.remove
55
54
  end
56
55
 
57
56
  def insert_terms(xml)
58
57
  ins = xml.at("//sections/clause[@type = 'scope']")
59
58
  xml.at("//sections//terms") or
60
- ins.next = "<terms #{add_id_txt}><title>#{@i18n.termsdef}</title></terms>"
59
+ ins.next = <<~XML
60
+ <terms #{add_id_text}><title #{add_id_text}>#{@i18n.termsdef}</title></terms>
61
+ XML
61
62
  end
62
63
 
63
64
  def insert_symbols(xml)
64
65
  ins = xml.at("//sections/terms") ||
65
66
  xml.at("//sections/clause[descendant::terms]")
66
67
  unless xml.at("//sections//definitions")
67
- ins.next = "<definitions #{add_id_txt}>" \
68
- "<title>#{@i18n.symbolsabbrev}</title></definitions>"
68
+ ins.next = <<~XML
69
+ <definitions #{add_id_text}>
70
+ <title #{add_id_text}>#{@i18n.symbolsabbrev}</title></definitions>
71
+ XML
69
72
  end
70
73
  end
71
74
 
@@ -73,9 +76,11 @@ module Metanorma
73
76
  ins = xml.at("//sections//definitions") ||
74
77
  xml.at("//sections/clause[descendant::definitions]")
75
78
  unless xml.at("//sections/clause[@type = 'conventions']")
76
- ins.next = "<clause #{add_id_txt} type='conventions'>" \
77
- "<title>#{@i18n.conventions}</title><p>" \
78
- "#{@i18n.clause_empty}</p></clause>"
79
+ ins.next = <<~XML
80
+ <clause #{add_id_text} type='conventions'>
81
+ <title #{add_id_text}>#{@i18n.conventions}</title>
82
+ <p>#{@i18n.clause_empty}</p></clause>
83
+ XML
79
84
  end
80
85
  end
81
86
 
@@ -9,9 +9,6 @@ require_relative "./cleanup"
9
9
  module Metanorma
10
10
  module Itu
11
11
  class Converter < Standoc::Converter
12
- XML_ROOT_TAG = "itu-standard".freeze
13
- XML_NAMESPACE = "https://www.metanorma.org/ns/itu".freeze
14
-
15
12
  register_for "itu"
16
13
 
17
14
  def title_validate(_root)
@@ -30,11 +27,6 @@ module Metanorma
30
27
  File.join(@libdir, "boilerplate.adoc")
31
28
  end
32
29
 
33
- def makexml(node)
34
- @draft = node.attributes.has_key?("draft")
35
- super
36
- end
37
-
38
30
  def init_misc(node)
39
31
  super
40
32
  @default_doctype = "recommendation"
@@ -6,6 +6,7 @@ module Metanorma
6
6
  td_id(node, xml)
7
7
  itu_id(node, xml)
8
8
  recommendation_id(node, xml)
9
+ iso_id(node, xml)
9
10
  end
10
11
 
11
12
  def provisional_id(node, xml)
@@ -22,6 +23,11 @@ module Metanorma
22
23
  end
23
24
  end
24
25
 
26
+ def iso_id(node, xml)
27
+ a = node.attr("common-text-docnumber") and
28
+ xml.docidentifier a, type: "ISO"
29
+ end
30
+
25
31
  ITULANG = { "en" => "E", "fr" => "F", "ar" => "A", "es" => "S",
26
32
  "zh" => "C", "ru" => "R" }.freeze
27
33
 
@@ -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.0.6 -->
3
+ <!-- VERSION v2.0.7 -->
4
4
 
5
5
  <!--
6
6
  ALERT: cannot have root comments, because of https://github.com/metanorma/metanorma/issues/437
@@ -76,6 +76,7 @@ but to `@anchor`, the user-supplied cross-reference</a:documentation>
76
76
  <a:documentation>Title(s) of a clause</a:documentation>
77
77
  <element name="title">
78
78
  <a:documentation>Title proper for a clause</a:documentation>
79
+ <ref name="RequiredId"/>
79
80
  <zeroOrMore>
80
81
  <ref name="TextElement"/>
81
82
  </zeroOrMore>
@@ -83,10 +84,19 @@ but to `@anchor`, the user-supplied cross-reference</a:documentation>
83
84
  <zeroOrMore>
84
85
  <element name="variant-title">
85
86
  <a:documentation>Alternate title for a clause</a:documentation>
87
+ <ref name="RequiredId"/>
86
88
  <ref name="TypedTitleString"/>
87
89
  </element>
88
90
  </zeroOrMore>
89
91
  </define>
92
+ <define name="tname">
93
+ <element name="name">
94
+ <ref name="RequiredId"/>
95
+ <oneOrMore>
96
+ <ref name="NestedTextElement"/>
97
+ </oneOrMore>
98
+ </element>
99
+ </define>
90
100
  <define name="UlBody">
91
101
  <optional>
92
102
  <ref name="tname">
@@ -475,6 +485,7 @@ normative or informative references, some split references into sections organiz
475
485
  <!-- exclude figures? -->
476
486
  <define name="dd">
477
487
  <element name="dd">
488
+ <ref name="OptionalId"/>
478
489
  <zeroOrMore>
479
490
  <!-- exclude figures? -->
480
491
  <ref name="BasicBlock"/>
@@ -526,6 +537,7 @@ normative or informative references, some split references into sections organiz
526
537
  </choice>
527
538
  </define>
528
539
  <define name="TrAttributes">
540
+ <ref name="OptionalId"/>
529
541
  <optional>
530
542
  <attribute name="style">
531
543
  <a:documentation>CSS style: only background-color supported</a:documentation>
@@ -595,6 +607,7 @@ gives an explicit page orientation</a:documentation>
595
607
  </include>
596
608
  <!-- end overrides -->
597
609
  <define name="FnAttributes" combine="interleave">
610
+ <ref name="RequiredId"/>
598
611
  <optional>
599
612
  <attribute name="hiddenref">
600
613
  <a:documentation>If true, number the footnote as normal, but suppress display of the footnote reference in the document body.
@@ -604,6 +617,7 @@ This is done if the footnote reference is already presented in some other form,
604
617
  </optional>
605
618
  </define>
606
619
  <define name="TdAttributes" combine="interleave">
620
+ <ref name="RequiredId"/>
607
621
  <optional>
608
622
  <attribute name="style">
609
623
  <a:documentation>CSS style: only background-color supported</a:documentation>
@@ -1821,7 +1835,7 @@ used in document amendments</a:documentation>
1821
1835
  </element>
1822
1836
  </define>
1823
1837
  <define name="TermAttributes">
1824
- <ref name="OptionalId"/>
1838
+ <ref name="RequiredId"/>
1825
1839
  <ref name="LocalizedStringAttributes"/>
1826
1840
  <ref name="BlockAttributes"/>
1827
1841
  </define>
@@ -2164,6 +2178,7 @@ used in document amendments</a:documentation>
2164
2178
  <define name="termdefinition">
2165
2179
  <a:documentation>The definition of a term applied in the current document</a:documentation>
2166
2180
  <element name="definition">
2181
+ <ref name="RequiredId"/>
2167
2182
  <optional>
2168
2183
  <attribute name="type">
2169
2184
  <a:documentation>Type of definition, used to differentiate it from other definitions of the same term if present</a:documentation>
@@ -2185,6 +2200,7 @@ used in document amendments</a:documentation>
2185
2200
  </define>
2186
2201
  <define name="verbaldefinition">
2187
2202
  <element name="verbal-definition">
2203
+ <ref name="RequiredId"/>
2188
2204
  <oneOrMore>
2189
2205
  <choice>
2190
2206
  <a:documentation>Content of the verbal representation of the term</a:documentation>
@@ -2205,6 +2221,7 @@ used in document amendments</a:documentation>
2205
2221
  <define name="nonverbalrep">
2206
2222
  <a:documentation>Non-verbal representation of the term</a:documentation>
2207
2223
  <element name="non-verbal-representation">
2224
+ <ref name="RequiredId"/>
2208
2225
  <oneOrMore>
2209
2226
  <choice>
2210
2227
  <a:documentation>Content of the non-verbal representation of the term</a:documentation>
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module Itu
3
- VERSION = "2.6.7".freeze
3
+ VERSION = "2.6.9".freeze
4
4
  end
5
5
  end
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.require_paths = ["lib"]
26
26
  spec.required_ruby_version = Gem::Requirement.new(">= 3.1.0")
27
27
 
28
- spec.add_dependency "metanorma-standoc", "~> 3.0.0"
28
+ spec.add_dependency "metanorma-standoc", "~> 3.1.0"
29
29
  spec.add_dependency "pubid"
30
30
  spec.add_dependency "twitter_cldr", ">= 3.0.0"
31
31
  spec.add_dependency "tzinfo-data" # we need this for windows only
@@ -41,7 +41,6 @@ spec.add_development_dependency "rubocop-performance"
41
41
  spec.add_development_dependency "sassc-embedded", "~> 1"
42
42
  spec.add_development_dependency "simplecov", "~> 0.15"
43
43
  spec.add_development_dependency "timecop", "~> 0.9"
44
- spec.add_development_dependency "vcr", "~> 6.1.0"
45
44
  spec.add_development_dependency "webmock"
46
45
  spec.add_development_dependency "xml-c14n"
47
46
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-itu
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.7
4
+ version: 2.6.9
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-05-26 00:00:00.000000000 Z
11
+ date: 2025-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: metanorma-standoc
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 3.0.0
19
+ version: 3.1.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 3.0.0
26
+ version: 3.1.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pubid
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -220,20 +220,6 @@ dependencies:
220
220
  - - "~>"
221
221
  - !ruby/object:Gem::Version
222
222
  version: '0.9'
223
- - !ruby/object:Gem::Dependency
224
- name: vcr
225
- requirement: !ruby/object:Gem::Requirement
226
- requirements:
227
- - - "~>"
228
- - !ruby/object:Gem::Version
229
- version: 6.1.0
230
- type: :development
231
- prerelease: false
232
- version_requirements: !ruby/object:Gem::Requirement
233
- requirements:
234
- - - "~>"
235
- - !ruby/object:Gem::Version
236
- version: 6.1.0
237
223
  - !ruby/object:Gem::Dependency
238
224
  name: webmock
239
225
  requirement: !ruby/object:Gem::Requirement