Class: Udb::ConditionalExtensionVersionList
- Inherits:
-
Object
- Object
- Udb::ConditionalExtensionVersionList
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)
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.
807
808
809
|
# File 'lib/udb/req_expression.rb', line 807
def each(&block)
eval.each(&block)
end
|
#empty? ⇒ Boolean
801
|
# File 'lib/udb/req_expression.rb', line 801
def empty? = @data.nil? || @data.empty?
|
Returns array of ExtensionVersions, along with a condition under which it is in the list
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>
812
813
814
|
# File 'lib/udb/req_expression.rb', line 812
def map(&block)
eval.map(&block)
end
|
#size ⇒ Integer
804
|
# File 'lib/udb/req_expression.rb', line 804
def size = empty? ? 0 : eval.size
|