pubid-core 1.8.1 → 1.8.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: 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