metanorma-iso 3.5.1 → 3.5.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: 831161353a536b05475fec90f22cef8b2709f3e602ba8efe93d8ffdcf1d6ed24
4
- data.tar.gz: 1cb5e973d0fc7952fe56a26415f647fdf90242d95e54556a2f581f3b5c5695e5
3
+ metadata.gz: 41f2468c77bd949ee94e2f8cbfa5f60c01b5a5633db5d1ee05b248a977966f6f
4
+ data.tar.gz: 2413d3b2af2054253b248a3661929282e2eb43d26f4660304805bd86abc7b19d
5
5
  SHA512:
6
- metadata.gz: 2bdda034c20c33f234a65a4b07c4adaaf8b2269c61e493366b720ac84e155330b40918c34534742fb545faf5f5198810a9f8f70c6ff7a51968bf3903dbdf3755
7
- data.tar.gz: 15a94ad86c2d8dc3bc997d23baeb3b0c758317f6ca685d044beab8f8b5c2b93ca4f037ef74705ae2f67beac1063d6b078e1cca5146f873e0b5e893f6af720210
6
+ metadata.gz: 0536b71c11b64054b8f8efc51e4eabe7430759d5c3f70189a53770b6425fdd585a141bee630c2adc63a07fa8d4da9b87cce4112b1a0e8651824191823b3903a9
7
+ data.tar.gz: ae3d8b25bf269f9efe7b71ff210599f30f3af7f2a222b10663714394dda19402467102774f849ee2f0c7f702d471f21426038f6c477438c98d052afa813a5f5f
@@ -24,6 +24,8 @@ module IsoDoc
24
24
 
25
25
  # style [1] references as [Reference 1], eref or origin
26
26
  def bracketed_refs_processing(docxml)
27
+ @elem_id_lookup = docxml.xpath("//*[@id]")
28
+ .each_with_object({}) { |e, h| h[e["id"]] ||= e }
27
29
  (docxml.xpath(ns("//semx[@element = 'eref']")) -
28
30
  docxml.xpath(ns("//semx[@element = 'erefstack']//semx[@element = 'eref']")))
29
31
  .each { |n| bracket_eref_style(n) }
@@ -46,9 +48,16 @@ module IsoDoc
46
48
  end
47
49
  end
48
50
 
51
+ # Reference sources resolve through a one-pass id index: a
52
+ # per-reference //*[@id = '...'] document scan is quadratic on
53
+ # large vocabulary documents.
54
+ def source_semx(elem)
55
+ @elem_id_lookup[elem["source"]]
56
+ end
57
+
49
58
  # is the eref corresponding to this semx a simple [n] reference?
50
59
  def bracket_eref_original(elem)
51
- semx = elem.document.at("//*[@id = '#{elem['source']}']") or return
60
+ semx = source_semx(elem) or return
52
61
  dup = elem.at(ns(".//fmt-eref | .//fmt-xref | .//fmt-origin"))
53
62
  non_locality_elems(semx).empty? or return
54
63
  /^\[\d+\]$/.match?(semx["citeas"]) or return
@@ -75,7 +84,7 @@ module IsoDoc
75
84
  def bracket_erefstack_style_prep(elem)
76
85
  semx = elem.xpath(ns(".//semx[@element = 'eref']"))
77
86
  .filter_map { |e| bracket_eref_original(e) }
78
- erefstack_orig = elem.document.at("//*[@id = '#{elem['source']}']")
87
+ erefstack_orig = source_semx(elem)
79
88
  [semx, erefstack_orig]
80
89
  end
81
90
 
@@ -85,7 +94,7 @@ module IsoDoc
85
94
  end
86
95
 
87
96
  def insert_biblio_callout(elem)
88
- semx = elem.document.at("//*[@id = '#{elem['source']}']") or return
97
+ semx = source_semx(elem) or return
89
98
  if ref = @bibitem_lookup[semx["bibitemid"]]
90
99
  Metanorma::Iso::PublisherIdentity
91
100
  .iso_iec_publisher?(ref, ns: method(:ns)) and return
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module Iso
3
- VERSION = "3.5.1".freeze
3
+ VERSION = "3.5.2".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-iso
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.1
4
+ version: 3.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-10-29 00:00:00.000000000 Z
11
+ date: 2026-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: metanorma-document