isodoc 3.7.4.pre.alpha.4 → 3.7.4.pre.alpha.5
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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2ac7ddfe63cebf2580cf793bda41a563367084ed78ac621f9914bbb1c143eedf
|
|
4
|
+
data.tar.gz: 8771309031dc897df944bb3d0d38b604eca00ef7ffe5f67d0eb17104a72d1627
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 74fd307bb5d2b69531726d7c7f05e8fbbc5532921f20e9fa8e98b61d3e292c3328a0a28daf05285f2750cd0ef15cd890a2e137b294b99bafc936b0334c1dbfbe
|
|
7
|
+
data.tar.gz: c022667c987d194c5308817b405b0cba5cdc446bd4caa7f1a046fdd8586e3799191c3a366663af99190575d37927ba09710d5b882468e9213921e053e3847f50
|
|
@@ -86,8 +86,12 @@ module IsoDoc
|
|
|
86
86
|
end
|
|
87
87
|
|
|
88
88
|
def annex_delim_override(elem)
|
|
89
|
+
if instance_variable_defined?(:@annex_delim_override)
|
|
90
|
+
return @annex_delim_override
|
|
91
|
+
end
|
|
92
|
+
|
|
89
93
|
m = elem.document.root.at(ns("//presentation-metadata/annex-delim"))
|
|
90
|
-
m ? to_xml(m.children) : annex_delim(elem)
|
|
94
|
+
@annex_delim_override = m ? to_xml(m.children) : annex_delim(elem)
|
|
91
95
|
end
|
|
92
96
|
|
|
93
97
|
def annex_delim(_elem)
|
|
@@ -73,7 +73,18 @@ module IsoDoc
|
|
|
73
73
|
def merge_second_preferred1(desgns, term)
|
|
74
74
|
desgns[1..].each(&:remove)
|
|
75
75
|
ret = l10n(desgns.map { |x| to_xml(x) }.join("; "))
|
|
76
|
-
|
|
76
|
+
# Node#ancestors(selector) matches via XPath per ancestor; this runs
|
|
77
|
+
# per term, so walk parents directly.
|
|
78
|
+
in_fmt_related = false
|
|
79
|
+
parent = term.parent
|
|
80
|
+
while parent.is_a?(Nokogiri::XML::Element)
|
|
81
|
+
if parent.name == "fmt-related"
|
|
82
|
+
in_fmt_related = true
|
|
83
|
+
break
|
|
84
|
+
end
|
|
85
|
+
parent = parent.parent
|
|
86
|
+
end
|
|
87
|
+
in_fmt_related or ret = "<p>#{ret}</p>"
|
|
77
88
|
ret
|
|
78
89
|
end
|
|
79
90
|
|
|
@@ -78,10 +78,16 @@ module IsoDoc
|
|
|
78
78
|
%w(—)
|
|
79
79
|
end
|
|
80
80
|
|
|
81
|
+
# Presentation metadata is fixed for the duration of conversion, but
|
|
82
|
+
# this runs per list item: the whole-document XPath per <ul> is
|
|
83
|
+
# quadratic on large documents. Memoize per converter instance.
|
|
81
84
|
def ul_label_list_from_metadata(docxml)
|
|
85
|
+
if instance_variable_defined?(:@ul_label_list_from_metadata)
|
|
86
|
+
return @ul_label_list_from_metadata
|
|
87
|
+
end
|
|
88
|
+
|
|
82
89
|
list = docxml.xpath(ns("//presentation-metadata/ul-label-list"))
|
|
83
|
-
list.empty?
|
|
84
|
-
list.map(&:text)
|
|
90
|
+
@ul_label_list_from_metadata = list.empty? ? nil : list.map(&:text)
|
|
85
91
|
end
|
|
86
92
|
|
|
87
93
|
def ul_label(elem)
|
|
@@ -92,10 +98,22 @@ module IsoDoc
|
|
|
92
98
|
end
|
|
93
99
|
|
|
94
100
|
def ul_label_value(elem)
|
|
95
|
-
depth = elem
|
|
101
|
+
depth = list_nesting_depth(elem)
|
|
96
102
|
val = ul_label_list_from_metadata(elem.document.root) ||
|
|
97
103
|
ul_label_list(elem)
|
|
98
104
|
val[(depth - 1) % val.size]
|
|
99
105
|
end
|
|
106
|
+
|
|
107
|
+
# Walk parents directly: Node#ancestors(selector) runs an XPath match
|
|
108
|
+
# per ancestor, which is quadratic on deeply nested lists.
|
|
109
|
+
def list_nesting_depth(elem)
|
|
110
|
+
depth = 0
|
|
111
|
+
node = elem.parent
|
|
112
|
+
while node.is_a?(Nokogiri::XML::Element)
|
|
113
|
+
depth += 1 if node.name == "ul" || node.name == "ol"
|
|
114
|
+
node = node.parent
|
|
115
|
+
end
|
|
116
|
+
depth
|
|
117
|
+
end
|
|
100
118
|
end
|
|
101
119
|
end
|
data/lib/isodoc/version.rb
CHANGED
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.4.pre.alpha.
|
|
4
|
+
version: 3.7.4.pre.alpha.5
|
|
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-
|
|
11
|
+
date: 2026-10-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: base64
|