pubid-iec 0.2.5 → 0.3.0
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/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
|