pubid-core 1.8.1 → 1.8.3

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: 680254d0251477c158eecf86c63cc3831c02298b259ce150e16805c96977434a
4
- data.tar.gz: 15a0b39436885a7ee7e94ecbc0ddeb11a55f79210c673ac44a1e48ef98ec225a
3
+ metadata.gz: 7fc62e629fdd3da242cf3e2f03c0e59d74ba3ad2305df1ab3156abefc4d907a2
4
+ data.tar.gz: 6eed583e02b27ef472714224c4531a90278bf1f18ac9ded069b2a7c62f09dc36
5
5
  SHA512:
6
- metadata.gz: fba7923832730ada52502a0dc7902ae9db4193cc6a9b5c6526f36e897743c2e16838201cdcb2961eb8ca1783c1ece9906087e64a46e63370209fbe1e7cd60871
7
- data.tar.gz: 56e5977116b1b1b61deaafb57f215e9b904eaf985f605af3e53d0b5b9a430c628219a5a52e539ab35ecf92f815b5c65a7469592ab6d8ab288df4da035491bbf0
6
+ metadata.gz: cbf792e4dabc21d7cd2524e82e2976d8833854a9379dc9c526f14d6087639117b0585c8c96aeff5abbf87453ebf8327218bc05658278479b169966a9ab84214c
7
+ data.tar.gz: b823f8be116ec916600c493f5a4b4c72d7c12f5c7e547ec05a1e87ca840f30f2496a47ec021f77c3b1ee5ab65186b20fe3355687882659c9e03ff9683068a741
@@ -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"
@@ -142,6 +144,10 @@ module Pubid::Core
142
144
  nil
143
145
  end
144
146
 
147
+ def get_identifier
148
+ Identifier
149
+ end
150
+
145
151
  def update_old_code(code)
146
152
  return code unless get_update_codes
147
153
 
@@ -151,9 +157,64 @@ module Pubid::Core
151
157
  code
152
158
  end
153
159
 
160
+ # @param typed_stage [String, Symbol] typed stage, eg. "DTR" or :dtr
161
+ # @return [Boolean] true when identifier has associated typed stage
162
+ def has_typed_stage?(typed_stage)
163
+ return self::TYPED_STAGES.key?(typed_stage) if typed_stage.is_a?(Symbol)
164
+
165
+ self::TYPED_STAGES.any? do |_, v|
166
+ if v[:abbr].is_a?(Hash)
167
+ v[:abbr].value?(typed_stage)
168
+ else
169
+ if v.key?(:legacy_abbr)
170
+ v[:legacy_abbr].include?(typed_stage) || v[:abbr] == typed_stage
171
+ else
172
+ v[:abbr] == typed_stage
173
+ end
174
+ end
175
+ end
176
+ end
177
+
154
178
  # Returns true when identifier's type match with provided parameters
155
179
  def type_match?(parameters)
156
- has_type?(parameters[:type])
180
+ parameters[:type] ? has_type?(parameters[:type]) : has_typed_stage?(parameters[:stage])
181
+ end
182
+
183
+ # @param typed_stage [String, Symbol] eg. "DTR" or :dtr
184
+ # @return [[Symbol, Stage]] typed stage and stage with assigned harmonized codes
185
+ def find_typed_stage(typed_stage)
186
+ if typed_stage.is_a?(Symbol)
187
+ return [typed_stage,
188
+ get_identifier.build_stage(
189
+ harmonized_code: get_identifier.build_harmonized_stage_code(self::TYPED_STAGES[typed_stage][:harmonized_stages])),
190
+ ]
191
+ end
192
+
193
+ typed_stage = self::TYPED_STAGES.find do |_, v|
194
+ if v[:abbr].is_a?(Hash)
195
+ v[:abbr].value?(typed_stage)
196
+ elsif v.key?(:legacy_abbr)
197
+ v[:legacy_abbr].include?(typed_stage) || v[:abbr] == typed_stage
198
+ else
199
+ v[:abbr] == typed_stage
200
+ end
201
+ end
202
+
203
+ [typed_stage.first,
204
+ get_identifier.build_stage(
205
+ harmonized_code: get_identifier.build_harmonized_stage_code(typed_stage[1][:harmonized_stages]))]
206
+ end
207
+
208
+ # Resolve typed stage using stage harmonized stage code
209
+ # @param harmonized_code [HarmonizedStageCode]
210
+ # @return [Symbol, nil] typed stage or nil
211
+ def resolve_typed_stage(harmonized_code)
212
+ self::TYPED_STAGES.each do |k, v|
213
+ if (v[:harmonized_stages] & harmonized_code.stages) == harmonized_code.stages
214
+ return k
215
+ end
216
+ end
217
+ nil
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.1".freeze
3
+ VERSION = "1.8.3".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.1
4
+ version: 1.8.3
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-06-23 00:00:00.000000000 Z
11
+ date: 2023-06-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake