metanorma-standoc 2.8.6 → 2.8.8

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