pubid-iso 0.1.4 → 0.1.7
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/iso/amendment.rb +14 -0
- data/lib/pubid/iso/corrigendum.rb +14 -0
- data/lib/pubid/iso/identifier/french.rb +6 -14
- data/lib/pubid/iso/identifier/russian.rb +8 -0
- data/lib/pubid/iso/identifier.rb +28 -29
- data/lib/pubid/iso/supplement.rb +37 -0
- data/lib/pubid/iso/urn.rb +7 -17
- data/lib/pubid/iso/version.rb +1 -1
- data/lib/pubid/iso.rb +3 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 821262e1b683c07f484d9102195fe832fd1eb00fb3a6b23f713893f081a527f3
|
4
|
+
data.tar.gz: 105da964ba57e1c703bf4d77f485a3fc981660b218b4bf019376f937758a4f6c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e5fb2bdd1b05f02c788f4b546fa0f6b2054ef0ab01dd4b59961e8c92ccd063a95b655d04969062c2d3674ab7511058b22e7882e586c9ae00e666065592cc5d3
|
7
|
+
data.tar.gz: d5ded0494dbf495d81da9a98b25d72ed90303a343159bbe4d30315d857ae19e0824437f0ebbb0e47371c6f89565b39ca9d4f08bdc5b4bc8358656f7a56b54795
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Pubid::Iso
|
2
|
+
class Amendment < Supplement
|
3
|
+
|
4
|
+
def render_pubid
|
5
|
+
stage = render_pubid_stage
|
6
|
+
stage += " " unless stage.size == 0
|
7
|
+
"/#{stage}Amd #{render_pubid_number}"
|
8
|
+
end
|
9
|
+
|
10
|
+
def render_urn
|
11
|
+
"#{render_urn_stage}:amd#{render_urn_number}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Pubid::Iso
|
2
|
+
class Corrigendum < Supplement
|
3
|
+
|
4
|
+
def render_pubid
|
5
|
+
stage = render_pubid_stage
|
6
|
+
stage += " " unless stage.size == 0
|
7
|
+
"/#{stage}Cor #{render_pubid_number}"
|
8
|
+
end
|
9
|
+
|
10
|
+
def render_urn
|
11
|
+
"#{render_urn_stage}:cor#{render_urn_number}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -1,5 +1,9 @@
|
|
1
1
|
module Pubid::Iso
|
2
2
|
class French < Identifier
|
3
|
+
def initialize(**opts)
|
4
|
+
opts.each { |key, value| send("#{key}=", value) }
|
5
|
+
end
|
6
|
+
|
3
7
|
def identifier(with_date, with_language_code)
|
4
8
|
if @type == "Guide"
|
5
9
|
"Guide #{originator}#{stage} #{number}#{part}#{iteration}"\
|
@@ -13,20 +17,8 @@ module Pubid::Iso
|
|
13
17
|
super.map { |copublisher| copublisher.sub("IEC", "CEI") }
|
14
18
|
end
|
15
19
|
|
16
|
-
def
|
17
|
-
|
18
|
-
"Amd.#{@amendment_version}:#{@amendment_number}"
|
19
|
-
else
|
20
|
-
"Amd.#{@amendment_version}"
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def corrigendum
|
25
|
-
if @corrigendum_number
|
26
|
-
"Cor.#{@corrigendum_version}:#{@corrigendum_number}"
|
27
|
-
else
|
28
|
-
"Cor.#{@corrigendum_version}"
|
29
|
-
end
|
20
|
+
def supplements
|
21
|
+
super.gsub(" ", ".")
|
30
22
|
end
|
31
23
|
end
|
32
24
|
end
|
@@ -17,6 +17,10 @@ module Pubid::Iso
|
|
17
17
|
"ISP" => "ИСП",
|
18
18
|
}.freeze
|
19
19
|
|
20
|
+
def initialize(**opts)
|
21
|
+
opts.each { |key, value| send("#{key}=", value) }
|
22
|
+
end
|
23
|
+
|
20
24
|
def identifier(with_date, with_language_code)
|
21
25
|
if @type == "Guide"
|
22
26
|
"Руководство #{originator}#{stage} #{number}#{part}#{iteration}"\
|
@@ -37,5 +41,9 @@ module Pubid::Iso
|
|
37
41
|
def stage
|
38
42
|
"#{(@copublisher && ' ') || '/'}#{STAGE[@stage]}" if @stage
|
39
43
|
end
|
44
|
+
|
45
|
+
def supplements
|
46
|
+
super.gsub(" ", ".")
|
47
|
+
end
|
40
48
|
end
|
41
49
|
end
|
data/lib/pubid/iso/identifier.rb
CHANGED
@@ -5,7 +5,8 @@ module Pubid::Iso
|
|
5
5
|
:amendment, :amendment_version, :amendment_number,
|
6
6
|
:corrigendum, :corrigendum_version, :corrigendum_number,
|
7
7
|
:amendment_stage, :corrigendum_stage, :joint_document,
|
8
|
-
:tctype, :sctype, :wgtype, :tcnumber, :scnumber, :wgnumber
|
8
|
+
:tctype, :sctype, :wgtype, :tcnumber, :scnumber, :wgnumber,
|
9
|
+
:urn_stage
|
9
10
|
|
10
11
|
LANGUAGES = {
|
11
12
|
"ru" => "R",
|
@@ -14,7 +15,21 @@ module Pubid::Iso
|
|
14
15
|
"ar" => "A",
|
15
16
|
}.freeze
|
16
17
|
|
17
|
-
def initialize(
|
18
|
+
def initialize(amendment: nil, amendment_number: nil, amendment_version: nil,
|
19
|
+
amendment_stage: nil,
|
20
|
+
corrigendum: nil, corrigendum_number: nil, corrigendum_version: nil,
|
21
|
+
corrigendum_stage: nil, **opts)
|
22
|
+
if amendment_version
|
23
|
+
@amendment = Amendment.new(number: amendment_number,
|
24
|
+
version: amendment_version,
|
25
|
+
stage: amendment_stage)
|
26
|
+
end
|
27
|
+
if corrigendum_version
|
28
|
+
@corrigendum = Corrigendum.new(number: corrigendum_number,
|
29
|
+
version: corrigendum_version,
|
30
|
+
stage: corrigendum_stage)
|
31
|
+
end
|
32
|
+
|
18
33
|
opts.each { |key, value| send("#{key}=", value.is_a?(Array) && value || value.to_s) }
|
19
34
|
end
|
20
35
|
|
@@ -26,6 +41,15 @@ module Pubid::Iso
|
|
26
41
|
Urn.new(**get_params)
|
27
42
|
end
|
28
43
|
|
44
|
+
def self.parse_from_title(title)
|
45
|
+
title.split.reverse.inject(title) do |acc, part|
|
46
|
+
return parse(acc)
|
47
|
+
rescue Pubid::Iso::Errors::ParseError
|
48
|
+
# delete parts from the title until it's parseable
|
49
|
+
acc.reverse.sub(part.reverse, "").reverse.strip
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
29
53
|
def self.parse(code_or_params)
|
30
54
|
params = code_or_params.is_a?(String) ? Parser.new.parse(code_or_params) : code_or_params
|
31
55
|
# Parslet returns an array when match any copublisher
|
@@ -146,35 +170,10 @@ module Pubid::Iso
|
|
146
170
|
".#{@iteration}" if @iteration
|
147
171
|
end
|
148
172
|
|
149
|
-
def amendment
|
150
|
-
if @amendment_number
|
151
|
-
"Amd #{@amendment_version}:#{@amendment_number}"
|
152
|
-
else
|
153
|
-
"Amd #{@amendment_version}"
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
157
|
-
def corrigendum
|
158
|
-
if @corrigendum_number
|
159
|
-
"Cor #{@corrigendum_version}:#{@corrigendum_number}"
|
160
|
-
else
|
161
|
-
"Cor #{@corrigendum_version}"
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
173
|
def supplements
|
166
|
-
result = ""
|
167
|
-
if @amendment_version
|
168
|
-
result += (@amendment_stage && "/#{@amendment_stage} ") || "/"
|
169
|
-
result += amendment
|
170
|
-
end
|
171
|
-
|
172
|
-
if @corrigendum_version
|
173
|
-
result += (@corrigendum_stage && "/#{@corrigendum_stage} ") || "/"
|
174
|
-
result += corrigendum
|
175
|
-
end
|
174
|
+
result = @amendment&.version && @amendment.render_pubid || ""
|
176
175
|
|
177
|
-
result
|
176
|
+
result + (@corrigendum&.version && @corrigendum.render_pubid || "")
|
178
177
|
end
|
179
178
|
|
180
179
|
def language(with_language_code = :iso)
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Pubid::Iso
|
2
|
+
class Supplement
|
3
|
+
attr_accessor :version, :number, :stage
|
4
|
+
|
5
|
+
def initialize(version:, number:, stage: nil)
|
6
|
+
@version, @number, @stage = version, number, stage
|
7
|
+
end
|
8
|
+
|
9
|
+
def ==(other)
|
10
|
+
other.version == version && (number.nil? || other.number == number) && (stage.nil? || other.stage == stage)
|
11
|
+
end
|
12
|
+
|
13
|
+
def render_pubid_stage
|
14
|
+
((@stage && @stage) || "")
|
15
|
+
end
|
16
|
+
|
17
|
+
def render_pubid_number
|
18
|
+
if @number
|
19
|
+
"#{@version}:#{@number}"
|
20
|
+
else
|
21
|
+
"#{@version}"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def render_urn_stage
|
26
|
+
((@stage && ":stage-#{sprintf('%05.2f', Urn::STAGES[@stage.to_sym])}") || "")
|
27
|
+
end
|
28
|
+
|
29
|
+
def render_urn_number
|
30
|
+
if @number
|
31
|
+
":#{@number}:v#{@version}"
|
32
|
+
else
|
33
|
+
":#{@version}:v1"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/lib/pubid/iso/urn.rb
CHANGED
@@ -54,13 +54,15 @@ module Pubid::Iso
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def render_stage(stage)
|
57
|
+
return ":stage-#{sprintf('%05.2f', stage)}#{iteration}" if stage.is_a?(Float)
|
58
|
+
|
57
59
|
":stage-#{sprintf('%05.2f', STAGES[stage.to_sym])}#{iteration}"
|
58
60
|
end
|
59
61
|
|
60
62
|
def stage
|
61
|
-
return render_stage(@
|
63
|
+
return render_stage(@urn_stage) if @urn_stage
|
62
64
|
|
63
|
-
return render_stage(@
|
65
|
+
return render_stage(@stage) if @stage
|
64
66
|
|
65
67
|
render_stage(@corrigendum_stage) if @corrigendum_stage
|
66
68
|
end
|
@@ -96,21 +98,9 @@ module Pubid::Iso
|
|
96
98
|
end
|
97
99
|
|
98
100
|
def supplement
|
99
|
-
result = ""
|
100
|
-
|
101
|
-
|
102
|
-
":amd:#{@amendment_number}:v#{@amendment_version}"
|
103
|
-
else
|
104
|
-
":amd:#{@amendment_version}:v1"
|
105
|
-
end
|
106
|
-
end
|
107
|
-
if @corrigendum
|
108
|
-
result += if @corrigendum_number
|
109
|
-
":cor:#{@corrigendum_number}:v#{@corrigendum_version}"
|
110
|
-
else
|
111
|
-
":cor:#{@corrigendum_version}:v1"
|
112
|
-
end
|
113
|
-
end
|
101
|
+
result = @amendment&.render_urn || ""
|
102
|
+
|
103
|
+
result += @corrigendum&.render_urn || ""
|
114
104
|
|
115
105
|
result
|
116
106
|
end
|
data/lib/pubid/iso/version.rb
CHANGED
data/lib/pubid/iso.rb
CHANGED
@@ -11,6 +11,9 @@ end
|
|
11
11
|
require_relative "iso/errors"
|
12
12
|
require_relative "iso/parser"
|
13
13
|
require_relative "iso/transformer"
|
14
|
+
require_relative "iso/supplement"
|
15
|
+
require_relative "iso/amendment"
|
16
|
+
require_relative "iso/corrigendum"
|
14
17
|
require_relative "iso/identifier"
|
15
18
|
require_relative "iso/identifier/french"
|
16
19
|
require_relative "iso/identifier/russian"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pubid-iso
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-06-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -107,11 +107,14 @@ files:
|
|
107
107
|
- README.adoc
|
108
108
|
- lib/pubid-iso.rb
|
109
109
|
- lib/pubid/iso.rb
|
110
|
+
- lib/pubid/iso/amendment.rb
|
111
|
+
- lib/pubid/iso/corrigendum.rb
|
110
112
|
- lib/pubid/iso/errors.rb
|
111
113
|
- lib/pubid/iso/identifier.rb
|
112
114
|
- lib/pubid/iso/identifier/french.rb
|
113
115
|
- lib/pubid/iso/identifier/russian.rb
|
114
116
|
- lib/pubid/iso/parser.rb
|
117
|
+
- lib/pubid/iso/supplement.rb
|
115
118
|
- lib/pubid/iso/transformer.rb
|
116
119
|
- lib/pubid/iso/urn.rb
|
117
120
|
- lib/pubid/iso/version.rb
|