metanorma-standoc 2.4.1 → 2.4.2

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