metanorma-ogc 2.4.9 → 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: 707c020fdfe78a1f9bd1391a96f72213b61310d7f881e0eb0748c18753a3c0c0
4
- data.tar.gz: fc72827826ba4e0cdda5f20a775b50c3e3bfdab4fe7f7c67427ad803121d0cee
3
+ metadata.gz: cfcf839845ca523b4dbcba32c4bd689498e6e0a2c7c5ecb2a171dd3c7bce4934
4
+ data.tar.gz: 60dd01126c0591afd6d82b1aaa23d7a1e15e46081e04c1bf68be10c85ad73358
5
5
  SHA512:
6
- metadata.gz: 2e2c1a71d1e604926c83f4b877ec8f4e007d7a23a896fd1eede6d2358ece404e7e0137eddaa8169fdd64b93fbe7cf7a56fb00b0f8101c835fccc469b6ca21c52
7
- data.tar.gz: b3315494ea475ebcdff95e5cde7cc8326a8436b825a2d21db0e493df41373bfe19793a7d56e24c909227b359e92d0e506a1a08835cc33d176bb138d23ede2aa2
6
+ metadata.gz: 9c7334090d5271c9e01570baa42b6bf9f91934599989e491739ee27c8289385c62584f1527ea1184f87119a3bc08340c5ea00a4c1f2e726ac0b944fb16a10004
7
+ data.tar.gz: 35281f49a9263c900c1ea614b3b0aca5ba9fe00b0cfa528f11e3641cdf36f03c17caa9b06995a9ef4f07dde9d1b14f206066afe1523666bb0a4a45227349ad7b
@@ -10,6 +10,7 @@ requirementclass: Requirements class
10
10
  permissionclass: Permissions class
11
11
  abstracttest: Abstract test
12
12
  conformanceclass: Conformance class
13
+ dochistory: Revision history
13
14
  example: Example
14
15
  table_of_contents: Contents
15
16
  toc_figures: List of Figures
@@ -10197,14 +10197,16 @@
10197
10197
 
10198
10198
  <xsl:template match="*[local-name() = 'annex']">
10199
10199
  <fo:block break-after="page"/>
10200
- <fo:block id="{@id}">
10200
+ <fo:block>
10201
10201
 
10202
10202
  <xsl:call-template name="setBlockSpanAll"/>
10203
10203
 
10204
10204
  <xsl:call-template name="refine_annex_style"/>
10205
10205
 
10206
10206
  </fo:block>
10207
- <xsl:apply-templates/>
10207
+ <fo:block id="{@id}">
10208
+ <xsl:apply-templates/>
10209
+ </fo:block>
10208
10210
  </xsl:template>
10209
10211
 
10210
10212
  <xsl:template name="refine_annex_style">
@@ -10197,14 +10197,16 @@
10197
10197
 
10198
10198
  <xsl:template match="*[local-name() = 'annex']">
10199
10199
  <fo:block break-after="page"/>
10200
- <fo:block id="{@id}">
10200
+ <fo:block>
10201
10201
 
10202
10202
  <xsl:call-template name="setBlockSpanAll"/>
10203
10203
 
10204
10204
  <xsl:call-template name="refine_annex_style"/>
10205
10205
 
10206
10206
  </fo:block>
10207
- <xsl:apply-templates/>
10207
+ <fo:block id="{@id}">
10208
+ <xsl:apply-templates/>
10209
+ </fo:block>
10208
10210
  </xsl:template>
10209
10211
 
10210
10212
  <xsl:template name="refine_annex_style">
@@ -10197,14 +10197,16 @@
10197
10197
 
10198
10198
  <xsl:template match="*[local-name() = 'annex']">
10199
10199
  <fo:block break-after="page"/>
10200
- <fo:block id="{@id}">
10200
+ <fo:block>
10201
10201
 
10202
10202
  <xsl:call-template name="setBlockSpanAll"/>
10203
10203
 
10204
10204
  <xsl:call-template name="refine_annex_style"/>
10205
10205
 
10206
10206
  </fo:block>
10207
- <xsl:apply-templates/>
10207
+ <fo:block id="{@id}">
10208
+ <xsl:apply-templates/>
10209
+ </fo:block>
10208
10210
  </xsl:template>
10209
10211
 
10210
10212
  <xsl:template name="refine_annex_style">
@@ -10197,14 +10197,16 @@
10197
10197
 
10198
10198
  <xsl:template match="*[local-name() = 'annex']">
10199
10199
  <fo:block break-after="page"/>
10200
- <fo:block id="{@id}">
10200
+ <fo:block>
10201
10201
 
10202
10202
  <xsl:call-template name="setBlockSpanAll"/>
10203
10203
 
10204
10204
  <xsl:call-template name="refine_annex_style"/>
10205
10205
 
10206
10206
  </fo:block>
10207
- <xsl:apply-templates/>
10207
+ <fo:block id="{@id}">
10208
+ <xsl:apply-templates/>
10209
+ </fo:block>
10208
10210
  </xsl:template>
10209
10211
 
10210
10212
  <xsl:template name="refine_annex_style">
@@ -10197,14 +10197,16 @@
10197
10197
 
10198
10198
  <xsl:template match="*[local-name() = 'annex']">
10199
10199
  <fo:block break-after="page"/>
10200
- <fo:block id="{@id}">
10200
+ <fo:block>
10201
10201
 
10202
10202
  <xsl:call-template name="setBlockSpanAll"/>
10203
10203
 
