metanorma-standoc 2.4.2 → 2.4.3

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: 04c2c98697be18adacdad75abadd4f5d323d6082091a17de0a70f3ffa2488317
4
- data.tar.gz: 8824f124552d8e6ac6d38c5330dbd194bd6171bf24f0b870b9b7dff281e6df52
3
+ metadata.gz: d0ade5d859084779fe2f7357438926e03e0359adbf528d4db67a1851200f7e45
4
+ data.tar.gz: d17ee40a8d465764b0d7577a0ab69db5d96ab1c4e5c923b77059326d2e52e45c
5
5
  SHA512:
6
- metadata.gz: cfe8279a23b6c7323927907f5063e2b1dc98b64ad83d742ced62f4bdd6b098bd520cbcaa051319ad0d247efab17d2d989554bce9ba70ba8251fa01e28f384fe5
7
- data.tar.gz: 261168bf0efc23682c9e9a1fb8294a0e6ecf3c541a3ed4fcc6fb31a8116c211c967b8b8f4c26c021d8eceb84a284996bcf0952443bef289705229d669c86e819
6
+ metadata.gz: 794db303464ba57e25b5ccb240b794524842fe99a42cf136f7f0ff3d0e77f82eb017676b3a0b9ef491b655ffe42b50d9332d880c4a10c9ca7a705252e62c5199
7
+ data.tar.gz: 6f9f27b816283a7cf27fc3b441cfd9d04a72c7a26da7d66264f3984e391e4ab3f3be384e167e1a813d8bfabcc070d98f162908a5f1a9dd5670dca3614e002873
@@ -168,9 +168,14 @@ module Metanorma
168
168
  Metanorma.versioned(Metanorma, flavour)[-1]::VERSION
169
169
  end
170
170
 
171
- def clean_exit
172
- @log.write("#{@output_dir}#{@filename}.err") unless @novalid
171
+ def schema_version
172
+ f = File.read(File.join(File.dirname(__FILE__), "isodoc.rng"))
173
+ m = / VERSION (v\S+)/.match(f)
174
+ m[1]
175
+ end
173
176
 
177
+ def clean_exit
178
+ @novalid or @log.write("#{@output_dir}#{@filename}.err")
174
179
  @files_to_delete.each { |f| FileUtils.rm f }
175
180
  end
176
181
 
@@ -185,7 +190,8 @@ module Metanorma
185
190
 
186
191
  def makexml1(node)
187
192
  result = ["<?xml version='1.0' encoding='UTF-8'?>",
188
- "<#{xml_root_tag} type='semantic' version='#{version}'>"]
193
+ "<#{xml_root_tag} type='semantic' version='#{version}' " \
194
+ "schema-version='#{schema_version}'>"]
189
195
  result << noko { |ixml| front node, ixml }
190
196
  result << noko { |ixml| middle node, ixml }
191
197
  result << "</#{xml_root_tag}>"
@@ -225,8 +231,7 @@ module Metanorma
225
231
  def metadata_attrs(node)
226
232
  node.attributes.each_with_object([]) do |(k, v), ret|
227
233
  %w(presentation semantic).each do |t|
228
- next unless /^#{t}-metadata-/.match?(k)
229
-
234
+ /^#{t}-metadata-/.match?(k) or next
230
235
  k = k.sub(/^#{t}-metadata-/, "")
231
236
  csv_split(v, ",")&.each do |c|
232
237
  ret << "<#{t}-metadata><#{k}>#{c}</#{k}></#{t}-metadata>"
@@ -79,8 +79,7 @@ module Metanorma
79
79
  def single_subfigure_cleanup(xmldoc)
80
80
  xmldoc.xpath("//figure[figure]").each do |e|
81
81
  s = e.xpath("./figure")
82
- return unless s.size == 1
83
-
82
+ s.size == 1 or next
84
83
  s[0].replace(s[0].children)
85
84
  end
86
85
  end
@@ -42,11 +42,15 @@ module Metanorma
42
42
  outnum = idx
43
43
  seen[content] = outnum
44
44
  end
45
- fnote["reference"] = (outnum - 1 + "a".ord).chr
45
+ fnote["reference"] = table_footnote_number(outnum)
46
46
  fnote["table"] = true
47
47
  [idx, seen]
48
48
  end
49
49
 
50
+ def table_footnote_number(outnum)
51
+ (outnum - 1 + "a".ord).chr
52
+ end
53
+
50
54
  def table_footnote_renumber(xmldoc)
51
55
  xmldoc.xpath("//table | //figure").each do |t|
52
56
  seen = {}
@@ -86,7 +86,7 @@ module Metanorma
86
86
  basebackend "html"
87
87
  outfilesuffix ".xml"
88
88
  @libdir = File.dirname(self.class::_file || __FILE__)
89
- @c = HTMLEntities.new
89
+ @c = HTMLEntities.new
90
90
  end
91
91
 
92
92
  class << self
@@ -17,6 +17,7 @@
17
17
  these elements; we just want one namespace for any child grammars
18
18
  of this.
19
19
  -->
20
+ <!-- VERSION v1.2.1 -->
20
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">
21
22
  <include href="reqt.rng"/>
22
23
  <include href="basicdoc.rng">
@@ -1349,15 +1350,19 @@
1349
1350
  </choice>
1350
1351
  </element>
1351
1352
  </define>
1353
+ <define name="Root-Attributes">
1354
+ <attribute name="version"/>
1355
+ <attribute name="schema-version"/>
1356
+ <attribute name="type">
1357
+ <choice>
1358
+ <value>semantic</value>
1359
+ <value>presentation</value>
1360
+ </choice>
1361
+ </attribute>
1362
+ </define>
1352
1363
  <define name="standard-document">
1353
1364
  <element name="standard-document">
1354
- <attribute name="version"/>
1355
- <attribute name="type">
1356
- <choice>
1357
- <value>semantic</value>
1358
- <value>presentation</value>
1359
- </choice>
1360
- </attribute>
1365
+ <ref name="Root-Attributes"/>
1361
1366
  <ref name="bibdata"/>
1362
1367
  <optional>
1363
1368
  <ref name="misccontainer"/>
@@ -122,7 +122,7 @@ module Metanorma
122
122
  t.formattedref format: "application/x-isodoc+xml" do |i|
123
123
  i << ref_normalise_no_format(match[:text])
124
124
  end
125
- yr_match = /[:-](?<year>(?:19|20)[0-9][0-9])\b/.match(code[:id])
125
+ yr_match = refitem1yr(code[:id])
126
126
  refitem_render1(match, code, t)
127
127
  /^\d+$|^\(.+\)$/.match?(code[:id]) or
128
128
  docnumber(t, code[:id].sub(/[:-](19|20)[0-9][0-9]$/, ""))
@@ -143,16 +143,17 @@ module Metanorma
143
143
  ((code[:id] && code[:numeric]) || code[:nofetch]) and
144
144
  return { code: nil, match: match, analyse_code: code,
145
145
  hidden: code[:hidden] }
146
- year = refitem1yr(code[:id])
147
146
  { code: code[:id], analyse_code: code, localfile: code[:localfile],
148
- year: year,
147
+ year: (m = refitem1yr(code[:id])) ? m[:year] : nil,
149
148
  title: match[:text], match: match, hidden: code[:hidden],
150
149
  usrlbl: match[:usrlbl], lang: (@lang || :all) }
151
150
  end
152
151
 
153
152
  def refitem1yr(code)
154
- yr_match = /[:-](?<year>(?:19|20)[0-9][0-9])\b/.match(code)
155
- yr_match ? yr_match[:year] : nil
153
+ yr_match = /[:-](?<year>(?:19|20)[0-9][0-9])$/.match(code)
154
+ /[:-](?:19|20)[0-9][0-9].*?[:-](?:19|20)[0-9][0-9]$/.match(code) and
155
+ yr_match = nil
156
+ yr_match
156
157
  end
157
158
 
158
159
  def refitemout(item, xml)
@@ -1,6 +1,7 @@
1
1
  require "metanorma/standoc/utils"
2
2
  require_relative "./validate_section"
3
3
  require_relative "./validate_table"
4
+ require_relative "./validate_xref"
4
5
  require "nokogiri"
5
6
  require "jing"
6
7
  require "iev"
@@ -155,22 +156,6 @@ module Metanorma
155
156
  ret
156
157
  end
157
158
 
158
- def repeat_id_validate1(elem)
159
- if @doc_ids[elem["id"]]
160
- @log.add("Anchors", elem, "Anchor #{elem['id']} has already been " \
161
- "used at line #{@doc_ids[elem['id']]}")
162
- @fatalerror << "Multiple instances of same ID: #{elem['id']}"
163
- end
164
- @doc_ids[elem["id"]] = elem.line
165
- end
166
-
167
- def repeat_id_validate(doc)
168
- @doc_ids = {}
169
- doc.xpath("//*[@id]").each do |x|
170
- repeat_id_validate1(x)
171
- end
172
- end
173
-
174
159
  def schema_validate(doc, schema)
175
160
  Tempfile.open(["tmp", ".xml"], encoding: "UTF-8") do |f|
176
161
  schema_validate1(f, doc, schema)
@@ -214,17 +199,6 @@ module Metanorma
214
199
  doc
215
200
  end
216
201
 
217
- # manually check for xref/@target, xref/@to integrity
218
- def xref_validate(doc)
219
- @doc_xrefs = doc.xpath("//xref/@target | //xref/@to")
220
- .each_with_object({}) do |x, m|
221
- m[x.text] = x
222
- @doc_ids[x.text] and next
223
- @log.add("Anchors", x.parent,
224
- "Crossreference target #{x} is undefined")
225
- end
226
- end
227
-
228
202
  def image_validate(doc)
229
203
  image_exists(doc)
230
204
  png_validate(doc)
@@ -0,0 +1,32 @@
1
+ module Metanorma
2
+ module Standoc
3
+ module Validate
4
+ def repeat_id_validate1(elem)
5
+ if @doc_ids[elem["id"]]
6
+ @log.add("Anchors", elem, "Anchor #{elem['id']} has already been " \
7
+ "used at line #{@doc_ids[elem['id']]}")
8
+ @fatalerror << "Multiple instances of same ID: #{elem['id']}"
9
+ end
10
+ @doc_ids[elem["id"]] = elem.line
11
+ end
12
+
13
+ def repeat_id_validate(doc)
14
+ @doc_ids = {}
15
+ doc.xpath("//*[@id]").each do |x|
16
+ repeat_id_validate1(x)
17
+ end
18
+ end
19
+
20
+ # manually check for xref/@target, xref/@to integrity
21
+ def xref_validate(doc)
22
+ @doc_xrefs = doc.xpath("//xref/@target | //xref/@to")
23
+ .each_with_object({}) do |x, m|
24
+ m[x.text] = x
25
+ @doc_ids[x.text] and next
26
+ @log.add("Anchors", x.parent,
27
+ "Crossreference target #{x} is undefined")
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -19,6 +19,6 @@ module Metanorma
19
19
  end
20
20
 
21
21
  module Standoc
22
- VERSION = "2.4.2".freeze
22
+ VERSION = "2.4.3".freeze
23
23
  end
24
24
  end
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
30
30
 
31
31
  spec.add_dependency "asciidoctor", "~> 2.0.0"
32
32
  spec.add_dependency "iev", "~> 0.3.0"
33
- spec.add_dependency "isodoc", "~> 2.5.0"
33
+ spec.add_dependency "isodoc", "~> 2.5.4"
34
34
  spec.add_dependency "metanorma", ">= 1.5.0"
35
35
  spec.add_dependency "metanorma-plugin-datastruct", "~> 0.2.0"
36
36
  spec.add_dependency "metanorma-plugin-lutaml"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-standoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.2
4
+ version: 2.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-10 00:00:00.000000000 Z
11
+ date: 2023-04-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asciidoctor
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 2.5.0
47
+ version: 2.5.4
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 2.5.0
54
+ version: 2.5.4
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: metanorma
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -514,6 +514,7 @@ files:
514
514
  - lib/metanorma/standoc/validate.rb
515
515
  - lib/metanorma/standoc/validate_section.rb
516
516
  - lib/metanorma/standoc/validate_table.rb
517
+ - lib/metanorma/standoc/validate_xref.rb
517
518
  - lib/metanorma/standoc/version.rb
518
519
  - lib/metanorma/standoc/views/datamodel/model_representation.adoc.erb
519
520
  - lib/metanorma/standoc/views/datamodel/plantuml_representation.adoc.erb