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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f301bc95c707486b2546c988eb50acef801327df7ec89b53f319045fba834e25
4
- data.tar.gz: 0c16ff123fddd608086af6d9a4b3577bfe0f828df4304be9e0a031e4afff86e2
3
+ metadata.gz: b1d41488064d32008b3f44f81635f4bf8e096341adb5434eb270b440b9f7bfbe
4
+ data.tar.gz: 7b3b00fdadc97f66749d98f028684016a7d917977a3900c2d852a6127e4126f2
5
5
  SHA512:
6
- metadata.gz: 251ca7594d0e52edd0a42f6bfc840f6fed7a383a9e0f46cc34a20daa720e3c0c455b184169f4448d73aee6cd737d2dd6431a7ff5e05f37b3f3be4eca0584feaa
7
- data.tar.gz: 15a48d602d48b469197df9472d0fd7c3304507f50edb5bfdddb4299f6eadafe6d0a1ceb9bf65b706d4f111b379be980e94b12a6c089e2f836f8f8da6aa16251a
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
- @renderer = Iso690::Renderer.new(
30
- lang: @lang,
31
- script: options[:script] || "Latn",
32
- labels: options[:i18nhash] || {},
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
- @renderer.render(model, **opts)
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
 
@@ -1,5 +1,5 @@
1
1
  module Relaton
2
2
  module Render
3
- VERSION = "3.0.0.pre.alpha.1".freeze
3
+ VERSION = "3.0.0.pre.alpha.3".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-render
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.pre.alpha.1
4
+ version: 3.0.0.pre.alpha.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.