Class: Metanorma::Release::ReleaseTag

Inherits:
Object
  • Object
show all
Defined in:
lib/metanorma/release/release_tag.rb

Constant Summary collapse

PRE_RELEASE_SUFFIXES =
%w[-wd -cd -ds -fd -proposal].freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tag:, pre_release:) ⇒ ReleaseTag

Returns a new instance of ReleaseTag.



26
27
28
29
30
# File 'lib/metanorma/release/release_tag.rb', line 26

def initialize(tag:, pre_release:)
  @tag = tag
  @pre_release = pre_release
  freeze
end

Class Method Details

.create(tag, pre_release:) ⇒ Object

Raises:

  • (ArgumentError)


13
14
15
16
17
# File 'lib/metanorma/release/release_tag.rb', line 13

def self.create(tag, pre_release:)
  raise ArgumentError, 'Tag must contain a slash separator' unless tag.include?('/')

  new(tag: tag, pre_release: pre_release)
end

.from(doc_id, version) ⇒ Object



8
9
10
11
# File 'lib/metanorma/release/release_tag.rb', line 8

def self.from(doc_id, version)
  tag = "#{doc_id}/#{version.tag_component}"
  new(tag: tag, pre_release: version.pre_release?)
end

.parse(tag) ⇒ Object

Raises:

  • (ArgumentError)


19
20
21
22
23
24
# File 'lib/metanorma/release/release_tag.rb', line 19

def self.parse(tag)
  raise ArgumentError, 'Tag must contain a slash separator' unless tag.include?('/')

  pre = PRE_RELEASE_SUFFIXES.any? { |s| tag.include?(s) }
  new(tag: tag, pre_release: pre)
end

Instance Method Details

#eql?(other) ⇒ Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/metanorma/release/release_tag.rb', line 40

def eql?(other)
  other.is_a?(self.class) && @tag == other.to_s
end

#hashObject



44
45
46
# File 'lib/metanorma/release/release_tag.rb', line 44

def hash
  @tag.hash
end

#pre_release?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/metanorma/release/release_tag.rb', line 36

def pre_release?
  @pre_release
end

#to_sObject



32
33
34
# File 'lib/metanorma/release/release_tag.rb', line 32

def to_s
  @tag
end