isodoc 3.7.4.pre.alpha.4 → 3.7.4
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: 3a9872c3dc80016910e76d8a9b3c97aa04df34a6caab0c198ba568b97a9ec17d
|
|
4
|
+
data.tar.gz: 57b6c1f42c4fbc6c4b8c5537d058779fb75ac2539c63fe9b0e1d5e5d48104dc0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fde157a47858f873f02c57a84d57f8865790154cd05260e01caa89fd0116297e66388ac98524925517b529c0c111160f1ea415f3dc5c1a6d2d06db9ece697063
|
|
7
|
+
data.tar.gz: 75fce4fdc6a222d822831284e6081f6f621df2ca3813d09514b3eeff8f36e0c43bfeef9064ac7a5b364866768646085fc6342ab1c1962e8592b594420de24ea4
|
data/isodoc.gemspec
CHANGED
|
@@ -33,6 +33,9 @@ Gem::Specification.new do |spec|
|
|
|
33
33
|
spec.add_dependency "html2doc", "~> 1.12"
|
|
34
34
|
# spec.add_dependency "isodoc-i18n", "~> 1.5" # already in relaton-render and mn-requirements
|
|
35
35
|
spec.add_dependency "relaton-cli", ">= 3.0.0", "< 3.1"
|
|
36
|
+
# std_docid_semantic parses through the pubid monogem's flavor
|
|
37
|
+
# registry (Pubid.eager_load_flavors!) — 2.x API, no per-flavor gems
|
|
38
|
+
spec.add_dependency "pubid", "~> 2.0"
|
|
36
39
|
# spec.add_dependency "metanorma-utils", "~> 2.0" # already in isodoc-i18n
|
|
37
40
|
spec.add_dependency "mn2pdf", ">= 2.13"
|
|
38
41
|
spec.add_dependency "mn-requirements", "~> 0.5.0"
|
|
@@ -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
|
|
4
|
+
version: 3.7.4
|
|
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-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: base64
|
|
@@ -72,6 +72,20 @@ dependencies:
|
|
|
72
72
|
- - "<"
|
|
73
73
|
- !ruby/object:Gem::Version
|
|
74
74
|
version: '3.1'
|
|
75
|
+
- !ruby/object:Gem::Dependency
|
|
76
|
+
name: pubid
|
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
79
|
+
- - "~>"
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: '2.0'
|
|
82
|
+
type: :runtime
|
|
83
|
+
prerelease: false
|
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - "~>"
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: '2.0'
|
|
75
89
|
- !ruby/object:Gem::Dependency
|
|
76
90
|
name: mn2pdf
|
|
77
91
|
requirement: !ruby/object:Gem::Requirement
|