pubid-core 1.2.1 → 1.3.0

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: 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