metanorma-standoc 2.8.6 → 2.8.8

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: 26ef7eeadddd66ca86125ae72f91a3e920057ad5ed1e8f0e1e5670f831355d0b
4
- data.tar.gz: e1d1e42f6d4962d11ab86421fec3fc2877480e33fdac9aabcc4bd478fd3cc2df
3
+ metadata.gz: d79ead2eb86071438f3e9f0ebf6079dbaf8465ee3b7d744b3f7bdad7c1152ea9
4
+ data.tar.gz: dbad5d2702bc82ff88e95392127dfc01bdc0e2d3c06dba4132962943da12b461
5
5
  SHA512:
6
- metadata.gz: 4a014a7cbc4f3665f07322713d0edad6dbd42301eb3b0e548a78efd116f7c6da4b7359db4f26e3cbc50315cdbdad99169997493fa792000b6f36e63c49c8ace1
7
- data.tar.gz: 25f39be9f0df10ecdfaea29ecdf2e1cf8a50789f80fce1cf6fa71cd23beb1a69f6b890e2ca69527bc486091631281cce5926f3b3ec743bdbbfb24b9c7d195264
6
+ metadata.gz: 738efd82a76cd385d7b8ea8cd410c3e96954a8f89cc46dd28aa164132020af2f08758cbd798e686eb1c82dd4149a2a5780741845d3253e7a9ccbc4de2da34221
7
+ data.tar.gz: e7d189dbc9e3ec5e4e5dfae31ecae79ea3a07e50a20a232082495831007541b3b328ed06f1c957da3a5d9fa12e422799dee967bfc073d5fe8c871b5970a496ab
@@ -95,7 +95,7 @@
95
95
  <text/>
96
96
  </element>
97
97
  </define>
98
- <define name="LocalizedString1">
98
+ <define name="LocalizedStringAttrs">
99
99
  <optional>
100
100
  <!-- multiple languages and scripts possible: comma delimit them if so -->
101
101
  <attribute name="language"/>
@@ -106,6 +106,10 @@
106
106
  <optional>
107
107
  <attribute name="script"/>
108
108
  </optional>
109
+ </define>
110
+ <define name="LocalizedString1">
111
+ <!-- multiple languages and scripts possible: comma delimit them if so -->
112
+ <ref name="LocalizedStringAttrs"/>
109
113
  <text/>
110
114
  </define>
111
115
  <define name="LocalizedString">
@@ -142,16 +146,8 @@
142
146
  <ref name="LocalizedStringOrXsAny"/>
143
147
  </define>
144
148
  <define name="LocalizedStringOrXsAny1">
145
- <optional>
146
- <!-- multiple languages and scripts possible: comma delimit them if so -->
147
- <attribute name="language"/>
148
- </optional>
149
- <optional>
150
- <attribute name="locale"/>
151
- </optional>
152
- <optional>
153
- <attribute name="script"/>
154
- </optional>
149
+ <!-- multiple languages and scripts possible: comma delimit them if so -->
150
+ <ref name="LocalizedStringAttrs"/>
155
151
  <oneOrMore>
156
152
  <choice>
157
153
  <text/>
@@ -208,6 +204,7 @@
208
204
  </define>
209
205
  <define name="roledescription">
210
206
  <element name="description">
207
+ <ref name="LocalizedStringAttrs"/>
211
208
  <oneOrMore>
212
209
  <ref name="TextElement"/>
213
210
  </oneOrMore>
@@ -335,6 +332,7 @@
335
332
  </define>
336
333
  <define name="affiliationdescription">
337
334
  <element name="description">
335
+ <ref name="LocalizedStringAttrs"/>
338
336
  <oneOrMore>
339
337
  <ref name="TextElement"/>
340
338
  </oneOrMore>
@@ -948,6 +946,7 @@
948
946
  <optional>
949
947
  <attribute name="type"/>
950
948
  </optional>
949
+ <ref name="LocalizedStringAttrs"/>
951
950
  <zeroOrMore>
952
951
  <ref name="TextElement"/>
953
952
  </zeroOrMore>
@@ -1041,15 +1040,7 @@
1041
1040
  <data type="boolean"/>
1042
1041
  </attribute>
1043
1042
  </optional>
