relaton-render 3.0.0.pre.alpha.1 → 3.0.0.pre.alpha.3
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/lib/relaton/render/general.rb +36 -8
- data/lib/relaton/render/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b1d41488064d32008b3f44f81635f4bf8e096341adb5434eb270b440b9f7bfbe
|
|
4
|
+
data.tar.gz: 7b3b00fdadc97f66749d98f028684016a7d917977a3900c2d852a6127e4126f2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1c73e86c124a5cb571305da9b9dc8ac0a35eeabadc89f2d9fa819ca95edd3bbe097356c4e5e4f2199542c94a0939338bfd3b04d6f1f3933708b266751b5b75c9
|
|
7
|
+
data.tar.gz: 539376d05813f377ca9d8fa36dff0c023e477daf4c7fb435b487a4e2da22bb98e185f65a1ff3a2e17b838e881028a8f7a3c7de1a27f7c5d7f5f616274f71c349
|
|
@@ -25,21 +25,29 @@ module Relaton
|
|
|
25
25
|
CiteTemplate = Struct.new(:template_raw)
|
|
26
26
|
|
|
27
27
|
def initialize(options = {})
|
|
28
|
+
options = deep_symbolize(options)
|
|
28
29
|
@lang = options[:language] || options[:lang] || "en"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
)
|
|
30
|
+
renderer_opts = { lang: @lang, script: options[:script] || "Latn",
|
|
31
|
+
labels: options[:i18nhash] || {} }
|
|
32
|
+
# A flavor names its own CitationStyle instance (name or YAML path)
|
|
33
|
+
options[:style] and renderer_opts[:style] = options[:style]
|
|
34
|
+
@renderer = Iso690::Renderer.new(**renderer_opts)
|
|
34
35
|
warn_general_config if options[:config]
|
|
35
36
|
end
|
|
36
37
|
|
|
37
|
-
def render(model, **opts)
|
|
38
|
-
|
|
38
|
+
def render(model, embedded: false, **opts)
|
|
39
|
+
model = to_model(model)
|
|
40
|
+
text =
|
|
41
|
+
if model.respond_to?(:formattedref) && model.formattedref
|
|
42
|
+
model.formattedref.content
|
|
43
|
+
else
|
|
44
|
+
@renderer.render(model, **opts)
|
|
45
|
+
end
|
|
46
|
+
embedded ? text : "<formattedref>#{text}</formattedref>"
|
|
39
47
|
end
|
|
40
48
|
|
|
41
49
|
def citation(model, **opts)
|
|
42
|
-
@renderer.citation(model, **opts)
|
|
50
|
+
@renderer.citation(to_model(model), **opts)
|
|
43
51
|
end
|
|
44
52
|
|
|
45
53
|
# isodoc's references rendering: renderings[id][:formattedref]
|
|
@@ -145,6 +153,26 @@ module Relaton
|
|
|
145
153
|
end
|
|
146
154
|
end
|
|
147
155
|
|
|
156
|
+
# 1.x accepted string- and symbol-keyed options alike (the old
|
|
157
|
+
# engine deep-symbolized via metanorma-utils); isodoc's bibrenderer
|
|
158
|
+
# and every flavor still pass string keys.
|
|
159
|
+
def deep_symbolize(value)
|
|
160
|
+
case value
|
|
161
|
+
when Hash then value.to_h { |k, v| [k.to_sym, deep_symbolize(v)] }
|
|
162
|
+
when Array then value.map { |v| deep_symbolize(v) }
|
|
163
|
+
else value
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
# 1.x render/citation accepted a bibitem XML string; the Iso690
|
|
168
|
+
# engine consumes model instances.
|
|
169
|
+
def to_model(model)
|
|
170
|
+
return model unless model.is_a?(String)
|
|
171
|
+
|
|
172
|
+
klass = facade_bibitem_class
|
|
173
|
+
klass.from_xml(model)
|
|
174
|
+
end
|
|
175
|
+
|
|
148
176
|
def warn_general_config
|
|
149
177
|
return if General.config_warned
|
|
150
178
|
|