isodoc 3.7.6 → 3.7.7

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: 53a0846d73af6d9b85e2ab844e73b7f136e7fdff0bed55e952f0538359dee5e8
4
- data.tar.gz: d2b73567291b752c28d06228fe58cd1b1bb8dfea3df5acd727d8aa2db63cd541
3
+ metadata.gz: f5e6a59ece60d88c1ec940f5a34612fd4290dcdfb9737528713152c2eb7dbe20
4
+ data.tar.gz: a59beb605f4e93e76be88d82567d96b3c34534479805db7c07b3b3b228a29766
5
5
  SHA512:
6
- metadata.gz: 4a0a325e3e20a885a95cdabd6bc53a90b4537be2ec20315173ec8d6f48beb7c9af89f9cea4966db4b20edfd08a22878d704ece90495cd3a8c600b37572d81c38
7
- data.tar.gz: ffb5f000b1363a094e4142091eb189bdcbba7d4dc4a3f55374b2b4eb6fecff9686af7898925842246e8c33c485c1716a7bd71b269e92fc31f9979163ef32ccc2
6
+ metadata.gz: 858f4a2255c6a3a0fb7150dd6e4c13e81cfc49369e454e89c2bf7b2327d5b61bf1ac8b1075938c4a8b5d00310c4a525d4100287690e9816c3486a7ace5e307e9
7
+ data.tar.gz: 7f900ddbf4c9f128141550d1172e5805f974a91b649a11613b7cc4a52ddf5839a91df107d34d3eea459dadc6720c8f763f8c974c7d4b488dda8a18f1bea81a9e
data/Gemfile CHANGED
@@ -5,9 +5,8 @@ source "https://rubygems.org"
5
5
  git_source(:github) { |repo| "https://github.com/#{repo}" }
6
6
 
7
7
  gem "benchmark"
8
- gem "canon"
8
+ gem "canon", "~> 0.3"
9
9
  gem "debug"
10
- gem "equivalent-xml", "~> 0.6"
11
10
  gem "guard", "~> 2.14"
12
11
  gem "guard-rspec", "~> 4.7"
13
12
  gem "rake"
@@ -3,6 +3,23 @@ module IsoDoc
3
3
  DESIGNATION_ELEMS =
4
4
  %w(preferred admitted deprecates related definition source).freeze
5
5
 
6
+ # Union XPaths: one evaluation per term replaces the original six
7
+ # nested xpath/at pairs (O(terms × designation-elems) XPathContext
8
+ # setups). The removal set (fmt-name/fmt-xref-label under designation
9
+ # elements) and the removal targets (empty fmt-* containers) are
10
+ # disjoint node sets, so evaluating removal after collection preserves
11
+ # the original interleaved order's outcome.
12
+ TERMCLEANUP_REMOVE_XPATH =
13
+ DESIGNATION_ELEMS.flat_map do |w|
14
+ %w(fmt-name fmt-xref-label).map { |n| "./#{w}//#{n}" }
15
+ end.join(" | ").freeze
16
+
17
+ TERMCLEANUP_TARGET_XPATH =
18
+ DESIGNATION_ELEMS.map do |w|
19
+ n = w == "source" ? "fmt-termsource" : "fmt-#{w}"
20
+ ".//#{n}"
21
+ end.join(" | ").freeze
22
+
6
23
  def target_desgn_elem(name)
7
24
  target = "fmt-#{name}"
8
25
  name == "source" and target = "fmt-termsource"
@@ -20,11 +37,9 @@ module IsoDoc
20
37
 
21
38
  def termcleanup(docxml)
22
39
  docxml.xpath(ns("//term")).each do |t|
23
- DESIGNATION_ELEMS.each do |w|
24
- target = target_desgn_elem(w)
25
- t.xpath(ns("./#{w}//fmt-name | ./#{w}//fmt-xref-label")).each(&:remove)
26
- f = t.at(ns(".//#{target}"))
27
- f&.children&.empty? and f.remove
40
+ t.xpath(ns(TERMCLEANUP_REMOVE_XPATH)).each(&:remove)
41
+ t.xpath(ns(TERMCLEANUP_TARGET_XPATH)).each do |f|
42
+ f.children.empty? and f.remove
28
43
  end
29
44
  end
30
45
  end
@@ -111,6 +111,10 @@ module IsoDoc
111
111
 
112
112
  def wrap_xml_fragment(value)
113
113
  return value unless value.is_a?(String)
114
+ # XML declarations are legal only at document start; a fragment
115
+ # carrying one (e.g. `<root/><?xml?>`) blows up the strict wrap
116
+ # parse. A declaration carries no comparison semantics.
117
+ value = value.gsub(/<\?xml[^>]*\?>\s*/, "")
114
118
  return value if already_wrapped?(value)
115
119
 
116
120
  wrapped = "<#{XML_FRAG_ROOT}>#{value}</#{XML_FRAG_ROOT}>"
@@ -1,3 +1,3 @@
1
1
  module IsoDoc
2
- VERSION = "3.7.6".freeze
2
+ VERSION = "3.7.7".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isodoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.7.6
4
+ version: 3.7.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-10-31 00:00:00.000000000 Z
11
+ date: 2026-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base64