10204
10204
  <xsl:call-template name="refine_annex_style"/>
10205
10205
 
10206
10206
  </fo:block>
10207
- <xsl:apply-templates/>
10207
+ <fo:block id="{@id}">
10208
+ <xsl:apply-templates/>
10209
+ </fo:block>
10208
10210
  </xsl:template>
10209
10211
 
10210
10212
  <xsl:template name="refine_annex_style">
@@ -10197,14 +10197,16 @@
10197
10197
 
10198
10198
  <xsl:template match="*[local-name() = 'annex']">
10199
10199
  <fo:block break-after="page"/>
10200
- <fo:block id="{@id}">
10200
+ <fo:block>
10201
10201
 
10202
10202
  <xsl:call-template name="setBlockSpanAll"/>
10203
10203
 
10204
10204
  <xsl:call-template name="refine_annex_style"/>
10205
10205
 
10206
10206
  </fo:block>
10207
- <xsl:apply-templates/>
10207
+ <fo:block id="{@id}">
10208
+ <xsl:apply-templates/>
10209
+ </fo:block>
10208
10210
  </xsl:template>
10209
10211
 
10210
10212
  <xsl:template name="refine_annex_style">
@@ -10197,14 +10197,16 @@
10197
10197
 
10198
10198
  <xsl:template match="*[local-name() = 'annex']">
10199
10199
  <fo:block break-after="page"/>
10200
- <fo:block id="{@id}">
10200
+ <fo:block>
10201
10201
 
10202
10202
  <xsl:call-template name="setBlockSpanAll"/>
10203
10203
 
10204
10204
  <xsl:call-template name="refine_annex_style"/>
10205
10205
 
10206
10206
  </fo:block>
10207
- <xsl:apply-templates/>
10207
+ <fo:block id="{@id}">
10208
+ <xsl:apply-templates/>
10209
+ </fo:block>
10208
10210
  </xsl:template>
10209
10211
 
10210
10212
  <xsl:template name="refine_annex_style">
@@ -10197,14 +10197,16 @@
10197
10197
 
10198
10198
  <xsl:template match="*[local-name() = 'annex']">
10199
10199
  <fo:block break-after="page"/>
10200
- <fo:block id="{@id}">
10200
+ <fo:block>
10201
10201
 
10202
10202
  <xsl:call-template name="setBlockSpanAll"/>
10203
10203
 
10204
10204
  <xsl:call-template name="refine_annex_style"/>
10205
10205
 
10206
10206
  </fo:block>
10207
- <xsl:apply-templates/>
10207
+ <fo:block id="{@id}">
10208
+ <xsl:apply-templates/>
10209
+ </fo:block>
10208
10210
  </xsl:template>
10209
10211
 
10210
10212
  <xsl:template name="refine_annex_style">
@@ -10197,14 +10197,16 @@
10197
10197
 
10198
10198
  <xsl:template match="*[local-name() = 'annex']">
10199
10199
  <fo:block break-after="page"/>
10200
- <fo:block id="{@id}">
10200
+ <fo:block>
10201
10201
 
10202
10202
  <xsl:call-template name="setBlockSpanAll"/>
10203
10203
 
10204
10204
  <xsl:call-template name="refine_annex_style"/>
10205
10205
 
10206
10206
  </fo:block>
10207
- <xsl:apply-templates/>
10207
+ <fo:block id="{@id}">
10208
+ <xsl:apply-templates/>
10209
+ </fo:block>
10208
10210
  </xsl:template>
10209
10211
 
10210
10212
  <xsl:template name="refine_annex_style">
@@ -10197,14 +10197,16 @@
10197
10197
 
10198
10198
  <xsl:template match="*[local-name() = 'annex']">
10199
10199
  <fo:block break-after="page"/>
10200
- <fo:block id="{@id}">
10200
+ <fo:block>
10201
10201
 
10202
10202
  <xsl:call-template name="setBlockSpanAll"/>
10203
10203
 
10204
10204
  <xsl:call-template name="refine_annex_style"/>
10205
10205
 
10206
10206
  </fo:block>
10207
- <xsl:apply-templates/>
10207
+ <fo:block id="{@id}">
10208
+ <xsl:apply-templates/>
10209
+ </fo:block>
10208
10210
  </xsl:template>
10209
10211
 
10210
10212
  <xsl:template name="refine_annex_style">
@@ -10197,14 +10197,16 @@
10197
10197
 
10198
10198
  <xsl:template match="*[local-name() = 'annex']">
10199
10199
  <fo:block break-after="page"/>
10200
- <fo:block id="{@id}">
10200
+ <fo:block>
10201
10201
 
10202
10202
  <xsl:call-template name="setBlockSpanAll"/>
10203
10203
 
10204
10204
  <xsl:call-template name="refine_annex_style"/>
10205
10205
 
10206
10206
  </fo:block>
10207
- <xsl:apply-templates/>
10207
+ <fo:block id="{@id}">
10208
+ <xsl:apply-templates/>
10209
+ </fo:block>
10208
10210
  </xsl:template>
10209
10211
 
10210
10212
  <xsl:template name="refine_annex_style">
@@ -10197,14 +10197,16 @@
10197
10197
 
10198
10198
  <xsl:template match="*[local-name() = 'annex']">
10199
10199
  <fo:block break-after="page"/>
10200
- <fo:block id="{@id}">
10200
+ <fo:block>
10201
10201
 
10202
10202
  <xsl:call-template name="setBlockSpanAll"/>
10203
10203
 
