pubid-core 1.8.0 → 1.8.2

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: b98863a952a9201d51c1319a5405a747dd078f0c5a59b6eff44abc041ac4c897
4
- data.tar.gz: 105dade56ebb3a4398f4e05536bd179ef96c8397d9cf3dd8768e98fd5f25fd92
3
+ metadata.gz: b29194f7ce41cd26b68b0a47d068c0b5745e86250a922e471c9c615048b52ee3
4
+ data.tar.gz: 9fa6099b292239068050ac35090d54b70b5500797d343f51a8c33778ad2259a6
5
5
  SHA512:
6
- metadata.gz: 9247a86005060abdcfc4a8f4e484250ca77d771823acdddc245647fdc7de77e43865fc31859fdd2ddc8ec4cf2a930d9150847136f1bff52264871c9369624130
7
- data.tar.gz: 72dcdbb74c4430691150e01421580c17bbc9a236ca044aadae2d1d0a1ad949df36c0939d9148c875e2d6b2cbe31233d8221db4cfa2547c771ebaeed18659b454
6
+ metadata.gz: ff08b70ef0786f07120fd78d263b32a1c8b1147ca995445d95051d946c7ce80ca53390b669253e706c4cf8581fdaa52155d03c331559ea13d396bd83a5310731
7
+ data.tar.gz: f45e2fa4fb73cd3f1af6e66c0f13f13a055852a85d893eb23330a3f8c5a7dd45baa41cf3dbc4053c3faa45253e8146214c78ee73a293a91116163cba8eabf520
@@ -16,7 +16,7 @@ module Pubid::Core
16
16
  elsif stage_or_code.is_a?(String) && config.stages["codes_description"].key?(stage_or_code)
17
17
  [stage_or_code]
18
18
  # when stage is stage name
19
- elsif config.stages["stage_codes"].key?(stage_or_code.to_s)
19
+ elsif config.stages["stage_codes"]&.key?(stage_or_code.to_s)
20
20
  ["#{config.stages["stage_codes"][stage_or_code.to_s]}.#{config.stages["substage_codes"][substage.to_s]}"]
21
21
  else
22
22
  # stage is number
@@ -5,6 +5,8 @@ module Pubid::Core
5
5
  :type, :year, :edition, :language, :amendments,
6
6
  :corrigendums, :stage
7
7
 
8
+ TYPED_STAGES = {}.freeze
9
+
8
10
  # Creates new identifier from options provided:
9
11
  # @param publisher [String] document's publisher, eg. "ISO"
10
12
  # @param copublisher [String,Array<String>] document's copublisher, eg. "IEC"
@@ -72,6 +74,47 @@ module Pubid::Core
72
74
  self.class.get_renderer_class.new(get_params).render
73
75
  end
74
76
 
77
+ # @param typed_stage [String, Symbol] eg. "DTR" or :dtr
78
+ # @return [[Symbol, Stage]] typed stage and stage with assigned harmonized codes
79
+ def find_typed_stage(typed_stage)
80
+ if typed_stage.is_a?(Symbol)
81
+ return [typed_stage,
82
+ Identifier.build_stage(
83
+ harmonized_code: Identifier.build_harmonized_stage_code(self.class::TYPED_STAGES[typed_stage][:harmonized_stages])),
84
+ ]
85
+ end
86
+
87
+ typed_stage = self.class::TYPED_STAGES.find do |_, v|
88
+ if v[:abbr].is_a?(Hash)
89
+ v[:abbr].value?(typed_stage)
90
+ else
91
+ if v.key?(:legacy_abbr)
92
+ v[:legacy_abbr].include?(typed_stage) || v[:abbr] == typed_stage
93
+ else
94
+ v[:abbr] == typed_stage
95
+ end
96
+ #
97
+ # v[:abbr] == typed_stage
98
+ end
99
+ end
100
+
101
+ [typed_stage.first,
102
+ Identifier.build_stage(
103
+ harmonized_code: Identifier.build_harmonized_stage_code(typed_stage[1][:harmonized_stages]))]
104
+ end
105
+
106
+ # Resolve typed stage using stage harmonized stage code
107
+ # @param harmonized_code [HarmonizedStageCode]
108
+ # @return [Symbol, nil] typed stage or nil
109
+ def resolve_typed_stage(harmonized_code)
110
+ self.class::TYPED_STAGES.each do |k, v|
111
+ if (v[:harmonized_stages] & harmonized_code.stages) == harmonized_code.stages
112
+ return k
113
+ end
114
+ end
115
+ nil
116
+ end
117
+
75
118
  class << self
76
119
  # Parses given identifier
77
120
  # @param code_or_params [String, Hash] code or hash from parser
@@ -151,9 +194,27 @@ module Pubid::Core
151
194
  code
152
195
  end
153
196
 
197
+ # @param typed_stage [String, Symbol] typed stage, eg. "DTR" or :dtr
198
+ # @return [Boolean] true when identifier has associated typed stage
199
+ def has_typed_stage?(typed_stage)
200
+ return self::TYPED_STAGES.key?(typed_stage) if typed_stage.is_a?(Symbol)
201
+
202
+ self::TYPED_STAGES.any? do |_, v|
203
+ if v[:abbr].is_a?(Hash)
204
+ v[:abbr].value?(typed_stage)
205
+ else
206
+ if v.key?(:legacy_abbr)
207
+ v[:legacy_abbr].include?(typed_stage) || v[:abbr] == typed_stage
208
+ else
209
+ v[:abbr] == typed_stage
210
+ end
211
+ end
212
+ end
213
+ end
214
+
154
215
  # Returns true when identifier's type match with provided parameters
155
216
  def type_match?(parameters)
156
- has_type?(parameters[:type])
217
+ parameters[:type] ? has_type?(parameters[:type]) : has_typed_stage?(parameters[:stage])
157
218
  end
158
219
  end
159
220
  end
@@ -1,5 +1,5 @@
1
1
  module Pubid
2
2
  module Core
3
- VERSION = "1.8.0".freeze
3
+ VERSION = "1.8.2".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.8.0
4
+ version: 1.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-03-22 00:00:00.000000000 Z
11
+ date: 2023-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake