isodoc 3.7.4.pre.alpha.3 → 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 +4 -4
- data/README.adoc +2 -0
- data/isodoc.gemspec +11 -8
- data/lib/isodoc/presentation_function/annex.rb +5 -1
- data/lib/isodoc/presentation_function/designations.rb +12 -1
- data/lib/isodoc/presentation_function/list.rb +21 -3
- data/lib/isodoc/version.rb +1 -1
- metadata +22 -8
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
|
data/README.adoc
CHANGED
|
@@ -100,3 +100,5 @@ The runtime SCSS compilation path (`css.rb#convert_scss`, which `require`s `sass
|
|
|
100
100
|
* a downstream project resolves isodoc from git (e.g. `gem "isodoc", github: "metanorma/isodoc"`): bundler installs the gemspec's file list, which carries only `.scss`
|
|
101
101
|
|
|
102
102
|
NOTE: Downstream maintainers: if your Gemfile pins isodoc from git, your HTML renders will `require "sassc-embedded"` at runtime even though released-gem consumers never do. A downstream `gem "sassc-embedded"` line in that setup is load-bearing, not dead weight — and it becomes droppable once you revert to a released isodoc gem.
|
|
103
|
+
|
|
104
|
+
Conversely, **do not declare `sassc-embedded` in this gem's gemspec** — not as a fix, not as a "missing dependency": released-gem consumers never execute that code path, and adding a compilation toolchain as a hard runtime dependency would burden every consumer for an optional path. The requirement belongs to the consumer's Gemfile precisely when the consumer's resolution pulls `.scss` sources.
|
data/isodoc.gemspec
CHANGED
|
@@ -32,20 +32,23 @@ Gem::Specification.new do |spec|
|
|
|
32
32
|
spec.add_dependency "bigdecimal"
|
|
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
|
-
spec.add_dependency "relaton-cli", ">= 3.0.0
|
|
35
|
+
spec.add_dependency "relaton-cli", ">= 3.0.0", "< 3.1"
|
|
36
36
|
# spec.add_dependency "metanorma-utils", "~> 2.0" # already in isodoc-i18n
|
|
37
37
|
spec.add_dependency "mn2pdf", ">= 2.13"
|
|
38
38
|
spec.add_dependency "mn-requirements", "~> 0.5.0"
|
|
39
|
-
# Allowance for the relaton 3.0
|
|
40
|
-
# allowance in #824): relaton 3.0.0
|
|
41
|
-
#
|
|
42
|
-
#
|
|
39
|
+
# Allowance for the relaton 3.0 family (mirrors the relaton-cli
|
|
40
|
+
# allowance in #824): relaton-render 3.0.0 joins the family's
|
|
41
|
+
# versioning and restores the 1.x leaves as deprecated shims, so
|
|
42
|
+
# flavor stacks boot against it.
|
|
43
43
|
# Released isodoc lines keep resolving relaton-render 1.3.0; only a
|
|
44
|
-
# stack
|
|
45
|
-
|
|
46
|
-
spec.add_dependency "relaton-render", "~> 3.0.0.pre.alpha", "< 5"
|
|
44
|
+
# stack on this floor co-resolves the relaton 3.0 line.
|
|
45
|
+
spec.add_dependency "relaton-render", "~> 3.0", "< 5"
|
|
47
46
|
spec.add_dependency "roman-numerals"
|
|
48
47
|
spec.add_dependency "rouge", "~> 4.0"
|
|
48
|
+
# lib/isodoc/css.rb requires sassc-embedded (SassC::Engine) at
|
|
49
|
+
# SCSS-compile time; without a declared dependency, fresh minimal
|
|
50
|
+
# bundles crash at populate_css (metanorma/isodoc#862)
|
|
51
|
+
spec.add_dependency "sassc-embedded"
|
|
49
52
|
spec.add_dependency "thread_safe"
|
|
50
53
|
spec.add_dependency "twitter_cldr", ">= 6.6.0"
|
|
51
54
|
spec.add_dependency "uuidtools"
|
|
@@ -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
|
|
@@ -58,20 +58,20 @@ dependencies:
|
|
|
58
58
|
requirements:
|
|
59
59
|
- - ">="
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: 3.0.0
|
|
61
|
+
version: 3.0.0
|
|
62
62
|
- - "<"
|
|
63
63
|
- !ruby/object:Gem::Version
|
|
64
|
-
version: 3.1
|
|
64
|
+
version: '3.1'
|
|
65
65
|
type: :runtime
|
|
66
66
|
prerelease: false
|
|
67
67
|
version_requirements: !ruby/object:Gem::Requirement
|
|
68
68
|
requirements:
|
|
69
69
|
- - ">="
|
|
70
70
|
- !ruby/object:Gem::Version
|
|
71
|
-
version: 3.0.0
|
|
71
|
+
version: 3.0.0
|
|
72
72
|
- - "<"
|
|
73
73
|
- !ruby/object:Gem::Version
|
|
74
|
-
version: 3.1
|
|
74
|
+
version: '3.1'
|
|
75
75
|
- !ruby/object:Gem::Dependency
|
|
76
76
|
name: mn2pdf
|
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -106,7 +106,7 @@ dependencies:
|
|
|
106
106
|
requirements:
|
|
107
107
|
- - "~>"
|
|
108
108
|
- !ruby/object:Gem::Version
|
|
109
|
-
version: 3.0
|
|
109
|
+
version: '3.0'
|
|
110
110
|
- - "<"
|
|
111
111
|
- !ruby/object:Gem::Version
|
|
112
112
|
version: '5'
|
|
@@ -116,7 +116,7 @@ dependencies:
|
|
|
116
116
|
requirements:
|
|
117
117
|
- - "~>"
|
|
118
118
|
- !ruby/object:Gem::Version
|
|
119
|
-
version: 3.0
|
|
119
|
+
version: '3.0'
|
|
120
120
|
- - "<"
|
|
121
121
|
- !ruby/object:Gem::Version
|
|
122
122
|
version: '5'
|
|
@@ -148,6 +148,20 @@ dependencies:
|
|
|
148
148
|
- - "~>"
|
|
149
149
|
- !ruby/object:Gem::Version
|
|
150
150
|
version: '4.0'
|
|
151
|
+
- !ruby/object:Gem::Dependency
|
|
152
|
+
name: sassc-embedded
|
|
153
|
+
requirement: !ruby/object:Gem::Requirement
|
|
154
|
+
requirements:
|
|
155
|
+
- - ">="
|
|
156
|
+
- !ruby/object:Gem::Version
|
|
157
|
+
version: '0'
|
|
158
|
+
type: :runtime
|
|
159
|
+
prerelease: false
|
|
160
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
161
|
+
requirements:
|
|
162
|
+
- - ">="
|
|
163
|
+
- !ruby/object:Gem::Version
|
|
164
|
+
version: '0'
|
|
151
165
|
- !ruby/object:Gem::Dependency
|
|
152
166
|
name: thread_safe
|
|
153
167
|
requirement: !ruby/object:Gem::Requirement
|