Class: Cask::DSL::Version Private

Inherits:
String show all
Defined in:
cask/dsl/version.rb

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("|")})/
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

Instance Method Summary collapse

Methods inherited from String

#blank?, #exclude?, #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.

Parameters:

Raises:

  • (TypeError)


66
67
68
69
70
71
72
# File 'cask/dsl/version.rb', line 66

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_versionObject (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.



63
64
65
# File 'cask/dsl/version.rb', line 63

def raw_version
  @raw_version
end

Instance Method Details

#after_commaT.self_type

The version part after the first comma.

Returns:

  • (T.self_type)


165
166
167
# File 'cask/dsl/version.rb', line 165

def after_comma
  version { split(",", 2).second }
end

#before_commaT.self_type

The version part before the first comma.

Returns:

  • (T.self_type)


157
158
159
# File 'cask/dsl/version.rb', line 157

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.

Parameters:

  • separator (String) (defaults to: T.unsafe(nil))

Returns:

  • (T.self_type)

See Also:

  • String#chomp


183
184
185
# File 'cask/dsl/version.rb', line 183

def chomp(separator = T.unsafe(nil))
  version { to_s.chomp(separator) }
end

#csvArray<Version>

The comma separated values of the version as array.

Returns:



149
150
151
# File 'cask/dsl/version.rb', line 149

def csv
  split(",").map { self.class.new(_1) }
end

#invalid_charactersObject

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.



74
75
76
77
78
# File 'cask/dsl/version.rb', line 74

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.

Returns:

  • (Boolean)


93
94
95
# File 'cask/dsl/version.rb', line 93

def latest?
  to_s == "latest"
end

#majorT.self_type

The major version.

Returns:

  • (T.self_type)


101
102
103
# File 'cask/dsl/version.rb', line 101

def major
  version { slice(MAJOR_MINOR_PATCH_REGEX, 1) }
end

#major_minorT.self_type

The major and minor version.

Returns:

  • (T.self_type)


125
126
127
# File 'cask/dsl/version.rb', line 125

def major_minor
  version { [major, minor].reject(&:empty?).join(".") }
end

#major_minor_patchT.self_type

The major, minor and patch version.

Returns:

  • (T.self_type)


133
134
135
# File 'cask/dsl/version.rb', line 133

def major_minor_patch
  version { [major, minor, patch].reject(&:empty?).join(".") }
end

#minorT.self_type

The minor version.

Returns:

  • (T.self_type)


109
110
111
# File 'cask/dsl/version.rb', line 109

def minor
  version { slice(MAJOR_MINOR_PATCH_REGEX, 2) }
end

#minor_patchT.self_type

The minor and patch version.

Returns:

  • (T.self_type)


141
142
143
# File 'cask/dsl/version.rb', line 141

def minor_patch
  version { [minor, patch].reject(&:empty?).join(".") }
end

#no_dividersT.self_type

The version without any dividers.

Returns:

  • (T.self_type)

See Also:



174
175
176
# File 'cask/dsl/version.rb', line 174

def no_dividers
  version { gsub(DIVIDER_REGEX, "") }
end

#patchT.self_type

The patch version.

Returns:

  • (T.self_type)


117
118
119
# File 'cask/dsl/version.rb', line 117

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.

Returns:

  • (Boolean)


81
82
83
84
85
86
87
88
89
90
# File 'cask/dsl/version.rb', line 81

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