10204
10204
  <xsl:call-template name="refine_annex_style"/>
10205
10205
 
10206
10206
  </fo:block>
10207
- <xsl:apply-templates/>
10207
+ <fo:block id="{@id}">
10208
+ <xsl:apply-templates/>
10209
+ </fo:block>
10208
10210
  </xsl:template>
10209
10211
 
10210
10212
  <xsl:template name="refine_annex_style">
@@ -10197,14 +10197,16 @@
10197
10197
 
10198
10198
  <xsl:template match="*[local-name() = 'annex']">
10199
10199
  <fo:block break-after="page"/>
10200
- <fo:block id="{@id}">
10200
+ <fo:block>
10201
10201
 
10202
10202
  <xsl:call-template name="setBlockSpanAll"/>
10203
10203
 
10204
10204
  <xsl:call-template name="refine_annex_style"/>
10205
10205
 
10206
10206
  </fo:block>
10207
- <xsl:apply-templates/>
10207
+ <fo:block id="{@id}">
10208
+ <xsl:apply-templates/>
10209
+ </fo:block>
10208
10210
  </xsl:template>
10209
10211
 
10210
10212
  <xsl:template name="refine_annex_style">
@@ -10197,14 +10197,16 @@
10197
10197
 
10198
10198
  <xsl:template match="*[local-name() = 'annex']">
10199
10199
  <fo:block break-after="page"/>
10200
- <fo:block id="{@id}">
10200
+ <fo:block>
10201
10201
 
10202
10202
  <xsl:call-template name="setBlockSpanAll"/>
10203
10203
 
10204
10204
  <xsl:call-template name="refine_annex_style"/>
10205
10205
 
10206
10206
  </fo:block>
10207
- <xsl:apply-templates/>
10207
+ <fo:block id="{@id}">
10208
+ <xsl:apply-templates/>
10209
+ </fo:block>
10208
10210
  </xsl:template>
10209
10211
 
10210
10212
  <xsl:template name="refine_annex_style">
@@ -10197,14 +10197,16 @@
10197
10197
 
10198
10198
  <xsl:template match="*[local-name() = 'annex']">
10199
10199
  <fo:block break-after="page"/>
10200
- <fo:block id="{@id}">
10200
+ <fo:block>
10201
10201
 
10202
10202
  <xsl:call-template name="setBlockSpanAll"/>
10203
10203
 
10204
10204
  <xsl:call-template name="refine_annex_style"/>
10205
10205
 
10206
10206
  </fo:block>
10207
- <xsl:apply-templates/>
10207
+ <fo:block id="{@id}">
10208
+ <xsl:apply-templates/>
10209
+ </fo:block>
10208
10210
  </xsl:template>
10209
10211
 
10210
10212
  <xsl:template name="refine_annex_style">
@@ -9248,14 +9248,16 @@
9248
9248
 
9249
9249
  <xsl:template match="*[local-name() = 'annex']">
9250
9250
  <fo:block break-after="page"/>
9251
- <fo:block id="{@id}">
9251
+ <fo:block>
9252
9252
 
9253
9253
  <xsl:call-template name="setBlockSpanAll"/>
9254
9254
 
9255
9255
  <xsl:call-template name="refine_annex_style"/>
9256
9256
 
9257
9257
  </fo:block>
9258
- <xsl:apply-templates/>
9258
+ <fo:block id="{@id}">
9259
+ <xsl:apply-templates/>
9260
+ </fo:block>
9259
9261
  </xsl:template>
9260
9262
 
9261
9263
  <xsl:template name="refine_annex_style">
