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.
T.let({ "." => :dots, "-" => :hyphens, "_" => :underscores, }.freeze, T::Hash[String, Symbol])
- 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("|")})/- 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.
/^([^.,:]+)(?:.([^.,:]+)(?:.([^.,:]+))?)?/- 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.,:\-_+ ]/
Constants inherited from String
String::BLANK_RE, String::ENCODED_BLANKS_
Instance Attribute Summary collapse
- #raw_version ⇒ String, ... readonly private
Instance Method Summary collapse
-
#after_comma ⇒ T.self_type
The version part after the first comma.
-
#before_comma ⇒ T.self_type
The version part before the first comma.
-
#chomp(separator = T.unsafe(nil)) ⇒ T.self_type
The version with the given record separator removed from the end.
-
#csv ⇒ Array<Version>
The comma separated values of the version as array.
- #initialize(raw_version) ⇒ void constructor private
- #invalid_characters ⇒ Array<Array<String>, String> private
- #latest? ⇒ Boolean private
-
#major ⇒ T.self_type
The major version.
-
#major_minor ⇒ T.self_type
The major and minor version.
-
#major_minor_patch ⇒ T.self_type
The major, minor and patch version.
-
#minor ⇒ T.self_type
The minor version.
-
#minor_patch ⇒ T.self_type
The minor and patch version.
-
#no_dividers ⇒ T.self_type
The version without any dividers.
-
#patch ⇒ T.self_type
The patch version.
- #unstable? ⇒ Boolean private
Methods inherited from String
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.
73 74 75 76 77 78 79 |
# File 'cask/dsl/version.rb', line 73 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 ⇒ String, ... (readonly)
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.
70 71 72 |
# File 'cask/dsl/version.rb', line 70 def raw_version @raw_version end |
Instance Method Details
#after_comma ⇒ T.self_type
The version part after the first comma.
173 174 175 |
# File 'cask/dsl/version.rb', line 173 def after_comma version { split(",", 2).second } end |
#before_comma ⇒ T.self_type
The version part before the first comma.
165 166 167 |
# File 'cask/dsl/version.rb', line 165 def before_comma version { split(",", 2).first } end |
#chomp(separator = T.unsafe(nil)) ⇒ T.self_type
The version with the given record separator removed from the end.
191 192 193 |
# File 'cask/dsl/version.rb', line 191 def chomp(separator = T.unsafe(nil)) version { to_s.chomp(separator) } end |
#csv ⇒ Array<Version>
The comma separated values of the version as array.
157 158 159 |
# File 'cask/dsl/version.rb', line 157 def csv split(",").map { self.class.new(it) } end |
#invalid_characters ⇒ Array<Array<String>, String>
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.
82 83 84 85 86 |
# File 'cask/dsl/version.rb', line 82 def invalid_characters return [] if raw_version.blank? || latest? raw_version.to_s.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.
101 102 103 |
# File 'cask/dsl/version.rb', line 101 def latest? to_s == "latest" end |
#major ⇒ T.self_type
The major version.
109 110 111 |
# File 'cask/dsl/version.rb', line 109 def major version { slice(MAJOR_MINOR_PATCH_REGEX, 1) } end |
#major_minor ⇒ T.self_type
The major and minor version.
133 134 135 |
# File 'cask/dsl/version.rb', line 133 def major_minor version { [major, minor].reject(&:empty?).join(".") } end |
#major_minor_patch ⇒ T.self_type
The major, minor and patch version.
141 142 143 |
# File 'cask/dsl/version.rb', line 141 def major_minor_patch version { [major, minor, patch].reject(&:empty?).join(".") } end |
#minor ⇒ T.self_type
The minor version.
117 118 119 |
# File 'cask/dsl/version.rb', line 117 def minor version { slice(MAJOR_MINOR_PATCH_REGEX, 2) } end |
#minor_patch ⇒ T.self_type
The minor and patch version.
149 150 151 |
# File 'cask/dsl/version.rb', line 149 def minor_patch version { [minor, patch].reject(&:empty?).join(".") } end |
#no_dividers ⇒ T.self_type
The version without any dividers.
182 183 184 |
# File 'cask/dsl/version.rb', line 182 def no_dividers version { gsub(DIVIDER_REGEX, "") } end |
#patch ⇒ T.self_type
The patch version.
125 126 127 |
# File 'cask/dsl/version.rb', line 125 def patch version { slice(MAJOR_MINOR_PATCH_REGEX, 3) } 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.
89 90 91 92 93 94 95 96 97 98 |
# File 'cask/dsl/version.rb', line 89 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 |