Class: Cask::DSL::Version
Private
Overview
This class is part of a private API.
This class may only be used in the Homebrew/brew repository.
Third parties should avoid using this class if possible, as it may be removed or changed without warning.
Class corresponding to the version
stanza.
Constant Summary
collapse
- DIVIDERS =
This constant is part of a private API.
This constant may only be used in the Homebrew/brew repository.
Third parties should avoid using this constant if possible, as it may be removed or changed without warning.
{
"." => :dots,
"-" => :hyphens,
"_" => :underscores,
}.freeze
- DIVIDER_REGEX =
This constant is part of a private API.
This constant may only be used in the Homebrew/brew repository.
Third parties should avoid using this constant if possible, as it may be removed or changed without warning.
/(#{DIVIDERS.keys.map { |v| Regexp.quote(v) }.join('|')})/.freeze
- MAJOR_MINOR_PATCH_REGEX =
This constant is part of a private API.
This constant may only be used in the Homebrew/brew repository.
Third parties should avoid using this constant if possible, as it may be removed or changed without warning.
/^([^.,:]+)(?:.([^.,:]+)(?:.([^.,:]+))?)?/.freeze
- INVALID_CHARACTERS =
This constant is part of a private API.
This constant may only be used in the Homebrew/brew repository.
Third parties should avoid using this constant if possible, as it may be removed or changed without warning.
/[^0-9a-zA-Z.,:\-_+ ]/.freeze
Constants inherited
from String
String::BLANK_RE, String::ENCODED_BLANKS_
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods inherited from String
#blank?, #c, #f, #present?
Constructor Details
#initialize(raw_version) ⇒ void
This method is part of a private API.
This method may only be used in the Homebrew/brew repository.
Third parties should avoid using this method if possible, as it may be removed or changed without warning.
68
69
70
71
72
73
74
|
# File 'cask/dsl/version.rb', line 68
def initialize(raw_version)
@raw_version = raw_version
super(raw_version.to_s)
invalid = invalid_characters
raise TypeError, "#{raw_version} contains invalid characters: #{invalid.uniq.join}!" if invalid.present?
end
|
Instance Attribute Details
#raw_version ⇒ Object
This method is part of a private API.
This method may only be used in the Homebrew/brew repository.
Third parties should avoid using this method if possible, as it may be removed or changed without warning.
65
66
67
|
# File 'cask/dsl/version.rb', line 65
def raw_version
@raw_version
end
|
Instance Method Details
#after_comma ⇒ T.self_type
149
150
151
|
# File 'cask/dsl/version.rb', line 149
def after_comma
version { split(",", 2).second }
end
|
#before_comma ⇒ T.self_type
143
144
145
|
# File 'cask/dsl/version.rb', line 143
def before_comma
version { split(",", 2).first }
end
|
#chomp(separator = nil) ⇒ T.self_type
161
162
163
|
# File 'cask/dsl/version.rb', line 161
def chomp(separator = nil)
version { to_s.chomp(T.unsafe(separator)) }
end
|
137
138
139
|
# File 'cask/dsl/version.rb', line 137
def csv
split(",").map(&self.class.method(:new))
end
|
#invalid_characters ⇒ Object
This method is part of a private API.
This method may only be used in the Homebrew/brew repository.
Third parties should avoid using this method if possible, as it may be removed or changed without warning.
76
77
78
79
80
|
# File 'cask/dsl/version.rb', line 76
def invalid_characters
return [] if raw_version.blank? || latest?
raw_version.scan(INVALID_CHARACTERS)
end
|
#latest? ⇒ Boolean
This method is part of a private API.
This method may only be used in the Homebrew/brew repository.
Third parties should avoid using this method if possible, as it may be removed or changed without warning.
95
96
97
|
# File 'cask/dsl/version.rb', line 95
def latest?
to_s == "latest"
end
|
#major_minor ⇒ T.self_type
119
120
121
|
# File 'cask/dsl/version.rb', line 119
def major_minor
version { [major, minor].reject(&:empty?).join(".") }
end
|
#major_minor_patch ⇒ T.self_type
125
126
127
|
# File 'cask/dsl/version.rb', line 125
def major_minor_patch
version { [major, minor, patch].reject(&:empty?).join(".") }
end
|
#minor_patch ⇒ T.self_type
131
132
133
|
# File 'cask/dsl/version.rb', line 131
def minor_patch
version { [minor, patch].reject(&:empty?).join(".") }
end
|
#no_dividers ⇒ T.self_type
155
156
157
|
# File 'cask/dsl/version.rb', line 155
def no_dividers
version { gsub(DIVIDER_REGEX, "") }
end
|
#unstable? ⇒ Boolean
This method is part of a private API.
This method may only be used in the Homebrew/brew repository.
Third parties should avoid using this method if possible, as it may be removed or changed without warning.
83
84
85
86
87
88
89
90
91
92
|
# File 'cask/dsl/version.rb', line 83
def unstable?
return false if latest?
s = downcase.delete(".").gsub(/[^a-z\d]+/, "-")
return true if s.match?(/(\d+|\b)(alpha|beta|preview|rc|dev|canary|snapshot)(\d+|\b)/i)
return true if s.match?(/\A[a-z\d]+(-\d+)*-?(a|b|pre)(\d+|\b)/i)
false
end
|