@@ -0,0 +1,112 @@
1
+ module IsoDoc
2
+ module Ogc
3
+ class PresentationXMLConvert < IsoDoc::PresentationXMLConvert
4
+ def middle_title(docxml); end
5
+
6
+ def preface_rearrange(doc)
7
+ super
8
+ insert_preface_sections(doc)
9
+ end
10
+
11
+ def insert_preface_sections(doc)
12
+ preface_insert(doc.at(ns("//preface/clause" \
13
+ "[@type = 'executivesummary']")),
14
+ doc.at(ns("//preface/abstract")), doc)
15
+ preface_insert(doc.at(ns("//preface//submitters")),
16
+ submit_orgs_append_pt(doc), doc)
17
+ insert_submitting_orgs(doc)
18
+ preface_insert(doc.at(ns("//preface/clause[@type = 'security']")),
19
+ submit_orgs_append_pt(doc), doc)
20
+ insert_keywords(doc)
21
+ end
22
+
23
+ def preface_init_insert_pt(docxml)
24
+ docxml.at(ns("//preface")) ||
25
+ docxml.at(ns("//sections"))
26
+ .add_previous_sibling("<preface> </preface>").first
27
+ end
28
+
29
+ def preface_insert(clause, after, docxml)
30
+ clause or return
31
+ clause.remove
32
+ if after then after.next = clause
33
+ else
34
+ preface_init_insert_pt(docxml)&.children&.first
35
+ &.add_previous_sibling(clause)
36
+ end
37
+ end
38
+
39
+ def submit_orgs_append_pt(docxml)
40
+ docxml.at(ns("//foreword")) ||
41
+ docxml.at(ns("//preface/clause[@type = 'keywords']")) ||
42
+ docxml.at(ns("//preface/clause[@type = 'executivesummary']")) ||
43
+ docxml.at(ns("//preface/abstract"))
44
+ end
45
+
46
+ def insert_submitting_orgs(docxml)
47
+ orgs = docxml.xpath(ns(submittingorgs_path))
48
+ .each_with_object([]) { |org, m| m << org.text }
49
+ orgs.empty? and return
50
+ if a = submit_orgs_append_pt(docxml)
51
+ a.next = submitting_orgs_clause(orgs)
52
+ else
53
+ preface_init_insert_pt(docxml)&.children&.first
54
+ &.add_previous_sibling(submitting_orgs_clause(orgs))
55
+ end
56
+ end
57
+
58
+ def submitting_orgs_clause(orgs)
59
+ <<~SUBMITTING
60
+ <clause id="_#{UUIDTools::UUID.random_create}" type="submitting_orgs">
61
+ <title>Submitting Organizations</title>
62
+ <p>The following organizations submitted this Document to the Open Geospatial Consortium (OGC):</p>
63
+ <ul>#{orgs.map { |m| "<li>#{m}</li>" }.join("\n")}</ul>
64
+ </clause>
65
+ SUBMITTING
66
+ end
67
+
68
+ def keyword_clause(kwords)
69
+ <<~KEYWORDS
70
+ <clause id="_#{UUIDTools::UUID.random_create}" type="keywords">
71
+ <title>Keywords</title>
72
+ <p>The following are keywords to be used by search engines and document catalogues.</p>
73
+ <p>#{kwords.join(', ')}</p></clause>
74
+ KEYWORDS
75
+ end
76
+
77
+ def insert_keywords(docxml)
78
+ kw = @meta.get[:keywords]
79
+ kw.empty? and return
80
+ if abstract =
81
+ docxml.at(ns("//preface/clause[@type = 'executivesummary']")) ||
82
+ docxml.at(ns("//preface/abstract"))
83
+ abstract.next = keyword_clause(kw)
84
+ else
85
+ preface_init_insert_pt(docxml)&.children&.first
86
+ &.add_previous_sibling(keyword_clause(kw))
87
+ end
88
+ end
89
+
90
+ def annex1(elem)
91
+ lbl = @xrefs.anchor(elem["id"], :label)
92
+ t = elem.at(ns("./title")) and
93
+ t.children = "<strong>#{to_xml(t.children)}</strong>"
94
+ prefix_name(elem, "<br/>", lbl, "title")
95
+ end
96
+
97
+ def clause(docxml)
98
+ super
99
+ docxml.xpath(ns("//foreword | //preface/abstract | " \
100
+ "//submitters | //introduction | //acknowledgements"))
101
+ .each { |f| clause1(f) }
102
+ end
103
+
104
+ def clause1(elem)
105
+ elem.name == "terms" && elem.parent.name == "annex" &&
106
+ elem.parent.xpath(ns("./terms")).size == 1 and return
107
+ elem.name == "clause" && elem["type"] == "toc" and return
108
+ super
109
+ end
110
+ end
111
+ end
112
+ end
@@ -1,6 +1,6 @@
1
1
  require_relative "init"
2
- require "uuidtools"
3
2
  require_relative "../../relaton/render/general"
3
+ require_relative "presentation_sections"
4
4
 
5
5
  module IsoDoc
6
6
  module Ogc
@@ -10,8 +10,6 @@ module IsoDoc
10
10
  super
11
11
  end
12
12
 
13
- def middle_title(docxml); end
14
-
15
13
  def convert1(docxml, filename, dir)
16
14
  info docxml, nil
17
15
  super
@@ -21,123 +19,100 @@ module IsoDoc
21
19
  File.read(File.join(@libdir, "html", "rouge.css"))
22
20
  end
23
21
 
24
- def preface_rearrange(doc)
25
- super
26
- insert_preface_sections(doc)
27
- end
28
-
29
- def insert_preface_sections(doc)
30
- preface_insert(doc.at(ns("//preface/clause" \
31
- "[@type = 'executivesummary']")),
32
- doc.at(ns("//preface/abstract")), doc)
33
- preface_insert(doc.at(ns("//preface//submitters")),
34
- submit_orgs_append_pt(doc), doc)
35
- insert_submitting_orgs(doc)
36
- preface_insert(doc.at(ns("//preface/clause[@type = 'security']")),
37
- submit_orgs_append_pt(doc), doc)
38
- insert_keywords(doc)
39
- end
40
-
41
- def preface_init_insert_pt(docxml)
42
- docxml.at(ns("//preface")) ||
43
- docxml.at(ns("//sections"))
44
- .add_previous_sibling("<preface> </preface>").first
45
- end
46
-
47
- def preface_insert(clause, after, docxml)
48
- clause or return
49
- clause.remove
50
- if after then after.next = clause
51
- else
52
- preface_init_insert_pt(docxml)&.children&.first
53
- &.add_previous_sibling(clause)
22
+ def example1(elem)
23
+ lbl = @xrefs.anchor(elem["id"], :label, false) or return
24
+ prefix_name(elem, block_delim, l10n("#{@i18n.example} #{lbl}"),
25
+ "name")
26
+ end
27
+
28
+ def bibdata(docxml)
29
+ docxml.xpath(ns("//bibdata/contributor[@type = 'author']")).each do |a|
30
+ a.at(ns("./description"))&.text == "contributor" and
31
+ a["type"] = "contributor"
54
32
  end
33
+ super
34
+ dochistory_insert(docxml)
55
35
  end
56
36
 
57
- def submit_orgs_append_pt(docxml)
58
- docxml.at(ns("//foreword")) ||
59
- docxml.at(ns("//preface/clause[@type = 'keywords']")) ||
60
- docxml.at(ns("//preface/clause[@type = 'executivesummary']")) ||
61
- docxml.at(ns("//preface/abstract"))
37
+ UPDATE_RELATIONS = <<~XPATH.freeze
38
+ //bibdata/relation[@type = 'updatedBy' or @type = 'merges' or @type = 'splits' or @type = 'hasDraft']/bibitem
39
+ XPATH
40
+
41
+ def dochistory_insert(docxml)
42
+ updates = docxml.xpath(ns(UPDATE_RELATIONS))
43
+ updates.empty? and return
44
+ fwd = annex_insert_point(docxml)
45
+ generate_dochistory(updates, fwd)
62
46
  end
63
47
 
64
- def insert_submitting_orgs(docxml)
65
- orgs = docxml.xpath(ns(submittingorgs_path))
66
- .each_with_object([]) { |org, m| m << org.text }
67
- orgs.empty? and return
68
- if a = submit_orgs_append_pt(docxml)
69
- a.next = submitting_orgs_clause(orgs)
70
- else
71
- preface_init_insert_pt(docxml)&.children&.first
72
- &.add_previous_sibling(submitting_orgs_clause(orgs))
73
- end
48
+ def annex_insert_point(docxml)
49
+ docxml.at(ns("//annex[last()]")) || docxml.at(ns("//sections"))
74
50
  end
75
51
 
76
- def submitting_orgs_clause(orgs)
77
- <<~SUBMITTING
78
- <clause id="_#{UUIDTools::UUID.random_create}" type="submitting_orgs">
79
- <title>Submitting Organizations</title>
80
- <p>The following organizations submitted this Document to the Open Geospatial Consortium (OGC):</p>
81
- <ul>#{orgs.map { |m| "<li>#{m}</li>" }.join("\n")}</ul>
82
- </clause>
83
- SUBMITTING
84
- end
85
-
86
- def keyword_clause(kwords)
87
- <<~KEYWORDS
88
- <clause id="_#{UUIDTools::UUID.random_create}" type="keywords">
89
- <title>Keywords</title>
90
- <p>The following are keywords to be used by search engines and document catalogues.</p>
91
- <p>#{kwords.join(', ')}</p></clause>
92
- KEYWORDS
93
- end
94
-
95
- def insert_keywords(docxml)
96
- kw = @meta.get[:keywords]
97
- kw.empty? and return
98
- if abstract =
99
- docxml.at(ns("//preface/clause[@type = 'executivesummary']")) ||
100
- docxml.at(ns("//preface/abstract"))
101
- abstract.next = keyword_clause(kw)
102
- else
103
- preface_init_insert_pt(docxml)&.children&.first
104
- &.add_previous_sibling(keyword_clause(kw))
105
- end
52
+ def generate_dochistory(updates, pref)
53
+ ret = updates.map { |u| generate_dochistory_row(u) }.flatten.join("\n")
54
+ pref.next = <<~XML
55
+ <annex id='_#{UUIDTools::UUID.random_create}' obligation='informative'>
56
+ <title>#{@i18n.dochistory}</title>
57
+ <table><thead>
58
+ <tr><th>Date</th><th>Release</th><th>Author</th><th>Paragraph Modified</th><th>Description</th></tr>
59
+ </thead><tbody>
60
+ #{ret}
61
+ </tbody></table></annex>
62
+ XML
106
63
  end
107
64
 
108
- def example1(elem)
109
- lbl = @xrefs.anchor(elem["id"], :label, false) or return
110
- prefix_name(elem, block_delim, l10n("#{@i18n.example} #{lbl}"),
111
- "name")
65
+ def generate_dochistory_row(item)
66
+ e = item.at(ns("./edition")) || item.at(ns("./version/draft"))
67
+ date = dochistory_date(item)
68
+ c = dochistory_contributors(item)
69
+ l = dochistory_location(item)
70
+ desc = dochistory_description(item)
71
+ "<tr><td>#{date}</td><td>#{e&.text}</td><td>#{c}</td>" \
72
+ "<td>#{l}</td><td>#{desc}</td></tr>"
112
73
  end
113
74
 
114
- def annex1(elem)
115
- lbl = @xrefs.anchor(elem["id"], :label)
116
- t = elem.at(ns("./title")) and
117
- t.children = "<strong>#{to_xml(t.children)}</strong>"
118
- prefix_name(elem, "<br/>", lbl, "title")
75
+ def dochistory_date(item)
76
+ d = item.at(ns("./date[@type = 'updated']")) ||
77
+ item.at(ns("./date[@type = 'published']")) ||
78
+ item.at(ns("./date[@type = 'issued']")) or return ""
79
+ d.text.strip
119
80
  end
120
81
 
121
- def clause(docxml)
122
- super
123
- docxml.xpath(ns("//foreword | //preface/abstract | " \
124
- "//submitters | //introduction | //acknowledgements"))
125
- .each { |f| clause1(f) }
82
+ def dochistory_contributors(item)
83
+ item.xpath(ns("./contributor")).map do |c|
84
+ dochistory_contributor(c)
85
+ end.join(", ")
126
86
  end
127
87
 
128
- def clause1(elem)
129
- elem.name == "terms" && elem.parent.name == "annex" &&
130
- elem.parent.xpath(ns("./terms")).size == 1 and return
131
- elem.name == "clause" && elem["type"] == "toc" and return
132
- super
88
+ def dochistory_contributor(contrib)
89
+ ret = contrib.at("./organization/subdivision") ||
90
+ contrib.at("./organization/name") ||
91
+ contrib.at("./person/name/abbreviation") ||
92
+ contrib.at("./person/name/completename")
93
+ ret and return ret.text
94
+ format_personalname(contrib)
133
95
  end
