metanorma-standoc 2.4.1 → 2.4.2

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: 29a338b7e2acb906be1a2f9fb958fec1281991d934cae8f33279605d4c7296e7
4
- data.tar.gz: 104dfd478b186a14b6a7acd276c28785ada074ce3f747839ee30a4620269b74e
3
+ metadata.gz: 04c2c98697be18adacdad75abadd4f5d323d6082091a17de0a70f3ffa2488317
4
+ data.tar.gz: 8824f124552d8e6ac6d38c5330dbd194bd6171bf24f0b870b9b7dff281e6df52
5
5
  SHA512:
6
- metadata.gz: 94ef91339b3743becae21df403eeb7b9af5910257ba97756c72111ddababda0523d9e6b961aa6eab9737af6c460f4c3c89aecf0af3ecbacbb391aa9e10493af3
7
- data.tar.gz: 0ef86c13ca5bea907b55aa9e9ce98b1447e9c887e388db737855f9d8f55f3db39d20cf34aa526e2c2f0ccf140792cfd6f396b4ba117a1d50f67f28a0dd027442
6
+ metadata.gz: cfe8279a23b6c7323927907f5063e2b1dc98b64ad83d742ced62f4bdd6b098bd520cbcaa051319ad0d247efab17d2d989554bce9ba70ba8251fa01e28f384fe5
7
+ data.tar.gz: 261168bf0efc23682c9e9a1fb8294a0e6ecf3c541a3ed4fcc6fb31a8116c211c967b8b8f4c26c021d8eceb84a284996bcf0952443bef289705229d669c86e819
data/Gemfile CHANGED
@@ -10,3 +10,4 @@ if File.exist? 'Gemfile.devel'
10
10
  eval File.read('Gemfile.devel'), nil, 'Gemfile.devel' # rubocop:disable Security/Eval
11
11
  end
12
12
 
13
+
@@ -31,11 +31,12 @@ module Metanorma
31
31
  obligations_cleanup(xmldoc)
32
32
  para_index_cleanup(xmldoc)
33
33
  block_index_cleanup(xmldoc)
34
- table_cleanup(xmldoc)
34
+ table_cleanup(xmldoc) # feeds: blocksource_cleanup
35
35
  formula_cleanup(xmldoc)
36
36
  form_cleanup(xmldoc)
37
37
  sourcecode_cleanup(xmldoc) # feeds: callout_cleanup
38
38
  figure_cleanup(xmldoc)
39
+ blocksource_cleanup(xmldoc)
39
40
  requirement_cleanup(xmldoc) # feeds: xref_cleanup
40
41
  element_name_cleanup(xmldoc)
41
42
  ref_cleanup(xmldoc) # feeds: bibitem_cleanup
@@ -228,6 +228,13 @@ module Metanorma
228
228
  "Style override set for ordered list")
229
229
  end
230
230
  end
231
+
232
+ def blocksource_cleanup(xmldoc)
233
+ xmldoc.xpath("//figure//termsource | //table//termsource").each do |s|
234
+ s.name = "source"
235
+ s.delete("type")
236
+ end
237
+ end
231
238
  end
232
239
  end
233
240
  end
@@ -90,16 +90,28 @@ module Metanorma
90
90
  end
91
91
 
92
92
  def footnote_block_cleanup(xmldoc)
93
- xmldoc.xpath("//footnoteblock").each do |f|
93
+ ids = xmldoc.xpath("//footnoteblock").each_with_object([]) do |f, m|
94
94
  f.name = "fn"
95
+ m << f.text
95
96
  if id = xmldoc.at("//*[@id = '#{f.text}']")
96
- f.children = id.remove.children
97
- else
98
- @log.add("Crossreferences", f,
99
- "Could not resolve footnoteblock:[#{f.text}]")
100
- f.children = "[ERROR]"
97
+ f.children = id.dup.children
98
+ else footnote_block_error(f)
101
99
  end
102
100
  end
101
+ footnote_block_remove(xmldoc, ids)
102
+ end
103
+
104
+ def footnote_block_remove(xmldoc, ids)
105
+ ids.each do |id|
106
+ n = xmldoc.at("//*[@id = '#{id}']") and
107
+ n.remove
108
+ end
109
+ end
110
+
111
+ def footnote_block_error(fnote)
112
+ @log.add("Crossreferences", fnote,
113
+ "Could not resolve footnoteblock:[#{fnote.text}]")
114
+ fnote.children = "[ERROR]"
103
115
  end
104
116
 
105
117
  def footnote_cleanup(xmldoc)
@@ -17,9 +17,9 @@ module Metanorma
17
17
  def asciimath_key(sym)
18
18
  key = sym.dup
19
19
  key.traverse do |n|