1044
- <optional>
1045
- <attribute name="language"/>
1046
- </optional>
1047
- <optional>
1048
- <attribute name="locale"/>
1049
- </optional>
1050
- <optional>
1051
- <attribute name="script"/>
1052
- </optional>
1043
+ <ref name="LocalizedStringAttrs"/>
1053
1044
  <oneOrMore>
1054
1045
  <ref name="TextElement"/>
1055
1046
  </oneOrMore>
@@ -1277,6 +1268,7 @@
1277
1268
  <optional>
1278
1269
  <attribute name="type"/>
1279
1270
  </optional>
1271
+ <ref name="LocalizedStringAttrs"/>
1280
1272
  <oneOrMore>
1281
1273
  <ref name="TextElement"/>
1282
1274
  </oneOrMore>
@@ -1284,9 +1276,15 @@
1284
1276
  </define>
1285
1277
  <define name="bibabstract">
1286
1278
  <element name="abstract">
1287
- <oneOrMore>
1288
- <ref name="TextElement"/>
1289
- </oneOrMore>
1279
+ <ref name="LocalizedStringAttrs"/>
1280
+ <choice>
1281
+ <oneOrMore>
1282
+ <ref name="BasicBlock"/>
1283
+ </oneOrMore>
1284
+ <oneOrMore>
1285
+ <ref name="TextElement"/>
1286
+ </oneOrMore>
1287
+ </choice>
1290
1288
  </element>
1291
1289
  </define>
1292
1290
  <define name="copyright">
@@ -1391,6 +1389,7 @@
1391
1389
  </attribute>
1392
1390
  <optional>
1393
1391
  <element name="description">
1392
+ <ref name="LocalizedStringAttrs"/>
1394
1393
  <oneOrMore>
1395
1394
  <ref name="TextElement"/>
1396
1395
  </oneOrMore>
@@ -19,14 +19,30 @@ module Metanorma
19
19
  def asciimath2mathml_indiv(elem)
20
20
  elem["type"] = "MathML"
21
21
  expr = @c.decode(elem.text)
22
- ret = Plurimath::Math.parse(expr, "asciimath")
23
- .to_mathml(display_style: elem["block"])
24
- ret += "<asciimath>#{@c.encode(@c.decode(expr), :basic)}</asciimath>"
22
+ ret = asciimath_parse(expr, elem)
23
+ ret += "<asciimath>#{@c.encode(expr, :basic)}</asciimath>"
25
24
  elem.children = ret
26
25
  rescue StandardError => e
27
26
  asciimath2mathml_err(elem.to_xml, e)
28
27
  end
29
28
 
29
+ # https://medium.com/@rickwang_wxc/in-ruby-given-a-string-detect-if-it-is-valid-numeric-c58275eace60
30
+ NUMERIC_REGEX = %r{^((\+|-)?\d*\.?\d+)([eE](\+|-){1}\d+)?$}.freeze
31
+
32
+ MATHML_NS = "http://www.w3.org/1998/Math/MathML".freeze
33
+
34
+ def asciimath_parse(expr, elem)
35
+ if NUMERIC_REGEX.match?(expr)
36
+ @novalid or elem["validate"] = "false"
37
+ <<~MATH
38
+ <math xmlns='#{MATHML_NS}'><mstyle displaystyle='false'><mn>#{expr}</mn></mstyle></math>
39
+ MATH
40
+ else
41
+ Plurimath::Math.parse(expr, "asciimath")
42
+ .to_mathml(display_style: elem["block"])
43
+ end
44
+ end
45
+
30
46
  def asciimath2mathml_err(text, expr)
31
47
  err = "Malformed MathML: #{expr}\n#{text}"
32
48
  @log.add("Maths", nil, err, severity: 0)
@@ -57,8 +73,6 @@ module Metanorma
57
73
  xml.children = math
58
74
  end
59
75
 
60
- MATHML_NS = "http://www.w3.org/1998/Math/MathML".freeze
61
-
62
76
  def mathml_preserve_space(math)
63
77
  math.xpath(".//m:mtext", "m" => MATHML_NS).each do |x|
64
78
  x.children = x.children.to_xml
@@ -193,7 +207,8 @@ module Metanorma
193
207
 