134
96
 
135
- def bibdata(docxml)
136
- docxml.xpath(ns("//bibdata/contributor[@type = 'author']")).each do |a|
137
- a.at(ns("./description"))&.text == "contributor" and
138
- a["type"] = "contributor"
139
- end
140
- super
97
+ def format_personalname(contrib)
98
+ Relaton::Render::Ogc::General
99
+ .new(template: { book: "{{ creatornames }}" })
100
+ .render("<bibitem type='book'>#{contrib.to_xml}</bibitem>",
101
+ embedded: true)
102
+ end
103
+
104
+ def dochistory_description(item)
105
+ d = item.at(ns("./amend/description")) or return ""
106
+ d.children.to_xml
107
+ end
108
+
109
+ def dochistory_location(item)
110
+ t = item.at(ns("./amend/location")) or return "All"
111
+ xpath = "./amend/location/locality | ./amend/location/localityStack"
112
+ r = eref_localities(item.xpath(ns(xpath)), nil, t)
113
+ r.sub!(/^, /, "")
114
+ r == @i18n.wholeoftext and r = "All"
115
+ r
141
116
  end
142
117
 
143
118
  def bibdata_i18n(bib)
@@ -203,7 +178,7 @@ module IsoDoc
203
178
  # else, use both ordinal, as prefix, and ids
204
179
  def biblio_ref_entry_code(ordinal, ids, _id, standard, datefn, _bib)
205
180
  standard and return "[#{ordinal}]<tab/>"
206
- ret = (ids[:ordinal] || ids[:metanorma] || "[#{ordinal}]")
181
+ ret = ids[:ordinal] || ids[:metanorma] || "[#{ordinal}]"
207
182
  prefix_bracketed_ref("#{ret}#{datefn}")
208
183
  end
209
184
 
@@ -95,8 +95,89 @@
95
95
  <ref name="pagebreak"/>
96
96
  <ref name="hr"/>
97
97
  <ref name="bookmark"/>
98
+ <ref name="amend"/>
98
99
  </choice>
99
100
  </define>
101
+ <define name="amend">
102
+ <element name="amend">
103
+ <ref name="AmendType"/>
104
+ </element>
105
+ </define>
106
+ <define name="AmendType">
107
+ <optional>
108
+ <attribute name="id">
109
+ <data type="ID"/>
110
+ </attribute>
111
+ </optional>
112
+ <attribute name="change">
113
+ <choice>
114
+ <value>add</value>
115
+ <value>modify</value>
116
+ <value>delete</value>
117
+ <value>replace</value>
118
+ </choice>
119
+ </attribute>
120
+ <optional>
121
+ <attribute name="path"/>
122
+ </optional>
123
+ <optional>
124
+ <attribute name="path_end"/>
125
+ </optional>
126
+ <optional>
127
+ <attribute name="title"/>
128
+ </optional>
129
+ <optional>
130
+ <element name="location">
131
+ <zeroOrMore>
132
+ <choice>
133
+ <ref name="locality"/>
134
+ <ref name="localityStack"/>
135
+ </choice>
136
+ </zeroOrMore>
137
+ </element>
138
+ </optional>
139
+ <optional>
140
+ <element name="description">
141
+ <zeroOrMore>
142
+ <ref name="BasicBlock"/>
143
+ </zeroOrMore>
144
+ </element>
145
+ </optional>
146
+ <optional>
147
+ <element name="newcontent">
148
+ <optional>
149
+ <attribute name="id">
150
+ <data type="ID"/>
151
+ </attribute>
152
+ </optional>
153
+ <zeroOrMore>
154
+ <ref name="BasicBlock"/>
155
+ </zeroOrMore>
156
+ </element>
157
+ </optional>
158
+ <zeroOrMore>
159
+ <ref name="classification"/>
160
+ </zeroOrMore>
161
+ <zeroOrMore>
162
+ <ref name="contributor"/>
163
+ </zeroOrMore>
164
+ </define>
165
+ <define name="classification">
166
+ <element name="classification">
167
+ <ref name="classification_tag"/>
168
+ <ref name="classification_value"/>
169
+ </element>
170
+ </define>
171
+ <define name="classification_tag">
172
+ <element name="tag">
173
+ <text/>
174
+ </element>
175
+ </define>
176
+ <define name="classification_value">
177
+ <element name="value">
178
+ <text/>
179
+ </element>
180
+ </define>
100
181
  <define name="paragraph">
101
182
  <element name="p">
102
183
  <ref name="ParagraphType"/>
@@ -939,18 +1020,12 @@
939
1020
  </optional>
940
1021
  <optional>
941
1022
  <attribute name="width">
942
- <choice>
943
- <data type="int"/>
944
- <value>auto</value>
945
- </choice>
1023
+ <ref name="ImageSize"/>
946
1024
  </attribute>
947
1025
  </optional>
948
1026
  <optional>
949
1027
  <attribute name="height">
950
- <choice>
951
- <data type="int"/>
952
- <value>auto</value>
953
- </choice>
1028
+ <ref name="ImageSize"/>
954
1029
  </attribute>
955
1030
  </optional>
956
1031
  <optional>
@@ -965,6 +1040,14 @@
965
1040
  </attribute>
