pubid-core 1.8.1 → 1.8.2

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: b29194f7ce41cd26b68b0a47d068c0b5745e86250a922e471c9c615048b52ee3
4
+ data.tar.gz: 9fa6099b292239068050ac35090d54b70b5500797d343f51a8c33778ad2259a6
5
5
  SHA512:
6
- metadata.gz: fba7923832730ada52502a0dc7902ae9db4193cc6a9b5c6526f36e897743c2e16838201cdcb2961eb8ca1783c1ece9906087e64a46e63370209fbe1e7cd60871
7
- data.tar.gz: 56e5977116b1b1b61deaafb57f215e9b904eaf985f605af3e53d0b5b9a430c628219a5a52e539ab35ecf92f815b5c65a7469592ab6d8ab288df4da035491bbf0
6
+ metadata.gz: ff08b70ef0786f07120fd78d263b32a1c8b1147ca995445d95051d946c7ce80ca53390b669253e706c4cf8581fdaa52155d03c331559ea13d396bd83a5310731
7
+ data.tar.gz: f45e2fa4fb73cd3f1af6e66c0f13f13a055852a85d893eb23330a3f8c5a7dd45baa41cf3dbc4053c3faa45253e8146214c78ee73a293a91116163cba8eabf520
@@ -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.1".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.1
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-06-23 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