pubid-core 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7cc372a0160fd8c1a670be2957f3b3e0a98766dd89ed6f8782b1f52085bcbb8f
4
- data.tar.gz: 9a0d58a218b982531fe206bd7505203428ec6f9d7dcbaa649f80267b09e44030
3
+ metadata.gz: 044351542136162d7aca14a0c3f2997c922c7cee236b2ba5e849284ed3c0b2eb
4
+ data.tar.gz: '07709b34769d3aef2501c8e715a5757273e0010f332b45760742fdf1b832c617'
5
5
  SHA512:
6
- metadata.gz: 04e0297f6ce7bea0cabc3e41c7718e1eee523f93e039fa42f4b08c7a34d4fcb7b3c979fbcdb2c0c7bd980b4523d2c6985198cf61f03bb1fad64765a51ad2ccd8
7
- data.tar.gz: f0c98e3158ff918fe1f0df2e5ae3c2e7cff838e6cdf37cd078d1abdc1d147561b2453ffb6b5c749dbc7b019f1691f59d0b0b52356a61efcbb10533ce44319d64
6
+ metadata.gz: c8485180c9bbfd44d7e7f2d8a80177171e17bbd3db278d22a440b470ee82747fbcf5e888872773522aa35106028360dd7318a7af4b091290dbcb11d2835d9f41
7
+ data.tar.gz: d44abfc112288e85c383f0d9871bf0904cf8dd13a2e5808043371806961bec0b39fa263fd2bcf55e1e31ad099d96b8c80c0834b6258dcc706a9f5fae43646693
@@ -13,6 +13,22 @@ module Pubid::Core::Renderer
13
13
  @params = params
14
14
  end
15
15
 
16
+ # Prerender parameters and store in @prerendered_params
17
+ # @param opts [Hash] options for render method, eg. { with_language_code: :single, with_date: true }
18
+ # @return [Renderer::Base] self
19
+ def prerender(**opts)
20
+ @prerendered_params = prerender_params(@params, opts)
21
+ @prerendered_params.default = ""
22
+ self
23
+ end
24
+
25
+ def render_base_identifier(**args)
26
+ prerender(**args)
27
+
28
+ render_identifier(@prerendered_params)
29
+ end
30
+
31
+
16
32
  def prerender_params(params, opts)
17
33
  params.map do |key, value|
18
34
  next unless value
@@ -24,16 +40,49 @@ module Pubid::Core::Renderer
24
40
  end.compact.to_h
25
41
  end
26
42
 
43
+ # Renders amendment and corrigendum when applied through identifier type
44
+ def render_supplement(supplement_params, **args)
45
+ base = if supplement_params[:base].type == :amd
46
+ # render inner amendment (cor -> amd -> base)
47
+ render_supplement(supplement_params[:base].get_params, **args)
48
+ else
49
+ self.class.new(supplement_params[:base].get_params).render_base_identifier(
50
+ # always render year for identifiers with supplement
51
+ **args.merge({ with_date: true }),
52
+ )
53
+ end
54
+ supplement = case supplement_params[:typed_stage].type.type
55
+ when :amd
56
+ render_amendments(
57
+ [Pubid::Iso::Amendment.new(**supplement_params.slice(:number, :year, :typed_stage, :edition, :iteration))],
58
+ args,
59
+ nil,
60
+ )
61
+ when :cor
62
+ render_corrigendums(
63
+ [Pubid::Iso::Corrigendum.new(**supplement_params.slice(:number, :year, :typed_stage, :edition, :iteration))],
64
+ args,
65
+ nil,
66
+ )
67
+ # copy parameters from Identifier only supported by Corrigendum
68
+ end
69
+
70
+ if supplement_params[:base].language
71
+ base + supplement + render_language(supplement_params[:base].language, args, nil)
72
+ else
73
+ base + supplement
74
+ end
75
+ end
76
+
27
77
  # Render identifier
28
78
  # @param with_date [Boolean] include year in output
29
79
  # @param with_language_code [:iso,:single] render document language as 2-letter ISO 639-1 language code or single code
30
- def render(with_date: true, with_language_code: :iso)
31
- params = prerender_params(@params,
32
- { with_date: with_date, with_language_code: with_language_code })
33
- # render empty string when the key is not exist
34
- params.default = ""
35
-
36
- render_identifier(params)
80
+ def render(with_date: true, with_language_code: :iso, **args)
81
+ if %i(amd cor).include? @params[:type]&.type
82
+ render_supplement(@params, **args.merge({ with_date: with_date, with_language_code: with_language_code}))
83
+ else
84
+ render_base_identifier(**args.merge({ with_date: with_date, with_language_code: with_language_code})) + @prerendered_params[:language].to_s
85
+ end
37
86
  end
38
87
 
39
88
  def render_base(params, prefix = "")
@@ -1,5 +1,5 @@
1
1
  module Pubid
2
2
  module Core
3
- VERSION = "1.2.1".freeze
3
+ VERSION = "1.3.0".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pubid-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-10-12 00:00:00.000000000 Z
11
+ date: 2022-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake