metanorma-ogc 2.4.9 → 2.5.0

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 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