Class: Udb::ConditionalExtensionVersionList

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/udb/req_expression.rb

Overview

represents an ‘implies:` entry for an extension which is a list of extension versions, zero or more of which may be conditional (via an ExtensionRequirementExpression)

Defined Under Namespace

Classes: ConditionalExtensionVersion

Constant Summary collapse

YamlExtensionWithVersion =
T.type_alias { T::Hash[String, String] }

Instance Method Summary collapse

Constructor Details

#initialize(data, cfg_arch)

Parameters:



795
796
797
798
# File 'lib/udb/req_expression.rb', line 795

def initialize(data, cfg_arch)
  @data = data
  @cfg_arch = cfg_arch
end

Instance Method Details

#each(&block)

This method returns an undefined value.

Parameters:



807
808
809
# File 'lib/udb/req_expression.rb', line 807

def each(&block)
  eval.each(&block)
end

#empty?Boolean

Returns:

  • (Boolean)


801
# File 'lib/udb/req_expression.rb', line 801

def empty? = @data.nil? || @data.empty?

#evalArray<ConditionalExtensionVersion> Also known as: to_a

Returns array of ExtensionVersions, along with a condition under which it is in the list

Examples:

list.eval #=> [{ :ext_ver => ExtensionVersion.new(:A, "2.1.0"), :cond => ExtensionRequirementExpression.new(...) }]

Returns:

  • (Array<ConditionalExtensionVersion>)

    The extension versions in the list after evaluation, and the condition under which it applies



824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
# File 'lib/udb/req_expression.rb', line 824

def eval
  result = []
  data = T.let({}, T::Hash[String, String])
  if @data.is_a?(Hash)
    data = T.cast(@data, T::Hash[String, String])
    result << ConditionalExtensionVersion.new(ext_ver: entry_to_ext_ver(data), cond: AlwaysTrueExtensionRequirementExpression.new)
  else
    T.must(@data).each do |elem|
      if elem.keys[0] == "if"
        cond_expr = ExtensionRequirementExpression.new(T.must(elem["if"]), @cfg_arch)
        data = T.cast(elem["then"], T::Hash[String, String])
        result << ConditionalExtensionVersion.new(ext_ver: entry_to_ext_ver(data), cond: cond_expr)
      else
        result << ConditionalExtensionVersion.new(ext_ver: entry_to_ext_ver(elem), cond: AlwaysTrueExtensionRequirementExpression.new)
      end
    end
  end
  result
end

#map(&block) ⇒ Array<T.untyped>

Parameters:

Returns:

  • (Array<T.untyped>)


812
813
814
# File 'lib/udb/req_expression.rb', line 812

def map(&block)
  eval.map(&block)
end

#sizeInteger

Returns:

  • (Integer)


804
# File 'lib/udb/req_expression.rb', line 804

def size = empty? ? 0 : eval.size