Class: Factorix::Dependency::MODVersionRequirement

Inherits:
Data
  • Object
show all
Defined in:
lib/factorix/dependency/mod_version_requirement.rb,
lib/factorix/dependency/mod_version_requirement.rb

Overview

Represents a MOD version requirement with an operator and version

This class is used in MOD dependencies to specify version constraints. It supports the following comparison operators: <, <=, =, >=, >

Examples:

Creating a version requirement

requirement = MODVersionRequirement[operator: ">=", version: MODVersion.from_string("1.2.0")]
requirement.satisfied_by?(MODVersion.from_string("1.3.0")) # => true
requirement.satisfied_by?(MODVersion.from_string("1.1.0")) # => false

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(operator:, version:) ⇒ MODVersionRequirement

Create a new MODVersionRequirement

Parameters:

  • operator (String)

    Comparison operator (<, <=, =, >=, >)

  • version (MODVersion)

    Version to compare against

Raises:

  • (ArgumentError)

    if operator is not valid

  • (ArgumentError)

    if version is not a MODVersion



34
35
36
37
38
39
40
41
42
43
44
# File 'lib/factorix/dependency/mod_version_requirement.rb', line 34

def initialize(operator:, version:)
  unless VALID_OPERATORS.include?(operator)
    raise ArgumentError, "Invalid operator: #{operator}. Must be one of: #{VALID_OPERATORS.join(", ")}"
  end

  unless version.is_a?(MODVersion)
    raise ArgumentError, "version must be a MODVersion, got #{version.class}"
  end

  super
end

Instance Attribute Details

#operatorString (readonly)

Returns Comparison operator (<, <=, =, >=, >).

Returns:

  • (String)

    Comparison operator (<, <=, =, >=, >)



6
7
8
# File 'lib/factorix/dependency/mod_version_requirement.rb', line 6

def operator
  @operator
end

#versionMODVersion (readonly)

Returns Version to compare against.

Returns:



6
7
8
# File 'lib/factorix/dependency/mod_version_requirement.rb', line 6

def version
  @version
end

Instance Method Details

#satisfied_by?(mod_version) ⇒ Boolean

Check if a given version satisfies this requirement

Parameters:

Returns:

  • (Boolean)

    true if the version satisfies the requirement



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/factorix/dependency/mod_version_requirement.rb', line 50

def satisfied_by?(mod_version)
  case operator
  when "="
    mod_version == version
  when ">="
    mod_version >= version
  when ">"
    mod_version > version
  when "<="
    mod_version <= version
  when "<"
    mod_version < version
  else
    raise ArgumentError, "Unexpected operator: #{operator}"
  end
end

#to_sString

String representation of the requirement

Returns:

  • (String)

    String representation (e.g., “>= 1.2.0”)



70
# File 'lib/factorix/dependency/mod_version_requirement.rb', line 70

def to_s = "#{operator} #{version}"