20
- if n.name == "math"
20
+ if n.name == "stem" && a = n.at(".//asciimath")
21
21
  n.children = @c.encode(
22
- @c.decode(grkletters(MathML2AsciiMath.m2a(n.to_xml))), :basic
22
+ @c.decode(grkletters(a.text)), :basic
23
23
  )
24
24
  end
25
25
  end
@@ -46,16 +46,30 @@ module Metanorma
46
46
  def table_cleanup(xmldoc)
47
47
  dl1_table_cleanup(xmldoc)
48
48
  dl2_table_cleanup(xmldoc)
49
+ sources_table_cleanup(xmldoc)
49
50
  notes_table_cleanup(xmldoc)
50
51
  header_rows_cleanup(xmldoc)
51
52
  end
52
53
 
54
+ def sources_table_cleanup(xmldoc)
55
+ nomatches = false
56
+ until nomatches
57
+ nomatches = true
58
+ xmldoc.xpath("//table/following-sibling::*[1]" \
59
+ "[self::termsource]").each do |n|
60
+ n.previous_element << n.remove
61
+ nomatches = false
62
+ # will be renamed source from termsource later
63
+ end
64
+ end
65
+ end
66
+
53
67
  # move notes into table
54
68
  def notes_table_cleanup(xmldoc)
55
69
  nomatches = false
56
70
  until nomatches
57
71
  nomatches = true
