pubid-iso 0.3.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.adoc +118 -39
- data/lib/pubid/iso/errors.rb +0 -3
- data/lib/pubid/iso/harmonized_stage_code.rb +1 -145
- data/lib/pubid/iso/identifier/amendment.rb +52 -0
- data/lib/pubid/iso/identifier/base.rb +365 -0
- data/lib/pubid/iso/identifier/corrigendum.rb +53 -0
- data/lib/pubid/iso/identifier/directives.rb +29 -0
- data/lib/pubid/iso/identifier/guide.rb +32 -0
- data/lib/pubid/iso/identifier/international_standard.rb +45 -0
- data/lib/pubid/iso/identifier/international_standardized_profile.rb +30 -0
- data/lib/pubid/iso/identifier/international_workshop_agreement.rb +25 -0
- data/lib/pubid/iso/identifier/publicly_available_specification.rb +30 -0
- data/lib/pubid/iso/identifier/recommendation.rb +19 -0
- data/lib/pubid/iso/identifier/supplement.rb +39 -0
- data/lib/pubid/iso/identifier/technical_committee.rb +19 -0
- data/lib/pubid/iso/identifier/technical_report.rb +30 -0
- data/lib/pubid/iso/identifier/technical_specification.rb +30 -0
- data/lib/pubid/iso/identifier/technology_trends_assessments.rb +30 -0
- data/lib/pubid/iso/identifier.rb +39 -264
- data/lib/pubid/iso/parser.rb +56 -20
- data/lib/pubid/iso/renderer/amendment.rb +7 -0
- data/lib/pubid/iso/renderer/base.rb +129 -98
- data/lib/pubid/iso/renderer/corrigendum.rb +7 -0
- data/lib/pubid/iso/renderer/dir.rb +5 -3
- data/lib/pubid/iso/renderer/guide.rb +19 -0
- data/lib/pubid/iso/renderer/international_standard.rb +11 -0
- data/lib/pubid/iso/renderer/international_standardized_profile.rb +13 -0
- data/lib/pubid/iso/renderer/international_workshop_agreement.rb +17 -0
- data/lib/pubid/iso/renderer/publicly_available_specification.rb +12 -0
- data/lib/pubid/iso/renderer/recommendation.rb +13 -0
- data/lib/pubid/iso/renderer/supplement.rb +63 -0
- data/lib/pubid/iso/renderer/technical_committee.rb +47 -0
- data/lib/pubid/iso/renderer/technical_report.rb +13 -0
- data/lib/pubid/iso/renderer/technical_specification.rb +13 -0
- data/lib/pubid/iso/renderer/technology_trends_assessments.rb +13 -0
- data/lib/pubid/iso/renderer/urn-amendment.rb +12 -0
- data/lib/pubid/iso/renderer/urn-corrigendum.rb +12 -0
- data/lib/pubid/iso/renderer/urn-dir.rb +11 -3
- data/lib/pubid/iso/renderer/urn-supplement.rb +31 -0
- data/lib/pubid/iso/renderer/urn-tc.rb +2 -0
- data/lib/pubid/iso/renderer/urn.rb +25 -13
- data/lib/pubid/iso/stage.rb +1 -99
- data/lib/pubid/iso/transformer.rb +88 -104
- data/lib/pubid/iso/type.rb +3 -1
- data/lib/pubid/iso/version.rb +1 -1
- data/lib/pubid/iso.rb +20 -14
- data/stages.yaml +93 -0
- data/update_codes.yaml +1 -0
- metadata +37 -11
- data/lib/pubid/iso/amendment.rb +0 -15
- data/lib/pubid/iso/corrigendum.rb +0 -31
- data/lib/pubid/iso/renderer/french.rb +0 -29
- data/lib/pubid/iso/renderer/russian.rb +0 -64
- data/lib/pubid/iso/renderer/tc.rb +0 -30
- data/lib/pubid/iso/supplement.rb +0 -56
- data/lib/pubid/iso/typed_stage.rb +0 -204
data/lib/pubid/iso/amendment.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
module Pubid::Iso
|
2
|
-
class Amendment < Supplement
|
3
|
-
# @param stage_format_long [Boolean] long or short format for stage rendering
|
4
|
-
# @param with_date [Boolean] include date
|
5
|
-
def render_pubid(stage_format_long = true, with_date = true)
|
6
|
-
pubid_number = render_pubid_number(with_date: with_date)
|
7
|
-
|
8
|
-
"/#{@typed_stage.to_s(stage_format_long)} #{pubid_number}"
|
9
|
-
end
|
10
|
-
|
11
|
-
def render_urn
|
12
|
-
"#{render_urn_stage}:amd#{render_urn_number}"
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
module Pubid::Iso
|
2
|
-
class Corrigendum < Supplement
|
3
|
-
def render_pubid(stage_format_long = true, with_date = true)
|
4
|
-
# stage = render_pubid_stage
|
5
|
-
pubid_number = render_pubid_number(with_date: with_date)
|
6
|
-
"/#{@typed_stage.to_s(stage_format_long)} #{pubid_number}"
|
7
|
-
# case stage.to_s
|
8
|
-
# when "DIS"
|
9
|
-
# if stage_format_long
|
10
|
-
# "/DCor #{pubid_number}"
|
11
|
-
# else
|
12
|
-
# "/DCOR #{pubid_number}"
|
13
|
-
# end
|
14
|
-
# when "FDIS"
|
15
|
-
# if stage_format_long
|
16
|
-
# "/FDCor #{pubid_number}"
|
17
|
-
# else
|
18
|
-
# "/FDCOR #{pubid_number}"
|
19
|
-
# end
|
20
|
-
# when ""
|
21
|
-
# "/Cor #{pubid_number}"
|
22
|
-
# else
|
23
|
-
# "/#{stage} Cor #{pubid_number}"
|
24
|
-
# end
|
25
|
-
end
|
26
|
-
|
27
|
-
def render_urn
|
28
|
-
"#{render_urn_stage}:cor#{render_urn_number}"
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
module Pubid::Iso::Renderer
|
2
|
-
class French < Base
|
3
|
-
def render_typed_stage(typed_stage, opts, params)
|
4
|
-
return nil if typed_stage.type == :guide
|
5
|
-
|
6
|
-
super
|
7
|
-
end
|
8
|
-
|
9
|
-
def render_identifier(params)
|
10
|
-
if @params[:typed_stage]&.type == :guide
|
11
|
-
"Guide #{super(params)}"
|
12
|
-
else
|
13
|
-
super
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def render_copublisher(copublisher, opts, params)
|
18
|
-
"/#{copublisher.to_s.sub("IEC", "CEI")}"
|
19
|
-
end
|
20
|
-
|
21
|
-
def render_corrigendums(corrigendums, _opts, _params)
|
22
|
-
super.gsub(" ", ".")
|
23
|
-
end
|
24
|
-
|
25
|
-
def render_amendments(amendments, _opts, _params)
|
26
|
-
super.gsub(" ", ".")
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,64 +0,0 @@
|
|
1
|
-
module Pubid::Iso::Renderer
|
2
|
-
class Russian < Base
|
3
|
-
PUBLISHER = { "ISO" => "ИСО", "IEC" => "МЭК" }.freeze
|
4
|
-
STAGE = { "FDIS" => "ОПМС",
|
5
|
-
"DIS" => "ПМС",
|
6
|
-
"NP" => "НП",
|
7
|
-
"AWI" => "АВИ",
|
8
|
-
"CD" => "КПК",
|
9
|
-
"PD" => "ПД",
|
10
|
-
"FPD" => "ФПД",
|
11
|
-
|
12
|
-
|
13
|
-
}.freeze
|
14
|
-
|
15
|
-
TYPE = { "Guide" => "Руководство",
|
16
|
-
"TS" => "ТС",
|
17
|
-
"TR" => "ТО",
|
18
|
-
"ISP" => "ИСП",
|
19
|
-
}.freeze
|
20
|
-
|
21
|
-
def render_typed_stage(typed_stage, opts, params)
|
22
|
-
return nil if typed_stage.type == :guide
|
23
|
-
|
24
|
-
return (params[:copublisher] ? " " : "/") + STAGE[typed_stage.to_s] if STAGE.key?(typed_stage.to_s)
|
25
|
-
|
26
|
-
super
|
27
|
-
end
|
28
|
-
|
29
|
-
def render_identifier(params)
|
30
|
-
if @params[:typed_stage]&.type == :guide
|
31
|
-
"Руководство #{super(params)}"
|
32
|
-
else
|
33
|
-
super
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def render_publisher(publisher, _opts, _params)
|
38
|
-
PUBLISHER[publisher]
|
39
|
-
end
|
40
|
-
|
41
|
-
def render_copublisher(copublisher, _opts, _params)
|
42
|
-
# (!@copublisher.is_a?(Array) && [@copublisher]) || @copublisher
|
43
|
-
if copublisher.is_a?(Array)
|
44
|
-
copublisher.map(&:to_s).sort.map do |copublisher|
|
45
|
-
"/#{PUBLISHER[copublisher].gsub('-', '/')}"
|
46
|
-
end.join
|
47
|
-
else
|
48
|
-
"/#{PUBLISHER[copublisher]}"
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
def render_stage(stage, _opts, params)
|
53
|
-
STAGE[stage.abbr] unless stage.nil?
|
54
|
-
end
|
55
|
-
|
56
|
-
def render_corrigendums(corrigendums, _opts, _params)
|
57
|
-
super.gsub(" ", ".")
|
58
|
-
end
|
59
|
-
|
60
|
-
def render_amendments(amendments, _opts, _params)
|
61
|
-
super.gsub(" ", ".")
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
module Pubid::Iso::Renderer
|
2
|
-
class Tc < Base
|
3
|
-
|
4
|
-
def render_identifier(params)
|
5
|
-
"%{publisher}%{copublisher} %{tctype} %{tcnumber}%{sctype}%{wgtype} N%{number}" % params
|
6
|
-
end
|
7
|
-
|
8
|
-
def render_tctype(tctype, _opts, _params)
|
9
|
-
tctype.is_a?(Array) && tctype.join("/") || tctype.to_s
|
10
|
-
end
|
11
|
-
|
12
|
-
# TC 184/SC/WG 4 - no wg number
|
13
|
-
# TC 184/SC 4/WG 12 - separate sc and wg number
|
14
|
-
def render_sctype(sctype, _opts, params)
|
15
|
-
if params[:wgnumber] || !params[:wgtype]
|
16
|
-
"/#{sctype} #{params[:scnumber]}"
|
17
|
-
else
|
18
|
-
"/#{sctype}"
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def render_wgtype(wgtype, _opts, params)
|
23
|
-
if params[:wgnumber]
|
24
|
-
"/#{wgtype} #{params[:wgnumber]}"
|
25
|
-
else
|
26
|
-
"/#{wgtype} #{params[:scnumber]}"
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
data/lib/pubid/iso/supplement.rb
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
module Pubid::Iso
|
2
|
-
class Supplement < Pubid::Core::Supplement
|
3
|
-
attr_accessor :typed_stage, :publisher, :edition, :iteration
|
4
|
-
|
5
|
-
# @param stage [Stage, Symbol, String] stage, e.g. "PWI", "NP", "50.00", Stage.new(abbr: :WD)
|
6
|
-
# @param publisher [String] publisher, e.g. "ISO", "IEC" (only for DIR documents)
|
7
|
-
# @param edition [Integer] edition, e.g. 1, 2, 3
|
8
|
-
# @param iteration [Integer] iteration, e.g. 1, 2, 3
|
9
|
-
# @see Pubid::Core::Supplement for other options
|
10
|
-
def initialize(typed_stage: nil, publisher: nil, edition: nil, iteration: nil, **args)
|
11
|
-
super(**args)
|
12
|
-
@typed_stage = TypedStage.parse(typed_stage) if typed_stage
|
13
|
-
# for DIR identifiers only
|
14
|
-
@publisher = publisher.to_s
|
15
|
-
@edition = edition&.to_i
|
16
|
-
@iteration = iteration&.to_i
|
17
|
-
|
18
|
-
if @iteration && @typed_stage.nil?
|
19
|
-
raise Errors::PublishedIterationError.new("cannot assign iteration to published supplement")
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def render_pubid_stage
|
24
|
-
# @typed_stage.stage.abbr != "IS" &&
|
25
|
-
((@typed_stage && @typed_stage.to_s) || "")
|
26
|
-
end
|
27
|
-
|
28
|
-
def render_urn_stage
|
29
|
-
((@typed_stage&.stage && ":stage-#{@typed_stage.stage.harmonized_code}") || "")
|
30
|
-
end
|
31
|
-
|
32
|
-
def <=>(other)
|
33
|
-
(super == 0) && ((typed_stage.nil? || typed_stage == other.typed_stage) && 0 || -1) || super
|
34
|
-
end
|
35
|
-
|
36
|
-
def render_iteration
|
37
|
-
@iteration && ".#{@iteration}"
|
38
|
-
end
|
39
|
-
|
40
|
-
def render_pubid_number(with_date: true)
|
41
|
-
if @year && with_date
|
42
|
-
"#{@number}#{render_iteration}:#{@year}"
|
43
|
-
else
|
44
|
-
"#{@number}#{render_iteration}"
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def render_urn_number
|
49
|
-
if @year
|
50
|
-
":#{@year}:v#{@number}#{render_iteration}"
|
51
|
-
else
|
52
|
-
":#{@number}#{render_iteration}:v1"
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
@@ -1,204 +0,0 @@
|
|
1
|
-
module Pubid::Iso
|
2
|
-
class TypedStage
|
3
|
-
attr_accessor :type, :stage, :typed_stage
|
4
|
-
|
5
|
-
TYPED_STAGES = {
|
6
|
-
dtr: {
|
7
|
-
abbr: "DTR",
|
8
|
-
type: :tr,
|
9
|
-
name: "Draft Technical Report",
|
10
|
-
harmonized_stages: %w[40.00 40.20 40.60 40.92 40.93 50.00 50.20 50.60 50.92],
|
11
|
-
},
|
12
|
-
dis: {
|
13
|
-
abbr: "DIS",
|
14
|
-
type: :is,
|
15
|
-
name: "Draft International Standard",
|
16
|
-
harmonized_stages: %w[40.00 40.20 40.60 40.92 40.93],
|
17
|
-
},
|
18
|
-
dts: {
|
19
|
-
abbr: "DTS",
|
20
|
-
type: :ts,
|
21
|
-
name: "Draft Technical Specification",
|
22
|
-
harmonized_stages: %w[40.00 40.20 40.60 40.92 40.93 50.00 50.20 50.60 50.92],
|
23
|
-
},
|
24
|
-
fdts: {
|
25
|
-
abbr: "FDTS",
|
26
|
-
type: :ts,
|
27
|
-
name: "Final Draft Technical Specification",
|
28
|
-
harmonized_stages: %w[50.00 50.20 50.60 50.92],
|
29
|
-
},
|
30
|
-
fdtr: {
|
31
|
-
abbr: "FDTR",
|
32
|
-
type: :tr,
|
33
|
-
name: "Final Draft Technical Report",
|
34
|
-
harmonized_stages: %w[50.00 50.20 50.60 50.92],
|
35
|
-
},
|
36
|
-
fdis: {
|
37
|
-
abbr: "FDIS",
|
38
|
-
type: :is,
|
39
|
-
name: "Final Draft International Standard",
|
40
|
-
harmonized_stages: %w[50.00 50.20 50.60 50.92],
|
41
|
-
},
|
42
|
-
dpas: {
|
43
|
-
abbr: "DPAS",
|
44
|
-
type: :pas,
|
45
|
-
name: "Publicly Available Specification Draft",
|
46
|
-
harmonized_stages: %w[40.00 40.20 40.60 40.92 40.93 50.00 50.20 50.60 50.92],
|
47
|
-
},
|
48
|
-
damd: {
|
49
|
-
abbr: { short: "DAM", long: "DAmd" },
|
50
|
-
type: :amd,
|
51
|
-
name: "Draft Amendment",
|
52
|
-
harmonized_stages: %w[40.00 40.20 40.60 40.92 40.93 50.00 50.20 50.60 50.92],
|
53
|
-
},
|
54
|
-
dcor: {
|
55
|
-
abbr: { short: "DCOR", long: "DCor" },
|
56
|
-
type: :cor,
|
57
|
-
name: "Draft Corrigendum",
|
58
|
-
harmonized_stages: %w[40.00 40.20 40.60 40.92 40.93 50.00 50.20 50.60 50.92],
|
59
|
-
},
|
60
|
-
fdamd: {
|
61
|
-
abbr: { short: "FDAM", long: "FDAmd" },
|
62
|
-
type: :amd,
|
63
|
-
name: "Final Draft Amendment",
|
64
|
-
harmonized_stages: %w[50.00 50.20 50.60 50.92],
|
65
|
-
},
|
66
|
-
fdcor: {
|
67
|
-
abbr: { short: "FDCOR", long: "FDCor" },
|
68
|
-
type: :cor,
|
69
|
-
name: "Final Draft Corrigendum",
|
70
|
-
harmonized_stages: %w[50.00 50.20 50.60 50.92],
|
71
|
-
},
|
72
|
-
}.freeze
|
73
|
-
|
74
|
-
# @param type [Symbol,Type] eg. :tr, Type.new(:tr)
|
75
|
-
# @param stage [Symbol,Stage] eg. :CD, Stage.new(abbr: :CD)
|
76
|
-
def initialize(abbr: nil, type: nil, stage: nil)
|
77
|
-
@type = type.is_a?(Type) ? type : Type.new(type) if type
|
78
|
-
@stage = stage.is_a?(Stage) ? stage : Stage.new(abbr: stage) if stage
|
79
|
-
|
80
|
-
if abbr
|
81
|
-
raise Errors::TypeStageInvalidError, "#{abbr} is not valid typed stage" unless TYPED_STAGES.key?(abbr)
|
82
|
-
assign_abbreviation(abbr)
|
83
|
-
elsif !@stage.nil?
|
84
|
-
# lookup for typed stage
|
85
|
-
@typed_stage = lookup_typed_stage
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
def lookup_typed_stage
|
90
|
-
return nil unless @stage
|
91
|
-
|
92
|
-
TYPED_STAGES.each do |typed_stage, values|
|
93
|
-
if values[:harmonized_stages].include?(@stage.harmonized_code.to_s) && values[:type] == @type&.type
|
94
|
-
return typed_stage
|
95
|
-
end
|
96
|
-
end
|
97
|
-
nil
|
98
|
-
end
|
99
|
-
|
100
|
-
# Assigns type and stage according to provided typed stage abbreviation
|
101
|
-
# @param abbr [Symbol] eg. :dtr, :damd, :dis
|
102
|
-
def assign_abbreviation(abbr)
|
103
|
-
@typed_stage = if TYPED_STAGES.key?(abbr.downcase.to_sym)
|
104
|
-
abbr.downcase.to_sym
|
105
|
-
else
|
106
|
-
TYPED_STAGES.select do |_, v|
|
107
|
-
if v[:abbr].is_a?(Hash)
|
108
|
-
v[:abbr].values.include?(abbr)
|
109
|
-
else
|
110
|
-
v[:abbr] == abbr
|
111
|
-
end
|
112
|
-
end.keys.first
|
113
|
-
end
|
114
|
-
|
115
|
-
@type = Type.new(TYPED_STAGES[@typed_stage][:type])
|
116
|
-
@stage = Stage.new(harmonized_code: HarmonizedStageCode.new(TYPED_STAGES[@typed_stage][:harmonized_stages]))
|
117
|
-
end
|
118
|
-
|
119
|
-
# Render typed stage
|
120
|
-
# @param stage_format_long [Boolean] render stage in long or short format
|
121
|
-
def to_s(stage_format_long = true)
|
122
|
-
# return "" if @type == :amd || @type == :cor
|
123
|
-
if @typed_stage
|
124
|
-
if TYPED_STAGES[@typed_stage][:abbr].is_a?(Hash)
|
125
|
-
return TYPED_STAGES[@typed_stage][:abbr][stage_format_long ? :long : :short]
|
126
|
-
else
|
127
|
-
return TYPED_STAGES[@typed_stage][:abbr]
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
result = (@stage && @stage.abbr != "IS") ? "#{@stage.abbr}" : ""
|
132
|
-
result += " " if !result.empty? && @type && stage_format_long
|
133
|
-
result + if stage_format_long
|
134
|
-
"#{@type&.to_s}"
|
135
|
-
else
|
136
|
-
if @type == :amd
|
137
|
-
"AM"
|
138
|
-
elsif @type == :cor
|
139
|
-
"COR"
|
140
|
-
else
|
141
|
-
"#{@type&.to_s}"
|
142
|
-
end
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
# Check if typed stage listed in TYPED_STAGES constant
|
147
|
-
# @param typed_stage [String,Symbol] typed stage abbreviation, eg. "DTS", :dts, "DAmd", :damd
|
148
|
-
def self.has_typed_stage?(typed_stage)
|
149
|
-
return true if TYPED_STAGES.key?(typed_stage)
|
150
|
-
|
151
|
-
TYPED_STAGES.any? do |_, v|
|
152
|
-
if v[:abbr].is_a?(Hash)
|
153
|
-
v[:abbr].values.include?(typed_stage)
|
154
|
-
else
|
155
|
-
v[:abbr] == typed_stage
|
156
|
-
end
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
|
-
# Assigns stage or type or typed stage or stage and type depending on provided string
|
161
|
-
# @param stage_or_typed_stage [String, Stage] eg. "DTR", "CD", Stage.new(:CD), "TR", "CD Amd", :dtr
|
162
|
-
def parse_stage(stage_or_typed_stage)
|
163
|
-
if self.class.has_typed_stage?(stage_or_typed_stage)
|
164
|
-
return assign_abbreviation(stage_or_typed_stage)
|
165
|
-
end
|
166
|
-
|
167
|
-
if stage_or_typed_stage.is_a?(Stage)
|
168
|
-
@stage = stage_or_typed_stage
|
169
|
-
elsif stage_or_typed_stage.is_a?(String) && stage_or_typed_stage.split.count == 2 &&
|
170
|
-
Stage.has_stage?(stage_or_typed_stage.split.first)
|
171
|
-
# stage and type ("CD Amd")
|
172
|
-
@stage = Stage.parse(stage_or_typed_stage.split.first)
|
173
|
-
@type = Type.parse(stage_or_typed_stage.split.last)
|
174
|
-
elsif Type.has_type?(stage_or_typed_stage)
|
175
|
-
@type = Type.parse(stage_or_typed_stage)
|
176
|
-
elsif Stage.has_stage?(stage_or_typed_stage)
|
177
|
-
@stage = Stage.parse(stage_or_typed_stage.to_s)
|
178
|
-
else
|
179
|
-
raise Errors::TypeStageParseError, "cannot parse typed stage or stage"
|
180
|
-
end
|
181
|
-
@typed_stage = lookup_typed_stage
|
182
|
-
end
|
183
|
-
|
184
|
-
# Parse stage or typed stage
|
185
|
-
# @return [TypedStage] typed stage object with parsed stage and typed stage
|
186
|
-
def self.parse(stage_or_typed_stage)
|
187
|
-
return stage_or_typed_stage if stage_or_typed_stage.is_a?(TypedStage)
|
188
|
-
|
189
|
-
typed_stage = new
|
190
|
-
typed_stage.parse_stage(stage_or_typed_stage)
|
191
|
-
typed_stage
|
192
|
-
end
|
193
|
-
|
194
|
-
def name
|
195
|
-
TYPED_STAGES[@typed_stage][:name]
|
196
|
-
end
|
197
|
-
|
198
|
-
def ==(other)
|
199
|
-
return false if other.nil?
|
200
|
-
|
201
|
-
type == other.type && typed_stage == other.typed_stage && stage == other.stage
|
202
|
-
end
|
203
|
-
end
|
204
|
-
end
|