966
1041
  </optional>
967
1042
  </define>
1043
+ <define name="ImageSize">
1044
+ <choice>
1045
+ <data type="string">
1046
+ <param name="pattern">\d+([.]\d+)?(%?)</param>
1047
+ </data>
1048
+ <value>auto</value>
1049
+ </choice>
1050
+ </define>
968
1051
  <define name="video">
969
1052
  <element name="video">
970
1053
  <attribute name="id">
@@ -9,11 +9,42 @@
9
9
  -->
10
10
  <include href="biblio.rng">
11
11
  <define name="BibData">
12
- <ref name="BibliographicItem"/>
12
+ <ref name="StandardBibliographicItem"/>
13
13
  <optional>
14
14
  <ref name="ext"/>
15
15
  </optional>
16
16
  </define>
17
+ <define name="docrelation">
18
+ <element name="relation">
19
+ <attribute name="type">
20
+ <ref name="DocRelationType"/>
21
+ </attribute>
22
+ <optional>
23
+ <element name="description">
24
+ <ref name="FormattedString"/>
25
+ </element>
26
+ </optional>
27
+ <element name="bibitem">
28
+ <ref name="StandardReducedBibliographicItem"/>
29
+ </element>
30
+ <choice>
31
+ <zeroOrMore>
32
+ <ref name="locality"/>
33
+ </zeroOrMore>
34
+ <zeroOrMore>
35
+ <ref name="localityStack"/>
36
+ </zeroOrMore>
37
+ </choice>
38
+ <choice>
39
+ <zeroOrMore>
40
+ <ref name="sourceLocality"/>
41
+ </zeroOrMore>
42
+ <zeroOrMore>
43
+ <ref name="sourceLocalityStack"/>
44
+ </zeroOrMore>
45
+ </choice>
46
+ </element>
47
+ </define>
17
48
  </include>
18
49
  <define name="ext">
19
50
  <element name="ext">
@@ -161,4 +192,16 @@
161
192
  </optional>
162
193
  </element>
163
194
  </define>
195
+ <define name="StandardBibliographicItem">
196
+ <ref name="BibliographicItem"/>
197
+ <zeroOrMore>
198
+ <ref name="amend"/>
199
+ </zeroOrMore>
200
+ </define>
201
+ <define name="StandardReducedBibliographicItem">
202
+ <ref name="ReducedBibliographicItem"/>
203
+ <zeroOrMore>
204
+ <ref name="amend"/>
205
+ </zeroOrMore>
206
+ </define>
164
207
  </grammar>
@@ -241,6 +241,9 @@
241
241
  </element>
242
242
  </define>
243
243
  <define name="FullNameType">
244
+ <optional>
245
+ <ref name="name_abbreviation"/>
246
+ </optional>
244
247
  <choice>
245
248
  <group>
246
249
  <zeroOrMore>
@@ -266,6 +269,11 @@
266
269
  <ref name="variantname"/>
267
270
  </zeroOrMore>
268
271
  </define>
272
+ <define name="name_abbreviation">
273
+ <element name="abbreviation">
274
+ <ref name="LocalizedString"/>
275
+ </element>
276
+ </define>
269
277
  <define name="prefix">
270
278
  <element name="prefix">
271
279
  <ref name="LocalizedString"/>
@@ -870,6 +878,9 @@
870
878
  <optional>
871
879
  <ref name="validity"/>
872
880
  </optional>
881
+ <optional>
882
+ <ref name="depiction"/>
883
+ </optional>
873
884
  </define>
874
885
  <define name="btitle">
875
886
  <element name="title">
@@ -64,11 +64,12 @@ module Metanorma
64
64
  if xml.at("//submitters")
65
65
  preface = sect.at("//preface") ||
66
66
  sect.add_previous_sibling("<preface/>").first
67
- submitters = xml.at("//submitters").remove
68
- submitters.xpath(".//table").each do |t|
69
- t["unnumbered"] = true
67
+ xml.xpath("//submitters").each do |s|
68
+ s.xpath(".//table").each do |t|
69
+ t["unnumbered"] = true
70
+ end
71
+ preface.add_child s.remove
70
72
  end
71
- preface.add_child submitters.remove
72
73
  end
73
74
  end
74
75
 
@@ -225,15 +226,15 @@ module Metanorma
225
226
  type: id ? id["type"] : nil }
226
227
  end
227
228
 
228
- # Numbers sort *before* letters; we leave out using thorn to force that sort order.
229
- # case insensitive
230
- def symbol_key(sym)
229
+ # Numbers sort *before* letters; we leave out using thorn to force
230
+ # that sort order. case insensitive
231
+ def symbol_key(sym)
231
232
  @c.decode(asciimath_key(sym).text)
232
233
  .gsub(/[\[\]{}<>()]/, "").gsub(/\s/m, "")
233
234
  .gsub(/[[:punct:]]|[_^]/, ":\\0").gsub("`", "")
234
235
  end
235
236
 
236
- def symbols_cleanup(docxml)
237
+ def symbols_cleanup(docxml)
237
238
  docxml.xpath("//definitions/dl").each do |dl|
238
239
  dl_out = extract_symbols_list(dl)
239
240
  dl_out.sort! do |a, b|
@@ -88,8 +88,10 @@ module Metanorma
88
88
 
89
89
  def clause_parse(attrs, xml, node)
90
90
  case node.attr("heading")&.downcase || node.title.downcase
91
- when "submitters", "contributors"
91
+ when "submitters"
92
92
  return submitters_parse(attrs, xml, node)
