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 +4 -4
- data/lib/pubid/core/identifier/base.rb +62 -1
- data/lib/pubid/core/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b29194f7ce41cd26b68b0a47d068c0b5745e86250a922e471c9c615048b52ee3
|
4
|
+
data.tar.gz: 9fa6099b292239068050ac35090d54b70b5500797d343f51a8c33778ad2259a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/lib/pubid/core/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2023-06-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|