58
- xmldoc.xpath("//table/following-sibling::*[1]"\
72
+ xmldoc.xpath("//table/following-sibling::*[1]" \
59
73
  "[self::note[not(@keep-separate = 'true')]]").each do |n|
60
74
  n.delete("keep-separate")
61
75
  n.previous_element << n.remove
@@ -27,7 +27,7 @@ module Metanorma
27
27
  end
28
28
 
29
29
  TERMDEF_BLOCKS =
30
- "./p | ./ol | ./dl[not(@metadata = 'true')] | ./ul | ./figure | "\
30
+ "./p | ./ol | ./dl[not(@metadata = 'true')] | ./ul | ./figure | " \
31
31
  "./formula | ./table".freeze
32
32
 
33
33
  def generate_termdefinitions(xmldoc)
@@ -47,7 +47,7 @@ module Metanorma
47
47
  if d.at("./p | ./ol | ./dl | ./ul")
48
48
  d.children = "<verbal-definition>#{d.children}</verbal-definition>"
49
49
  else
50
- d.children = "<non-verbal-representation>"\
50
+ d.children = "<non-verbal-representation>" \
51
51
  "#{d.children}</non-verbal-representation>"
52
52
  end
53
53
  end
@@ -2,7 +2,6 @@ module Metanorma
2
2
  module Standoc
3
3
  module Cleanup
4
4
  def termdef_stem_cleanup(xmldoc)
5
- termdef_stem2admitted(xmldoc)
6
5
  xmldoc.xpath("//term//expression/name[stem]").each do |n|
7
6
  test = n.dup
8
7
  test.at("./stem").remove
@@ -12,25 +11,6 @@ module Metanorma
12
11
  end
13
12
  end
14
13
 
15
- def termdef_stem2admitted(xmldoc)
16
- xmldoc.xpath("//term/p/stem").each do |a|
17
- if initial_formula(a.parent)
18
- parent = a.parent
19
- parent.replace("<admitted>#{term_expr(a.to_xml)}</admitted>")
20
- end
21
- end
22
- xmldoc.xpath("//term/formula").each do |a|
23
- initial_formula(a) and
24
- a.replace("<admitted>#{term_expr(a.children.to_xml)}</admitted>")
25
- end
26
- end
27
-
28
- def initial_formula(elem)
29
- elem.elements.size == 1 && # para contains just stem expression
30
- !elem.at("./preceding-sibling::p | ./preceding-sibling::dl | "\
31
- "./preceding-sibling::ol | ./preceding-sibling::ul")
32
- end
33
-
34
14
  # release termdef tags from surrounding paras
35
15
  def termdef_unnest_cleanup(xmldoc)
36
16
  desgn = "//p/admitted | //p/deprecates | //p/preferred | //p//related"
@@ -136,7 +116,7 @@ module Metanorma
136
116
  def dl_to_designation(dlist)
137
117
  prev = dlist.previous_element
138
118
  unless %w(preferred admitted deprecates related).include? prev&.name
139
- @log.add("AsciiDoc Input", dlist, "Metadata definition list does "\
119
+ @log.add("AsciiDoc Input", dlist, "Metadata definition list does " \
140
120
  "not follow a term designation")
141
121
  return nil
142
122
  end
@@ -382,6 +382,9 @@
382
382
  <optional>
383
383
  <ref name="dl"/>
384
384
  </optional>
385
+ <optional>
386
+ <ref name="source"/>
387
+ </optional>
385
388
  </element>
386
389
  </define>
387
390
  <define name="figure">
@@ -404,9 +407,6 @@
404
407
  <attribute name="class"/>
405
408
  </optional>
406
409
  <ref name="BlockAttributes"/>
407
- <optional>
408
- <ref name="source"/>
409
- </optional>
410
410
  <optional>
411
411
  <ref name="tname"/>
412
412
  </optional>
@@ -431,6 +431,20 @@
431
431
  <zeroOrMore>
432
432
  <ref name="note"/>
433
433
  </zeroOrMore>
434
+ <optional>
435
+ <ref name="source"/>
436
+ </optional>
437
+ </element>
438
+ </define>
439
+ <define name="source">
440
+ <element name="source">
441
+ <attribute name="status">
442
+ <ref name="SourceStatusType"/>
443
+ </attribute>
444
+ <ref name="origin"/>
445
+ <optional>
446
+ <ref name="modification"/>
447
+ </optional>
434
448
  </element>
435
449
  </define>
436
450
  <define name="sourcecode">
@@ -2099,10 +2113,7 @@
2099
2113
  <define name="termsource">
2100
2114
  <element name="termsource">
2101
2115
  <attribute name="status">
2102
- <choice>
2103
- <value>identical</value>
2104
- <value>modified</value>
2105
- </choice>
2116
+ <ref name="SourceStatusType"/>
2106
2117
  </attribute>
2107
2118
  <attribute name="type">
2108
2119
  <choice>
@@ -2116,6 +2127,17 @@
2116
2127
  </optional>
2117
2128
  </element>
2118
2129
  </define>
2130
+ <define name="SourceStatusType">
2131
+ <choice>
2132
+ <value>identical</value>
2133
+ <value>modified</value>
2134
+ <value>restyled</value>
2135
+ <value>context-added</value>
2136
+ <value>generalisation</value>
2137
+ <value>specialisation</value>
2138
+ <value>unspecified</value>
2139
+ </choice>
2140
+ </define>
2119
2141
  <define name="origin">
2120
2142
  <element name="origin">
2121
2143
  <choice>
@@ -13,10 +13,16 @@ module Metanorma
13
13
  root.xpath("//sourcecode").each do |x|
14
14
  callouts = x.elements.select { |e| e.name == "callout" }
15
15
  annotations = x.elements.select { |e| e.name == "annotation" }
16
- if callouts.size != annotations.size
17
- @log.add("AsciiDoc Input", x,
18
- "mismatch of callouts and annotations")
19
- end
16
+ callouts_error(x, callouts, annotations)
17
+ end
18
+ end
19
+
20
+ def callouts_error(elem, callouts, annotations)
21
+ if callouts.size != annotations.size && !annotations.empty?
22
+ err = "mismatch of callouts (#{callouts.size}) and annotations " \
23
+ "(#{annotations.size})"
24
+ @log.add("AsciiDoc Input", elem, err)
25
+ @fatalerror << err
20
26
  end
21
27
  end
22
28
 
@@ -19,6 +19,6 @@ module Metanorma
19
19
  end
20
20
 
21
21
  module Standoc
22
- VERSION = "2.4.1".freeze
22
+ VERSION = "2.4.2".freeze
23
23
  end
24
24
  end
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
31
31
  spec.add_dependency "asciidoctor", "~> 2.0.0"
32
32
  spec.add_dependency "iev", "~> 0.3.0"
33
33
  spec.add_dependency "isodoc", "~> 2.5.0"
34
- spec.add_dependency "metanorma"
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"
37
37
  spec.add_dependency "ruby-jing"
@@ -41,7 +41,7 @@ Gem::Specification.new do |spec|
41
41
  spec.add_dependency "plurimath"
42
42
  spec.add_dependency "pngcheck"
43
43
  spec.add_dependency "relaton-cli", "~> 1.15.0"
44
- spec.add_dependency "relaton-iev", "~> 1.1.0"
44
+ spec.add_dependency "relaton-iev", "~> 1.1.5"
45
45
  spec.add_dependency "unicode2latex", "~> 0.0.1"
46
46
 
47
47
  spec.add_development_dependency "debug"
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.1
4
+ version: 2.4.2
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-03-27 00:00:00.000000000 Z
11
+ date: 2023-04-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asciidoctor
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 1.5.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 1.5.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: metanorma-plugin-datastruct
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -184,14 +184,14 @@ dependencies:
184
184
  requirements:
185
185
  - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: 1.1.0
187
+ version: 1.1.5
188
188
  type: :runtime
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: 1.1.0
194
+ version: 1.1.5
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: unicode2latex
197
197
  requirement: !ruby/object:Gem::Requirement