93
+ when "contributors"
94
+ return submitters_parse(attrs.merge(type: "contributors"), xml, node)
93
95
  when "conformance" then attrs = attrs.merge(type: "conformance")
94
96
  when "security considerations"
95
97
  attrs = attrs.merge(type: "security")
@@ -101,7 +103,8 @@ module Metanorma
101
103
 
102
104
  def submitters_parse(attrs, xml, node)
103
105
  title = @i18n.submitters
104
- doctype(node) == "engineering-report" and
106
+ doctype(node) == "engineering-report" ||
107
+ attrs[:type] == "contributors" and
105
108
  title = @i18n.contributors_clause
106
109
  xml.submitters **attr_code(attrs) do |xml_section|
107
110
  xml_section.title title
@@ -17,10 +17,19 @@
17
17
  these elements; we just want one namespace for any child grammars
18
18
  of this.
19
19
  -->
20
- <!-- VERSION v1.2.9 -->
20
+ <!-- VERSION v1.2.12 -->
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">
24
+ <define name="amend">
25
+ <element name="amend">
26
+ <ref name="BlockAttributes"/>
27
+ <ref name="AmendType"/>
28
+ <zeroOrMore>
29
+ <ref name="autonumber"/>
30
+ </zeroOrMore>
31
+ </element>
32
+ </define>
24
33
  <define name="admonition">
25
34
  <element name="admonition">
26
35
  <attribute name="type">
@@ -2319,69 +2328,6 @@
2319
2328
  <ref name="CitationType"/>
2320
2329
  </element>
2321
2330
  </define>
2322
- <define name="amend">
2323
- <element name="amend">
2324
- <optional>
2325
- <attribute name="id">
2326
- <data type="ID"/>
2327
- </attribute>
2328
- </optional>
2329
- <attribute name="change">
2330
- <choice>
2331
- <value>add</value>
2332
- <value>modify</value>
2333
- <value>delete</value>
2334
- <value>replace</value>
2335
- </choice>
2336
- </attribute>
2337
- <optional>
2338
- <attribute name="path"/>
2339
- </optional>
2340
- <optional>
2341
- <attribute name="path_end"/>
2342
- </optional>
2343
- <optional>
2344
- <attribute name="title"/>
2345
- </optional>
2346
- <ref name="BlockAttributes"/>
2347
- <optional>
2348
- <element name="location">
2349
- <zeroOrMore>
2350
- <ref name="locality"/>
2351
- </zeroOrMore>
2352
- </element>
2353
- </optional>
2354
- <zeroOrMore>
2355
- <ref name="autonumber"/>
2356
- </zeroOrMore>
2357
- <optional>
2358
- <element name="description">
2359
- <zeroOrMore>
2360
- <ref name="BasicBlock"/>
2361
- </zeroOrMore>
2362
- </element>
2363
- </optional>
2364
- <optional>
2365
- <element name="newcontent">
2366
- <optional>
2367
- <attribute name="id">
2368
- <data type="ID"/>
2369
- </attribute>
2370
- </optional>
2371
- <zeroOrMore>
2372
- <ref name="BasicBlock"/>
2373
- </zeroOrMore>
2374
- </element>
2375
- </optional>
2376
- <optional>
2377
- <element name="description">
2378
- <zeroOrMore>
2379
- <ref name="BasicBlock"/>
2380
- </zeroOrMore>
2381
- </element>
2382
- </optional>
2383
- </element>
2384
- </define>
2385
2331
  <define name="autonumber">
2386
2332
  <element name="autonumber">
2387
2333
  <attribute name="type">
@@ -207,20 +207,4 @@
207
207
  <value>permission</value>
208
208
  </choice>
209
209
  </define>
210
- <define name="classification">
211
- <element name="classification">
212
- <ref name="classification_tag"/>
213
- <ref name="classification_value"/>
214
- </element>
215
- </define>
216
- <define name="classification_tag">
217
- <element name="tag">
218
- <text/>
219
- </element>
220
- </define>
221
- <define name="classification_value">
222
- <element name="value">
223
- <text/>
224
- </element>
225
- </define>
226
210
  </grammar>
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module Ogc
3
- VERSION = "2.4.9".freeze
3
+ VERSION = "2.5.0".freeze
4
4
  end
5
5
  end
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
27
27
 
28
28
  spec.add_dependency "iso-639"
29
- spec.add_dependency "metanorma-standoc", "~> 2.7.0"
29
+ spec.add_dependency "metanorma-standoc", "~> 2.8.0"
30
30
 
31
31
  spec.add_development_dependency "debug"
32
32
  spec.add_development_dependency "equivalent-xml", "~> 0.6"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-ogc
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.9
4
+ version: 2.5.0
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-12-22 00:00:00.000000000 Z
11
+ date: 2024-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: iso-639
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 2.7.0
33
+ version: 2.8.0
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.7.0
40
+ version: 2.8.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: debug
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -271,6 +271,7 @@ files:
271
271
  - lib/isodoc/ogc/ogc.user-guide.xsl
272
272
  - lib/isodoc/ogc/ogc.white-paper.xsl
273
273
  - lib/isodoc/ogc/pdf_convert.rb
274
+ - lib/isodoc/ogc/presentation_sections.rb
274
275
  - lib/isodoc/ogc/presentation_xml_convert.rb
275
276
  - lib/isodoc/ogc/sections.rb
276
277
  - lib/isodoc/ogc/word_convert.rb