Class: Metanorma::Release::DocumentStage
- Inherits:
-
Object
- Object
- Metanorma::Release::DocumentStage
- Defined in:
- lib/metanorma/release/document_stage.rb
Constant Summary collapse
- PUBLISHED_NAMES =
%w[published in-force approved standard].freeze
- STAGE_ABBREVS =
{ 'working-draft' => 'wd', 'committee-draft' => 'cd', 'draft-standard' => 'ds', 'final-draft' => 'fd', 'proposal' => 'proposal', 'informational' => 'info', 'withdrawn' => 'withdrawn', 'cancelled' => 'cancelled' }.freeze
- ISO_STAGE_MAP =
{ 20 => 'working-draft', 30 => 'committee-draft', 40 => 'draft-standard', 50 => 'final-draft', 60 => 'published', 95 => 'withdrawn' }.freeze
Class Method Summary collapse
- .from_iso_stage(stage, _substage = nil) ⇒ Object
- .from_status(status_string) ⇒ Object
- .published ⇒ Object
- .working_draft ⇒ Object
Instance Method Summary collapse
- #cancelled? ⇒ Boolean
- #draft? ⇒ Boolean
- #eql?(other) ⇒ Boolean
- #hash ⇒ Object
-
#initialize(name) ⇒ DocumentStage
constructor
A new instance of DocumentStage.
- #published? ⇒ Boolean
- #tag_suffix ⇒ Object
- #to_s ⇒ Object
- #withdrawn? ⇒ Boolean
Constructor Details
#initialize(name) ⇒ DocumentStage
Returns a new instance of DocumentStage.
48 49 50 51 |
# File 'lib/metanorma/release/document_stage.rb', line 48 def initialize(name) @name = name freeze end |
Class Method Details
.from_iso_stage(stage, _substage = nil) ⇒ Object
35 36 37 38 |
# File 'lib/metanorma/release/document_stage.rb', line 35 def self.from_iso_stage(stage, _substage = nil) name = ISO_STAGE_MAP[stage.to_i] || ISO_STAGE_MAP.values.first new(name) end |
.from_status(status_string) ⇒ Object
28 29 30 31 32 33 |
# File 'lib/metanorma/release/document_stage.rb', line 28 def self.from_status(status_string) raise ArgumentError, 'Stage cannot be empty' if status_string.nil? || status_string.strip.empty? normalized = status_string.to_s.downcase.strip.gsub(/\s+/, '-') new(normalized) end |
.published ⇒ Object
40 41 42 |
# File 'lib/metanorma/release/document_stage.rb', line 40 def self.published new('published') end |
.working_draft ⇒ Object
44 45 46 |
# File 'lib/metanorma/release/document_stage.rb', line 44 def self.working_draft new('working-draft') end |
Instance Method Details
#cancelled? ⇒ Boolean
69 70 71 |
# File 'lib/metanorma/release/document_stage.rb', line 69 def cancelled? @name == 'cancelled' end |
#draft? ⇒ Boolean
61 62 63 |
# File 'lib/metanorma/release/document_stage.rb', line 61 def draft? !published? && @name != 'withdrawn' && @name != 'cancelled' end |
#eql?(other) ⇒ Boolean
77 78 79 |
# File 'lib/metanorma/release/document_stage.rb', line 77 def eql?(other) other.is_a?(self.class) && @name == other.to_s end |
#hash ⇒ Object
81 82 83 |
# File 'lib/metanorma/release/document_stage.rb', line 81 def hash @name.hash end |
#published? ⇒ Boolean
57 58 59 |
# File 'lib/metanorma/release/document_stage.rb', line 57 def published? PUBLISHED_NAMES.include?(@name) end |
#tag_suffix ⇒ Object
73 74 75 |
# File 'lib/metanorma/release/document_stage.rb', line 73 def tag_suffix STAGE_ABBREVS[@name].to_s end |
#to_s ⇒ Object
53 54 55 |
# File 'lib/metanorma/release/document_stage.rb', line 53 def to_s @name end |
#withdrawn? ⇒ Boolean
65 66 67 |
# File 'lib/metanorma/release/document_stage.rb', line 65 def withdrawn? @name == 'withdrawn' end |