194
208
  def mathml_cleanup(xmldoc)
195
209
  unitsml = Asciimath2UnitsML::Conv.new(asciimath2unitsml_options)
196
- xmldoc.xpath("//stem[@type = 'MathML']").each do |x|
210
+ xmldoc.xpath("//stem[@type = 'MathML'][not(@validate = 'false')]")
211
+ .each do |x|
197
212
  xml_unescape_mathml(x)
198
213
  mathml_namespace(x)
199
214
  mathml_preserve_space(x)
@@ -1,6 +1,3 @@
1
- require "date"
2
- require "htmlentities"
3
- require "json"
4
1
  require_relative "cleanup_section_names"
5
2
 
6
3
  module Metanorma
@@ -51,8 +48,9 @@ module Metanorma
51
48
 
52
49
  def clean_abstract(dupabstract)
53
50
  dupabstract.traverse { |n| n.remove_attribute("id") }
54
- dupabstract.remove_attribute("language")
55
- dupabstract.remove_attribute("script")
51
+ %w(language script unnumbered).each do |w|
52
+ dupabstract.remove_attribute(w)
53
+ end
56
54
  dupabstract.at("./title")&.remove
57
55
  dupabstract
58
56
  end
@@ -100,9 +98,9 @@ module Metanorma
100
98
  y.name == "annex" || !y.ancestors("annex").empty? and next
101
99
  y.wrap("<annex/>")
102
100
  y.parent["id"] = "_#{UUIDTools::UUID.random_create}"
103
- y.parent["obligation"] = y["obligation"]
104
- y.parent["language"] = y["language"]
105
- y.parent["script"] = y["script"]
101
+ %w(obligation language script).each do |w|
102
+ y.parent[w] = y[w]
103
+ end
106
104
  end
107
105
  end
108
106
 
@@ -195,7 +193,8 @@ module Metanorma
195
193
  def sections_clausebefore_cleanup(xmldoc)
196
194
  xmldoc.at("//sections") or return
197
195
  ins = insert_before(xmldoc, "//sections")
198
- xmldoc.xpath("//sections//*[@beforeclauses = 'true']").reverse.each do |x|
196
+ xmldoc.xpath("//sections//*[@beforeclauses = 'true']")
197
+ .reverse.each do |x|
199
198
  x.delete("beforeclauses")
200
199
  ins.previous = x.remove
201
200
  end
@@ -204,9 +203,10 @@ module Metanorma
204
203
 
205
204
  # only move clausebefore notes at the very end of preface
206
205
  def endofpreface_clausebefore(xmldoc, ins)
207
- xmldoc.xpath("//preface//*[@beforeclauses = 'true']").reverse.each do |x|
208
- textafternote = xmldoc.xpath("//preface//*") & x.xpath("./following::*")
209
- textafternote.text.strip.empty? or break
206
+ xmldoc.xpath("//preface//*[@beforeclauses = 'true']").reverse
207
+ .each do |x|
208
+ textafter = xmldoc.xpath("//preface//*") & x.xpath("./following::*")
209
+ textafter.text.strip.empty? or break
210
210
  x.delete("beforeclauses")
211
211
  ins.previous = x.remove
212
212
  end
@@ -33,7 +33,7 @@ module Metanorma
33
33
  @boilerplateauthority = node.attr("boilerplate-authority")
34
34
  @embed_hdr = node.attr("embed_hdr")
35
35
  @embed_id = node.attr("embed_id")
36
- @document_scheme = node.attr("document-scheme")
36
+ @document_scheme = document_scheme(node)
37
37
  @xrefstyle = node.attr("xrefstyle")
38
38
  @source_linenums = node.attr("source-linenums-option") == "true"
39
39
  end
@@ -17,7 +17,7 @@
17
17
  these elements; we just want one namespace for any child grammars
18
18
  of this.
19
19
  -->
20
- <!-- VERSION v1.3.0 -->
20
+ <!-- VERSION v1.3.1 -->
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">
@@ -1346,38 +1346,41 @@
1346
1346
  </oneOrMore>
1347
1347
  </element>
1348
1348
  </define>
1349
+ <define name="Section-Attributes">
1350
+ <optional>
1351
+ <attribute name="id">
1352
+ <data type="ID"/>
1353
+ </attribute>
1354
+ </optional>
1355
+ <optional>
1356
+ <attribute name="language"/>
1357
+ </optional>
1358
+ <optional>
1359
+ <attribute name="script"/>
1360
+ </optional>
1361
+ <optional>
1362
+ <attribute name="inline-header">
1363
+ <data type="boolean"/>
1364
+ </attribute>
1365
+ </optional>
1366
+ <optional>
1367
+ <attribute name="number"/>
1368
+ </optional>
1369
+ <optional>
1370
+ <attribute name="branch-number"/>
1371
+ </optional>
1372
+ <optional>
1373
+ <attribute name="obligation">
1374
+ <choice>
1375
+ <value>normative</value>
1376
+ <value>informative</value>
1377
+ </choice>
1378
+ </attribute>
1379
+ </optional>
1380
+ </define>
1349
1381
  <define name="reference-clause">
1350
1382
  <element name="clause">
1351
- <optional>
1352
- <attribute name="id">
1353
- <data type="ID"/>
1354
- </attribute>
1355
- </optional>
1356
- <optional>
1357
- <attribute name="language"/>
1358
- </optional>
1359
- <optional>
1360
- <attribute name="script"/>
1361
- </optional>
1362
- <optional>
1363
- <attribute name="inline-header">
1364
- <data type="boolean"/>
1365
- </attribute>
1366
- </optional>
1367
- <optional>
1368
- <attribute name="number"/>
1369
- </optional>
1370
- <optional>
1371
- <attribute name="branch-number"/>
1372
- </optional>
1373
- <optional>
1374
- <attribute name="obligation">
1375
- <choice>
1376
- <value>normative</value>
1377
- <value>informative</value>
1378
- </choice>
1379
- </attribute>
1380
- </optional>
1383
+ <ref name="Section-Attributes"/>
1381
1384
  <optional>
1382
1385
  <ref name="section-title"/>
1383
1386
  </optional>
@@ -1566,36 +1569,7 @@
1566
1569
  </element>
1567
1570
  </define>
1568
1571
  <define name="Content-Section">
1569
- <optional>
1570
- <attribute name="id">
1571
- <data type="ID"/>
1572
- </attribute>
1573
- </optional>
1574
- <optional>
1575
- <attribute name="language"/>
1576
- </optional>
1577
- <optional>
1578
- <attribute name="script"/>
1579
- </optional>
1580
- <optional>
1581
- <attribute name="inline-header">
1582
- <data type="boolean"/>
1583
- </attribute>
1584
- </optional>
1585
- <optional>
1586
- <attribute name="obligation">
1587
- <choice>
1588
- <value>normative</value>
1589
- <value>informative</value>
1590
- </choice>
1591
- </attribute>
1592
- </optional>
1593
- <optional>
1594
- <attribute name="number"/>
1595
- </optional>
1596
- <optional>
1597
- <attribute name="branch-number"/>
1598
- </optional>
1572
+ <ref name="Section-Attributes"/>
1599
1573
  <optional>
1600
1574
  <attribute name="type"/>
1601
1575
  </optional>
@@ -1617,39 +1591,10 @@
1617
1591
  </element>
1618
1592
  </define>
1619
1593
  <define name="Clause-Section">
1620
- <optional>
1621
- <attribute name="id">
1622
- <data type="ID"/>
1623
- </attribute>
1624
- </optional>
1625
- <optional>
1626
- <attribute name="language"/>
1627
- </optional>
1628
- <optional>
1629
- <attribute name="script"/>
1630
- </optional>
1631
- <optional>
1632
- <attribute name="inline-header">
1633
- <data type="boolean"/>
1634
- </attribute>
1635
- </optional>
1636
- <optional>
1637
- <attribute name="obligation">
1638
- <choice>
1639
- <value>normative</value>
1640
- <value>informative</value>
1641
- </choice>
1642
- </attribute>
1643
- </optional>
1594
+ <ref name="Section-Attributes"/>
1644
1595
  <optional>
1645
1596
  <attribute name="type"/>
1646
1597
  </optional>
1647
- <optional>
1648
- <attribute name="number"/>
1649
- </optional>
1650
- <optional>
1651
- <attribute name="branch-number"/>
1652
- </optional>
1653
1598
  <optional>
