Class: Udb::ExtensionRequirementList
- Inherits:
-
Object
- Object
- Udb::ExtensionRequirementList
- Extended by:
- T::Sig
- Defined in:
- lib/udb/condition.rb
Overview
a conditional list of extension requirements
Defined Under Namespace
Classes: ParseState
Instance Method Summary collapse
- #do_list(yaml, l) ⇒ Object
- #implied_extension_versions ⇒ Object
-
#initialize(yaml, cfg_arch) ⇒ ExtensionRequirementList
constructor
A new instance of ExtensionRequirementList.
- #list ⇒ Object
- #make_cond_ext_req(yaml) ⇒ Object
Constructor Details
#initialize(yaml, cfg_arch) ⇒ ExtensionRequirementList
Returns a new instance of ExtensionRequirementList.
2157 2158 2159 2160 2161 2162 |
# File 'lib/udb/condition.rb', line 2157 def initialize(yaml, cfg_arch) @yaml = yaml @cfg_arch = cfg_arch @list = T.let(nil, T.nilable(T::Array[ConditionalExtensionRequirement])) @implied_extension_versions = T.let(nil, T.nilable(T::Array[ConditionalExtensionVersion])) end |
Instance Method Details
#do_list(yaml, l) ⇒ Object
2177 2178 2179 2180 2181 2182 2183 2184 2185 |
# File 'lib/udb/condition.rb', line 2177 def do_list(yaml, l) if yaml.key?("name") l << make_cond_ext_req(yaml) elsif yaml.key?("allOf") yaml.fetch("allOf").each { |item| do_list(item, l) } else raise "unexpected key #{yaml.keys}" end end |
#implied_extension_versions ⇒ Object
2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 |
# File 'lib/udb/condition.rb', line 2197 def implied_extension_versions return @implied_extension_versions unless @implied_extension_versions.nil? @implied_extension_versions = [] list.each do |cond_ext_req| ext_req = cond_ext_req.ext_req if (ext_req.requirement_specs.size == 1) && (ext_req.requirement_specs.fetch(0).op == "=") ext_ver = ext_req..fetch(0) @implied_extension_versions << ConditionalExtensionVersion.new(ext_ver:, cond: cond_ext_req.cond) end end @implied_extension_versions end |
#list ⇒ Object
2188 2189 2190 2191 2192 2193 2194 |
# File 'lib/udb/condition.rb', line 2188 def list return @list unless @list.nil? @list = [] do_list(@yaml, @list) @list end |
#make_cond_ext_req(yaml) ⇒ Object
2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 |
# File 'lib/udb/condition.rb', line 2165 def make_cond_ext_req(yaml) ext_req = ExtensionRequirement.create_from_yaml(yaml, @cfg_arch) cond = if yaml.key?("when") Condition.new(yaml.fetch("when"), @cfg_arch) else AlwaysTrueCondition.new(@cfg_arch) end ConditionalExtensionRequirement.new(ext_req:, cond:) end |