pubid-iec 0.2.5 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/pubid/iec/configuration.rb +9 -0
- data/lib/pubid/iec/errors.rb +2 -1
- data/lib/pubid/iec/identifier/amendment.rb +19 -1
- data/lib/pubid/iec/identifier/base.rb +43 -23
- data/lib/pubid/iec/identifier/component_specification.rb +1 -1
- data/lib/pubid/iec/identifier/conformity_assessment.rb +1 -1
- data/lib/pubid/iec/identifier/corrigendum.rb +19 -1
- data/lib/pubid/iec/identifier/guide.rb +14 -1
- data/lib/pubid/iec/identifier/international_standard.rb +5 -1
- data/lib/pubid/iec/identifier/interpretation_sheet.rb +10 -2
- data/lib/pubid/iec/identifier/operational_document.rb +1 -1
- data/lib/pubid/iec/identifier/publicly_available_specification.rb +9 -1
- data/lib/pubid/iec/identifier/societal_technology_trend_report.rb +1 -1
- data/lib/pubid/iec/identifier/systems_reference_document.rb +1 -1
- data/lib/pubid/iec/identifier/technical_report.rb +10 -2
- data/lib/pubid/iec/identifier/technical_specification.rb +10 -2
- data/lib/pubid/iec/identifier/technology_report.rb +1 -1
- data/lib/pubid/iec/identifier/test_report_form.rb +1 -1
- data/lib/pubid/iec/identifier/white_paper.rb +1 -1
- data/lib/pubid/iec/identifier/working_document.rb +7 -3
- data/lib/pubid/iec/identifier.rb +4 -0
- data/lib/pubid/iec/parser.rb +1 -1
- data/lib/pubid/iec/renderer/interpretation_sheet.rb +4 -4
- data/lib/pubid/iec/renderer/pubid.rb +3 -3
- data/lib/pubid/iec/renderer/urn.rb +1 -1
- data/lib/pubid/iec/stage.rb +27 -3
- data/lib/pubid/iec/trf_identifier.rb +1 -1
- data/lib/pubid/iec/typed_project_stage.rb +36 -0
- data/lib/pubid/iec/version.rb +1 -1
- data/lib/pubid/iec.rb +3 -1
- data/stages.yaml +73 -14
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3e57bcfb0e8b8e333e16b5fae2f8103cc7fb3c755717f55afd485f5d100931e4
|
4
|
+
data.tar.gz: 57af222f9db3651ec847af8b5b21ec0715eeadf0883df955de4cc69ccf2b7b72
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bcb6be5089d7225c204df7209102cb429e13eebaf4782097edfc664a588e536d19dfdbd4d3f8bc2e27e8456772c996c7fb5dd1ceb59f47e1400f7fd0627c55ca
|
7
|
+
data.tar.gz: 838eb82be8b4385f99f028e87fcf301b7f128901369309adaffaee00ec245e36132581111f658b60e66aae6a3b448ccd3571d7cbcb8f3f447895823aff836d1b
|
data/lib/pubid/iec/errors.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
module Pubid::Iec
|
2
2
|
module Errors
|
3
3
|
class StageParseError < StandardError; end
|
4
|
-
class StageInvalidError < StandardError; end
|
5
4
|
class ParseTypeError < StandardError; end
|
6
5
|
class WrongTypeError < StandardError; end
|
6
|
+
class ProjectStageInvalidError < StandardError; end
|
7
|
+
class ProjectStageConversionError < StandardError; end
|
7
8
|
end
|
8
9
|
end
|
@@ -6,6 +6,24 @@ module Pubid::Iec
|
|
6
6
|
class Amendment < Supplement
|
7
7
|
def_delegators 'Pubid::Iec::Identifier::Amendment', :type
|
8
8
|
|
9
|
+
TYPED_STAGES = {
|
10
|
+
cdam: {
|
11
|
+
abbr: "CDAM",
|
12
|
+
name: "Committee Draft Ammendment",
|
13
|
+
harmonized_stages: %w[30.00 30.20 30.60 30.92 30.98 30.99],
|
14
|
+
},
|
15
|
+
dcor: {
|
16
|
+
abbr: "DAM",
|
17
|
+
name: "Draft Ammendment",
|
18
|
+
harmonized_stages: %w[40.00 40.20 40.60 40.92 40.98 40.99],
|
19
|
+
},
|
20
|
+
fdcor: {
|
21
|
+
abbr: "FDAM",
|
22
|
+
name: "Final Draft Ammendment",
|
23
|
+
harmonized_stages: %w[50.00 50.20 50.60 50.92 50.98 50.99],
|
24
|
+
}
|
25
|
+
}.freeze
|
26
|
+
|
9
27
|
def self.type
|
10
28
|
{ key: :amd, title: "Amendment" }
|
11
29
|
end
|
@@ -15,7 +33,7 @@ module Pubid::Iec
|
|
15
33
|
end
|
16
34
|
|
17
35
|
def urn
|
18
|
-
Renderer::UrnAmendment.new(
|
36
|
+
Renderer::UrnAmendment.new(renderer_data).render
|
19
37
|
end
|
20
38
|
end
|
21
39
|
end
|
@@ -9,32 +9,15 @@ module Pubid::Iec
|
|
9
9
|
|
10
10
|
extend Forwardable
|
11
11
|
|
12
|
+
PROJECT_STAGES = {}.freeze
|
13
|
+
|
12
14
|
# @param stage [String] stage eg. "PWI", "PNW"
|
13
|
-
def initialize(publisher: "IEC",
|
15
|
+
def initialize(publisher: "IEC", vap: nil, database: nil,
|
14
16
|
fragment: nil, version: nil, decision_sheet: nil,
|
15
17
|
conjuction_part: nil, part_version: nil, trf_publisher: nil,
|
16
18
|
trf_series: nil, trf_version: nil, test_type: nil,
|
17
19
|
edition: nil, type: nil, month: nil, day: nil,
|
18
|
-
language: nil, **args)
|
19
|
-
# @stage = stage.to_s if stage
|
20
|
-
# @stage = Stage.parse(stage) if stage
|
21
|
-
|
22
|
-
if stage
|
23
|
-
if stage.is_a?(Stage)
|
24
|
-
@stage = stage
|
25
|
-
@typed_stage = resolve_typed_stage(@stage.harmonized_code) unless @stage.abbr
|
26
|
-
elsif self.class.has_typed_stage?(stage)
|
27
|
-
@typed_stage, @stage = self.class.find_typed_stage(stage)
|
28
|
-
else
|
29
|
-
@stage = Identifier.parse_stage(stage)
|
30
|
-
# resolve typed stage when harmonized code provided as stage
|
31
|
-
# or stage abbreviation was not resolved
|
32
|
-
if /\A[\d.]+\z/.match?(stage) || @stage.empty_abbr?(with_prf: true)
|
33
|
-
@typed_stage = self.class.resolve_typed_stage(@stage.harmonized_code)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
@typed_stage = self.class::TYPED_STAGES[@typed_stage][:abbr] if @typed_stage
|
37
|
-
end
|
20
|
+
language: nil, stage: nil, **args)
|
38
21
|
|
39
22
|
@vap = vap.to_s if vap
|
40
23
|
@database = database if database
|
@@ -52,18 +35,47 @@ module Pubid::Iec
|
|
52
35
|
@day = day if day
|
53
36
|
@language = language if language
|
54
37
|
|
38
|
+
if stage
|
39
|
+
@stage = self.class.has_project_stage?(stage) ? self.class.resolve_project_stage(stage) : resolve_stage(stage)
|
40
|
+
end
|
41
|
+
|
55
42
|
super(**args.merge(publisher: publisher))
|
56
43
|
end
|
57
44
|
|
58
45
|
def urn
|
59
|
-
Renderer::Urn.new(
|
46
|
+
Renderer::Urn.new(renderer_data).render
|
47
|
+
end
|
48
|
+
|
49
|
+
def lookup_typed_stage(lookup_code)
|
50
|
+
self.class::TYPED_STAGES.each do |abbr, stage|
|
51
|
+
if stage[:harmonized_stages] & lookup_code == lookup_code
|
52
|
+
return Identifier.build_typed_stage(abbr: abbr, harmonized_code: lookup_code)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
nil
|
57
|
+
end
|
58
|
+
|
59
|
+
def renderer_data
|
60
|
+
values = to_h(deep: false)
|
61
|
+
|
62
|
+
# convert project stage to typed stage
|
63
|
+
if values.key?(:stage) && values[:stage].is_a?(TypedProjectStage)
|
64
|
+
values[:stage] = lookup_typed_stage(values[:stage].harmonized_code.stages) ||
|
65
|
+
resolve_stage(values[:stage].harmonized_code.stages.first)
|
66
|
+
end
|
67
|
+
values
|
60
68
|
end
|
61
69
|
|
62
70
|
def to_s(with_edition_month_date: false)
|
63
|
-
self.class.get_renderer_class.new(
|
71
|
+
self.class.get_renderer_class.new(renderer_data).render(with_edition_month_date: with_edition_month_date)
|
64
72
|
end
|
65
73
|
|
66
74
|
class << self
|
75
|
+
def has_project_stage?(project_stage)
|
76
|
+
self::PROJECT_STAGES.any? { |k, v| v[:abbr] == project_stage }
|
77
|
+
end
|
78
|
+
|
67
79
|
def has_type?(type)
|
68
80
|
return type == self.type[:key] if type.is_a?(Symbol)
|
69
81
|
|
@@ -74,6 +86,14 @@ module Pubid::Iec
|
|
74
86
|
end
|
75
87
|
end
|
76
88
|
|
89
|
+
def resolve_project_stage(project_stage)
|
90
|
+
stage = self::PROJECT_STAGES.find do |k, v|
|
91
|
+
v[:abbr] == project_stage
|
92
|
+
end
|
93
|
+
|
94
|
+
Identifier.build_project_stage(abbr: stage[1][:abbr], harmonized_code: stage[1][:harmonized_stages])
|
95
|
+
end
|
96
|
+
|
77
97
|
def transform_hash(params)
|
78
98
|
params.map do |k, v|
|
79
99
|
get_transformer_class.new.apply(k => v.is_a?(Hash) ? transform_hash(v) : v)
|
@@ -6,6 +6,24 @@ module Pubid::Iec
|
|
6
6
|
class Corrigendum < Supplement
|
7
7
|
def_delegators 'Pubid::Iec::Identifier::Corrigendum', :type
|
8
8
|
|
9
|
+
TYPED_STAGES = {
|
10
|
+
cdcor: {
|
11
|
+
abbr: "CDCor",
|
12
|
+
name: "Committee Draft Corrigendum",
|
13
|
+
harmonized_stages: %w[30.00 30.20 30.60 30.92 30.98 30.99],
|
14
|
+
},
|
15
|
+
dcor: {
|
16
|
+
abbr: "DCOR",
|
17
|
+
name: "Draft Corrigendum",
|
18
|
+
harmonized_stages: %w[40.00 40.20 40.60 40.92 40.98 40.99],
|
19
|
+
},
|
20
|
+
fdcor: {
|
21
|
+
abbr: "FDCOR",
|
22
|
+
name: "Final Draft Corrigendum",
|
23
|
+
harmonized_stages: %w[50.00 50.20 50.60 50.92 50.98 50.99],
|
24
|
+
}
|
25
|
+
}.freeze
|
26
|
+
|
9
27
|
def self.type
|
10
28
|
{ key: :cor, title: "Corrigendum" }
|
11
29
|
end
|
@@ -15,7 +33,7 @@ module Pubid::Iec
|
|
15
33
|
end
|
16
34
|
|
17
35
|
def urn
|
18
|
-
Renderer::UrnCorrigendum.new(
|
36
|
+
Renderer::UrnCorrigendum.new(renderer_data).render
|
19
37
|
end
|
20
38
|
end
|
21
39
|
end
|
@@ -3,11 +3,24 @@ module Pubid::Iec
|
|
3
3
|
class Guide < Base
|
4
4
|
def_delegators 'Pubid::Iec::Identifier::Guide', :type
|
5
5
|
|
6
|
+
TYPED_STAGES = {
|
7
|
+
dguide: {
|
8
|
+
abbr: "DGuide",
|
9
|
+
name: "Draft Guide",
|
10
|
+
harmonized_stages: %w[40.00 40.20 40.60 40.92 40.98 40.99],
|
11
|
+
},
|
12
|
+
fdguide: {
|
13
|
+
abbr: "FDGuide",
|
14
|
+
name: "Final Draft Guide",
|
15
|
+
harmonized_stages: %w[50.00 50.20 50.60 50.92 50.98 50.99],
|
16
|
+
}
|
17
|
+
}.freeze
|
18
|
+
|
6
19
|
def self.type
|
7
20
|
{ key: :guide, title: "Guide", short: %w[Guide GUIDE] }
|
8
21
|
end
|
9
22
|
|
10
|
-
def
|
23
|
+
def to_h(deep: false)
|
11
24
|
super.merge(type: "Guide")
|
12
25
|
end
|
13
26
|
end
|
@@ -4,6 +4,10 @@ module Pubid::Iec
|
|
4
4
|
def_delegators 'Pubid::Iec::Identifier::InternationalStandard', :type
|
5
5
|
|
6
6
|
TYPED_STAGES = {
|
7
|
+
|
8
|
+
}.freeze
|
9
|
+
|
10
|
+
PROJECT_STAGES = {
|
7
11
|
afdis: {
|
8
12
|
abbr: "AFDIS",
|
9
13
|
name: "Approved for FDIS",
|
@@ -62,7 +66,7 @@ module Pubid::Iec
|
|
62
66
|
}.freeze
|
63
67
|
|
64
68
|
def self.type
|
65
|
-
{ key: :is, title: "International Standard", short:
|
69
|
+
{ key: :is, title: "International Standard", short: nil }
|
66
70
|
end
|
67
71
|
end
|
68
72
|
end
|
@@ -7,8 +7,16 @@ module Pubid::Iec
|
|
7
7
|
cdish: {
|
8
8
|
abbr: "CDISH",
|
9
9
|
name: "Draft circulated as DISH",
|
10
|
-
harmonized_stages: %w[
|
10
|
+
harmonized_stages: %w[30.00 30.20 30.60 30.92 30.98 30.99],
|
11
11
|
},
|
12
|
+
dish: {
|
13
|
+
abbr: "DISH",
|
14
|
+
name: "Draft Interpretation Sheet",
|
15
|
+
harmonized_stages: %w[50.00 50.20 50.60 50.92 50.98 50.99],
|
16
|
+
}
|
17
|
+
}.freeze
|
18
|
+
|
19
|
+
PROJECT_STAGES = {
|
12
20
|
decdish: {
|
13
21
|
abbr: "DECDISH",
|
14
22
|
name: "DISH at editing check",
|
@@ -37,7 +45,7 @@ module Pubid::Iec
|
|
37
45
|
end
|
38
46
|
|
39
47
|
def self.type
|
40
|
-
{ key: :ish, title: "
|
48
|
+
{ key: :ish, title: "Interpretation Sheet", short: "ISH" }
|
41
49
|
end
|
42
50
|
|
43
51
|
def self.get_renderer_class
|
@@ -9,6 +9,14 @@ module Pubid::Iec
|
|
9
9
|
name: "Draft circulated as DPAS",
|
10
10
|
harmonized_stages: %w[50.20],
|
11
11
|
},
|
12
|
+
dpas: {
|
13
|
+
abbr: "DPAS",
|
14
|
+
name: "Draft Publicly Available Specification",
|
15
|
+
harmonized_stages: %w[50.00 50.20 50.60 50.92 50.98 50.99],
|
16
|
+
}
|
17
|
+
}.freeze
|
18
|
+
|
19
|
+
PROJECT_STAGES = {
|
12
20
|
PRVDPAS: {
|
13
21
|
abbr: "PRVDPAS",
|
14
22
|
name: "Preparation of RVDPAS",
|
@@ -20,7 +28,7 @@ module Pubid::Iec
|
|
20
28
|
{ key: :pas, title: "Publicly Available Specification", short: "PAS" }
|
21
29
|
end
|
22
30
|
|
23
|
-
def
|
31
|
+
def to_h(deep: false)
|
24
32
|
super.merge(type: "PAS")
|
25
33
|
end
|
26
34
|
end
|
@@ -3,7 +3,7 @@ module Pubid::Iec
|
|
3
3
|
class TechnicalReport < Base
|
4
4
|
def_delegators 'Pubid::Iec::Identifier::TechnicalReport', :type
|
5
5
|
|
6
|
-
|
6
|
+
PROJECT_STAGES = {
|
7
7
|
adtr: {
|
8
8
|
abbr: "ADTR",
|
9
9
|
name: "Approved for DTR",
|
@@ -36,11 +36,19 @@ module Pubid::Iec
|
|
36
36
|
}
|
37
37
|
}.freeze
|
38
38
|
|
39
|
+
TYPED_STAGES = {
|
40
|
+
dtr: {
|
41
|
+
abbr: "DTR",
|
42
|
+
name: "Draft Technical Report",
|
43
|
+
harmonized_stages: %w[50.00 50.20 50.60 50.92 50.98 50.99],
|
44
|
+
}
|
45
|
+
}.freeze
|
46
|
+
|
39
47
|
def self.type
|
40
48
|
{ key: :tr, title: "Technical Report", short: "TR" }
|
41
49
|
end
|
42
50
|
|
43
|
-
def
|
51
|
+
def to_h(deep: false)
|
44
52
|
super.merge(type: "TR")
|
45
53
|
end
|
46
54
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Pubid::Iec
|
2
2
|
module Identifier
|
3
3
|
class TechnicalSpecification < Base
|
4
|
-
|
4
|
+
PROJECT_STAGES = {
|
5
5
|
adts: {
|
6
6
|
abbr: "ADTS",
|
7
7
|
name: "Approved for DTS",
|
@@ -34,13 +34,21 @@ module Pubid::Iec
|
|
34
34
|
},
|
35
35
|
}.freeze
|
36
36
|
|
37
|
+
TYPED_STAGES = {
|
38
|
+
dts: {
|
39
|
+
abbr: "DTS",
|
40
|
+
name: "Draft Technical Specification",
|
41
|
+
harmonized_stages: %w[50.00 50.20 50.60 50.92 50.98 50.99],
|
42
|
+
}
|
43
|
+
}.freeze
|
44
|
+
|
37
45
|
def_delegators 'Pubid::Iec::Identifier::TechnicalSpecification', :type
|
38
46
|
|
39
47
|
def self.type
|
40
48
|
{ key: :ts, title: "Technical Specification", short: "TS" }
|
41
49
|
end
|
42
50
|
|
43
|
-
def
|
51
|
+
def to_h(deep: true)
|
44
52
|
super.merge(type: "TS")
|
45
53
|
end
|
46
54
|
end
|
@@ -15,14 +15,18 @@ module Pubid::Iec
|
|
15
15
|
|
16
16
|
attr_accessor :technical_committee
|
17
17
|
|
18
|
-
def initialize(publisher: "IEC", technical_committee: nil, **args)
|
18
|
+
def initialize(publisher: "IEC", technical_committee: nil, stage: nil, **args)
|
19
19
|
super(**args.merge(publisher: publisher))
|
20
|
-
|
20
|
+
@stage = stage
|
21
21
|
@technical_committee = technical_committee
|
22
22
|
end
|
23
23
|
|
24
24
|
def urn
|
25
|
-
Renderer::WorkingDocumentUrn.new(
|
25
|
+
Renderer::WorkingDocumentUrn.new(renderer_data).render
|
26
|
+
end
|
27
|
+
|
28
|
+
def renderer_data
|
29
|
+
to_h(deep: false)
|
26
30
|
end
|
27
31
|
|
28
32
|
class << self
|
data/lib/pubid/iec/identifier.rb
CHANGED
data/lib/pubid/iec/parser.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
module Pubid::Iec::Renderer
|
2
2
|
class InterpretationSheet < Pubid
|
3
3
|
def render_identifier(params)
|
4
|
-
type_prefix = params[:
|
4
|
+
type_prefix = params[:stage].nil? || params[:stage].to_s.empty? ? "ISH" : ""
|
5
5
|
|
6
|
-
"%{base}/%{
|
6
|
+
"%{base}/%{stage}#{type_prefix}%{number}%{year}" % params
|
7
7
|
end
|
8
8
|
|
9
|
-
def
|
10
|
-
|
9
|
+
def render_stage(stage, _opts, _params)
|
10
|
+
stage
|
11
11
|
end
|
12
12
|
|
13
13
|
def render_year(year, _opts, _params)
|
@@ -9,8 +9,8 @@ module Pubid::Iec::Renderer
|
|
9
9
|
" #{typed_stage}"
|
10
10
|
end
|
11
11
|
|
12
|
-
def render_type(type, _opts,
|
13
|
-
return if params[:
|
12
|
+
def render_type(type, _opts, params)
|
13
|
+
return if params[:stage].is_a?(::Pubid::Core::TypedStage)
|
14
14
|
|
15
15
|
" #{type}"
|
16
16
|
end
|
@@ -20,7 +20,7 @@ module Pubid::Iec::Renderer
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def render_stage(stage, _opts, params)
|
23
|
-
return if params[:typed_stage]
|
23
|
+
return if params[:typed_stage] || stage.abbr.nil?
|
24
24
|
|
25
25
|
" #{stage}"
|
26
26
|
end
|
data/lib/pubid/iec/stage.rb
CHANGED
@@ -1,12 +1,36 @@
|
|
1
1
|
module Pubid::Iec
|
2
2
|
class Stage < Pubid::Core::Stage
|
3
3
|
|
4
|
-
def
|
5
|
-
|
4
|
+
def initialize(config:, abbr: nil, harmonized_code: nil)
|
5
|
+
@config = config
|
6
|
+
@abbr = abbr&.to_s
|
7
|
+
|
8
|
+
if harmonized_code
|
9
|
+
@harmonized_code = if harmonized_code.is_a?(Pubid::Core::HarmonizedStageCode)
|
10
|
+
harmonized_code
|
11
|
+
else
|
12
|
+
Pubid::Core::HarmonizedStageCode.new(harmonized_code, config: config)
|
13
|
+
end
|
14
|
+
@abbr ||= lookup_abbr(@harmonized_code.stages)
|
15
|
+
end
|
16
|
+
|
17
|
+
if abbr
|
18
|
+
if config.stages["project_stages"].key?(abbr.to_s)
|
19
|
+
@harmonized_code ||= Pubid::Core::HarmonizedStageCode.new(config.stages["project_stages"][abbr.to_s], config: config)
|
20
|
+
# update abbreviation with identifier's stage
|
21
|
+
@abbr = lookup_abbr(@harmonized_code.stages)
|
22
|
+
else
|
23
|
+
raise Pubid::Core::Errors::StageInvalidError, "#{abbr} is not valid stage" unless config.stages["abbreviations"].key?(abbr.to_s)
|
6
24
|
|
25
|
+
@harmonized_code ||= Pubid::Core::HarmonizedStageCode.new(lookup_code(abbr), config: config)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def to_s(format = :short)
|
7
31
|
case format
|
8
32
|
when :short
|
9
|
-
abbr
|
33
|
+
empty_abbr? ? "" : abbr
|
10
34
|
else
|
11
35
|
@harmonized_code.to_s
|
12
36
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Pubid::Iec
|
2
|
+
class TypedProjectStage < Stage
|
3
|
+
attr_accessor :config, :abbr
|
4
|
+
|
5
|
+
# @param config [Configuration]
|
6
|
+
# @param abbr [Symbol] typed stage symbol, e.g. :dtr
|
7
|
+
# @param harmonized_code [String, Float, HarmonizedStageCode]
|
8
|
+
def initialize(config:, abbr:, harmonized_code: nil)
|
9
|
+
@config = config
|
10
|
+
@abbr = abbr
|
11
|
+
|
12
|
+
if harmonized_code
|
13
|
+
@harmonized_code = if harmonized_code.is_a?(Pubid::Core::HarmonizedStageCode)
|
14
|
+
harmonized_code
|
15
|
+
else
|
16
|
+
Pubid::Core::HarmonizedStageCode.new(harmonized_code, config: config)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
raise Errors::ProjectStageInvalidError, "#{abbr} is not valid project stage" unless config.typed_project_stages.any? { |k, v| v[:abbr] == abbr }
|
21
|
+
end
|
22
|
+
|
23
|
+
# Compares one stage with another
|
24
|
+
# should return false if
|
25
|
+
def ==(other)
|
26
|
+
return false unless other.is_a?(self.class)
|
27
|
+
|
28
|
+
other&.harmonized_code == harmonized_code
|
29
|
+
end
|
30
|
+
|
31
|
+
def to_s(_opts = nil)
|
32
|
+
abbr
|
33
|
+
# config.typed_project_stages[abbr][:abbr]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/pubid/iec/version.rb
CHANGED
data/lib/pubid/iec.rb
CHANGED
@@ -10,6 +10,7 @@ end
|
|
10
10
|
require "pubid-core"
|
11
11
|
require_relative "iec/errors"
|
12
12
|
require_relative "iec/stage"
|
13
|
+
require_relative "iec/typed_project_stage"
|
13
14
|
require_relative "iec/parser"
|
14
15
|
require_relative "iec/trf_parser"
|
15
16
|
require_relative "iec/renderer/pubid"
|
@@ -43,8 +44,9 @@ require_relative "iec/identifier/working_document"
|
|
43
44
|
require_relative "iec/trf_identifier"
|
44
45
|
require_relative "iec/identifier"
|
45
46
|
require_relative "iec/working_document"
|
47
|
+
require_relative "iec/configuration"
|
46
48
|
|
47
|
-
config = Pubid::
|
49
|
+
config = Pubid::Iec::Configuration.new
|
48
50
|
config.stages = YAML.load_file(File.join(File.dirname(__FILE__), "../../stages.yaml"))
|
49
51
|
config.stage_class = Pubid::Iec::Stage
|
50
52
|
config.default_type = Pubid::Iec::Identifier::InternationalStandard
|
data/stages.yaml
CHANGED
@@ -1,25 +1,76 @@
|
|
1
1
|
abbreviations:
|
2
|
+
PWI: ["00.00", "00.20", "00.60", "00.98", "00.99"]
|
3
|
+
PNW: ["10.20"]
|
4
|
+
NP: ["10.00", "10.60", "10.98", "10.92"]
|
5
|
+
ANW: ["10.99", "20.00"]
|
6
|
+
WD: [ "20.20", "20.60", "20.98", "20.99" ]
|
7
|
+
CD: ["30.00", "30.20", "30.60", "30.92", "30.98", "30.99"]
|
8
|
+
CDV: [ "40.00", "40.20", "40.60", "40.92", "40.98", "40.99" ]
|
9
|
+
|
10
|
+
project_stages:
|
2
11
|
ACD: "20.99"
|
3
|
-
ACDV: "30.99"
|
4
12
|
APUB: "50.99"
|
5
13
|
BPUB: "60.00"
|
6
|
-
CAN: "30.98"
|
7
|
-
CD: "30.20"
|
14
|
+
CAN: ["30.98", "50.98"]
|
8
15
|
CDM: "30.60"
|
9
16
|
DECPUB: "60.00"
|
10
|
-
DEL: "10.98"
|
17
|
+
DEL: ["10.98", "20.98"]
|
11
18
|
DELPUB: "99.60"
|
12
19
|
MERGED: "30.97"
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
|
21
|
+
names:
|
22
|
+
ACD: Approved for CD
|
23
|
+
ACDV: Approved for CDV
|
24
|
+
ADTR: Approved for DTR
|
25
|
+
ADTS: Approved for DTS
|
26
|
+
AFDIS: Approved for FDIS
|
27
|
+
APUB: Approved for publication
|
28
|
+
BPUB: Being published
|
29
|
+
CAN: Draft cancelled
|
30
|
+
CD: Draft circulated as CD
|
31
|
+
CDM: CD to be discussed at meeting
|
32
|
+
CCDV: Draft circulated as CDV
|
33
|
+
CDISH: Draft circulated as DISH
|
34
|
+
CDVM: Rejected CDV to be discussed at a meeting
|
35
|
+
CFDIS: Draft circulated as FDIS
|
36
|
+
CDPAS: Draft circulated as DPAS
|
37
|
+
CDTR: Draft circulated as DTR
|
38
|
+
CDTS: Draft circulated as DTS
|
39
|
+
DTRM: Rejected DTR to be discussed at meeting
|
40
|
+
DTSM: Rejected DTS to be discussed at meeting
|
41
|
+
DECDISH: DISH at editing check
|
42
|
+
DECFDIS: FDIS at editing check
|
43
|
+
DECPUB: Publication at editing check
|
44
|
+
DEL: Deleted/abandoned
|
45
|
+
DELPUB: Deleted publication
|
46
|
+
NCDV: CDV rejected
|
47
|
+
NDTR: DTR rejected
|
48
|
+
NDTS: DTS rejected
|
49
|
+
NFDIS: FDIS rejected
|
50
|
+
PCC: Preparation of CC
|
51
|
+
PNW: New work item proposal
|
52
|
+
PPUB: Publication issued
|
53
|
+
PRVC: Preparation of RVC
|
54
|
+
PRVDISH: Preparation of RVDISH
|
55
|
+
PRVD: Preparation of RVD
|
56
|
+
PRVDPAS: Preparation of RVDPAS
|
57
|
+
PRVDTR: Preparation of RVDTR
|
58
|
+
PRVDTS: Preparation of RVDTS
|
59
|
+
PRVN: Preparation of RVN
|
60
|
+
PWI: Preliminary work item
|
61
|
+
RDISH: DISH received and registered
|
62
|
+
RFDIS: FDIS received and registered
|
63
|
+
RPUB: Publication received and registered
|
64
|
+
TCDV: Translation of CDV
|
65
|
+
TDISH: Translation of DISH
|
66
|
+
TDTR: Translation of DTR
|
67
|
+
TDTS: Translation of DTS
|
68
|
+
TPUB: Translation of publication
|
69
|
+
WPUB: Publication withdrawn
|
70
|
+
WD: Working Draft
|
71
|
+
NP: New Proposal
|
72
|
+
CDV: Committee Draft for Vote
|
73
|
+
ANW: Registration of new project
|
23
74
|
|
24
75
|
codes_description:
|
25
76
|
"00.00": Proposal for new project received
|
@@ -68,3 +119,11 @@ codes_description:
|
|
68
119
|
"95.60": Close of voting
|
69
120
|
"95.92": Decision not to withdraw International Standard
|
70
121
|
"95.99": Withdrawal of International Standard
|
122
|
+
|
123
|
+
draft_codes: ["00.00", "00.20", "00.60", "00.99", "10.00", "10.20", "10.60", "10.92",
|
124
|
+
"10.99", "20.00", "20.20", "20.60", "20.99", "30.00",
|
125
|
+
"30.20", "30.60", "30.92", "30.99", "40.00", "40.20", "40.60", "40.92",
|
126
|
+
"40.93", "40.99", "50.00", "50.20", "50.60", "50.92", "50.99"]
|
127
|
+
|
128
|
+
canceled_codes: ["00.98", "10.98", "20.98", "30.98", "40.98", "50.98", "95.99"]
|
129
|
+
published_codes: ["60.00", "60.60", "90.20", "90.60", "90.92", "90.93", "90.99", "95.20", "95.60", "95.92"]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pubid-iec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.
|
61
|
+
version: 1.12.2
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 1.
|
68
|
+
version: 1.12.2
|
69
69
|
description: Library to generate, parse and manipulate IEC PubID.
|
70
70
|
email:
|
71
71
|
- open.source@ribose.com
|
@@ -79,6 +79,7 @@ files:
|
|
79
79
|
- README.adoc
|
80
80
|
- lib/pubid-iec.rb
|
81
81
|
- lib/pubid/iec.rb
|
82
|
+
- lib/pubid/iec/configuration.rb
|
82
83
|
- lib/pubid/iec/errors.rb
|
83
84
|
- lib/pubid/iec/identifier.rb
|
84
85
|
- lib/pubid/iec/identifier/amendment.rb
|
@@ -117,6 +118,7 @@ files:
|
|
117
118
|
- lib/pubid/iec/transformer.rb
|
118
119
|
- lib/pubid/iec/trf_identifier.rb
|
119
120
|
- lib/pubid/iec/trf_parser.rb
|
121
|
+
- lib/pubid/iec/typed_project_stage.rb
|
120
122
|
- lib/pubid/iec/version.rb
|
121
123
|
- lib/pubid/iec/working_document.rb
|
122
124
|
- lib/pubid/iec/working_document_parser.rb
|