1654
1599
  <ref name="section-title"/>
1655
1600
  </optional>
@@ -1730,34 +1675,10 @@
1730
1675
  </define>
1731
1676
  <define name="terms">
1732
1677
  <element name="terms">
1733
- <optional>
1734
- <attribute name="id">
1735
- <data type="ID"/>
1736
- </attribute>
1737
- </optional>
1738
- <optional>
1739
- <attribute name="language"/>
1740
- </optional>
1741
- <optional>
1742
- <attribute name="script"/>
1743
- </optional>
1678
+ <ref name="Section-Attributes"/>
1744
1679
  <optional>
1745
1680
  <attribute name="type"/>
1746
1681
  </optional>
1747
- <optional>
1748
- <attribute name="number"/>
1749
- </optional>
1750
- <optional>
1751
- <attribute name="branch-number"/>
1752
- </optional>
1753
- <optional>
1754
- <attribute name="obligation">
1755
- <choice>
1756
- <value>normative</value>
1757
- <value>informative</value>
1758
- </choice>
1759
- </attribute>
1760
- </optional>
1761
1682
  <optional>
1762
1683
  <ref name="section-title"/>
1763
1684
  </optional>
@@ -100,7 +100,7 @@ module Metanorma
100
100
  status[:midline_docattr] && !/^:[^ :]+: /.match?(text) and
101
101
  status[:midline_docattr] = false
102
102
  if (status[:is_delim] && /^(-+|\*+|=+|_+)$/.match?(text)) ||
103
- (!status[:is_delim] && !status[:delimln] && text == "----")
103
+ (!status[:is_delim] && !status[:delimln] && /^-----*$|^\.\.\.\.\.*$/.match?(text))
104
104
  status[:delimln] = text
105
105
  status[:pass] = true
106
106
  elsif status[:pass_delim]
@@ -83,6 +83,7 @@ module Metanorma
83
83
  def section_attributes(node)
84
84
  ret =
85
85
  { id: Metanorma::Utils::anchor_or_uuid(node),
86
+ unnumbered: node.option?("unnumbered") ? "true" : nil,
86
87
  annex: role_style(node, "appendix") && node.level == 1 ? true : nil,
87
88
  colophon: role_style(node, "colophon") ? true : nil,
88
89
  preface: role_style(node, "preface") ? true : nil }
@@ -34,8 +34,12 @@ module Metanorma
34
34
 
35
35
  def math_validate(doc)
36
36
  doc.xpath("//m:math", "m" => MATHML_NS).each do |m|
37
- math = mathml_sanitise(m.dup)
38
- Plurimath::Math.parse(math, "mathml").to_mathml
37
+ if m.parent["validate"] == "false"
38
+ m.parent.delete("validate")
39
+ else
40
+ math = mathml_sanitise(m.dup)
41
+ Plurimath::Math.parse(math, "mathml").to_mathml
42
+ end
39
43
  rescue StandardError => e
40
44
  math_validate_error(math, m, e)
41
45
  end
@@ -19,6 +19,6 @@ module Metanorma
19
19
  end
20
20
 
21
21
  module Standoc
22
- VERSION = "2.8.6".freeze
22
+ VERSION = "2.8.8".freeze
23
23
  end
24
24
  end
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
32
32
  spec.add_dependency "asciidoctor", "~> 2.0.0"
33
33
  spec.add_dependency "crass", "~> 1.0.0"
34
34
  spec.add_dependency "iev", "~> 0.3.0"
35
- spec.add_dependency "isodoc", "~> 2.9.0"
35
+ spec.add_dependency "isodoc", "~> 2.10.0"
36
36
  spec.add_dependency "metanorma", ">= 1.6.0"
37
37
  spec.add_dependency "metanorma-plugin-datastruct", "~> 0.3.0"
38
38
  spec.add_dependency "metanorma-plugin-glossarist", "~> 0.2.0"
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.8.6
4
+ version: 2.8.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-25 00:00:00.000000000 Z
11
+ date: 2024-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 2.9.0
75
+ version: 2.10.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 2.9.0
82
+ version: 2.10.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: metanorma
85
85
  requirement: !ruby/object:Gem::Requirement