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)
- #implied_extension_versions ⇒ Array<ConditionalExtensionVersion>
- #initialize(yaml, cfg_arch) constructor
- #list ⇒ Array<ConditionalExtensionRequirement>
- #make_cond_ext_req(yaml) ⇒ ConditionalExtensionRequirement
Constructor Details
#initialize(yaml, cfg_arch)
1836 1837 1838 1839 1840 1841 |
# File 'lib/udb/condition.rb', line 1836 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)
This method returns an undefined value.
1856 1857 1858 1859 1860 1861 1862 1863 1864 |
# File 'lib/udb/condition.rb', line 1856 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 ⇒ Array<ConditionalExtensionVersion>
1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 |
# File 'lib/udb/condition.rb', line 1876 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 ⇒ Array<ConditionalExtensionRequirement>
1867 1868 1869 1870 1871 1872 1873 |
# File 'lib/udb/condition.rb', line 1867 def list return @list unless @list.nil? @list = [] do_list(@yaml, @list) @list end |
#make_cond_ext_req(yaml) ⇒ ConditionalExtensionRequirement
1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 |
# File 'lib/udb/condition.rb', line 1844 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 |