class OroGen::Loaders::Aggregate
A launcher that aggregates other launchers
Attributes
loaders[R]
@return [Array]
Public Class Methods
new(root_loader = self)
click to toggle source
Calls superclass method
# File lib/orogen/loaders/aggregate.rb, line 10 def initialize(root_loader = self) @loaders = Array.new super(root_loader) end
Public Instance Methods
add(loader)
click to toggle source
# File lib/orogen/loaders/aggregate.rb, line 26 def add(loader) if loaders.include?(loader) raise DuplicateLoader, "#{loader} is already a child of #{self}" end @loaders << loader end
added_child(loader)
click to toggle source
# File lib/orogen/loaders/aggregate.rb, line 15 def added_child(loader) add(loader) end
clear()
click to toggle source
Calls superclass method
# File lib/orogen/loaders/aggregate.rb, line 19 def clear super loaders.each do |l| l.clear end end
deployment_model_from_name(name)
click to toggle source
# File lib/orogen/loaders/aggregate.rb, line 182 def deployment_model_from_name(name) if deployment = loaded_deployment_models[name] return deployment end OroGen::Loaders.debug do "Aggregate: resolving deployment #{name} on #{loaders.map(&:to_s).join(",")}" end loaders.each do |l| begin # We assume that the sub-loaders are created with self # as root loader. They will therefore register # themselves on self return l.deployment_model_from_name(name) rescue DeploymentModelNotFound => e Loaders.debug " not available on #{l}: #{e}" end end raise DeploymentModelNotFound, "there is no deployment named #{name} on #{self}" end
each_available_project_name() { |name| ... }
click to toggle source
Enumerates the names of all available projects
@yieldparam [String] project_name
# File lib/orogen/loaders/aggregate.rb, line 168 def each_available_project_name return enum_for(__method__) if !block_given? seen = Set.new loaders.each do |l| l.each_available_project_name do |name| if !seen.include?(name) seen << name yield(name) end end end nil end
find_deployments_from_deployed_task_name(name)
click to toggle source
# File lib/orogen/loaders/aggregate.rb, line 104 def find_deployments_from_deployed_task_name(name) loaders.each do |l| next if !l.respond_to?(:find_deployments_from_deployed_task_name) if deployment_name = l.find_deployments_from_deployed_task_name(name) return deployment_name end end nil end
find_project_from_deployment_name(name)
click to toggle source
# File lib/orogen/loaders/aggregate.rb, line 94 def find_project_from_deployment_name(name) loaders.each do |l| next if !l.respond_to?(:find_project_from_deployment_name) if project_name = l.find_project_from_deployment_name(name) return project_name end end nil end
find_task_library_from_task_model_name(name)
click to toggle source
# File lib/orogen/loaders/aggregate.rb, line 90 def find_task_library_from_task_model_name(name) raise NotImplementedError end
has_project?(name)
click to toggle source
Calls superclass method
# File lib/orogen/loaders/aggregate.rb, line 161 def has_project?(name) super || loaders.any? { |l| l.has_project?(name) } end
has_typekit?(name)
click to toggle source
Calls superclass method
# File lib/orogen/loaders/aggregate.rb, line 157 def has_typekit?(name) super || loaders.any? { |l| l.has_typekit?(name) } end
project_model_from_name(name)
click to toggle source
# File lib/orogen/loaders/aggregate.rb, line 52 def project_model_from_name(name) if project = loaded_projects[name] return project end OroGen::Loaders.debug "Aggregate: resolving #{name} on #{loaders.map(&:to_s).join(",")}" loaders.each do |l| begin # We assume that the sub-loaders are created with self # as root loader. They will therefore register # themselves on self return l.project_model_from_name(name) rescue ProjectNotFound => e Loaders.debug " not available on #{l}: #{e}" end end raise ProjectNotFound, "there is no project named #{name} on #{self}" end
project_model_text_from_name(name)
click to toggle source
# File lib/orogen/loaders/aggregate.rb, line 37 def project_model_text_from_name(name) OroGen::Loaders.debug "Aggregate: resolving #{name} on #{loaders.map(&:to_s).join(",")}" loaders.each do |l| begin # We assume that the sub-loaders are created with self # as root loader. They will therefore register # themselves on self return l.project_model_text_from_name(name) rescue ProjectNotFound => e Loaders.debug " not available on #{l}: #{e}" end end raise ProjectNotFound, "there is no project named #{name} on #{self}" end
remove(loader)
click to toggle source
# File lib/orogen/loaders/aggregate.rb, line 33 def remove(loader) @loaders.delete loader end
task_model_from_name(name)
click to toggle source
# File lib/orogen/loaders/aggregate.rb, line 71 def task_model_from_name(name) if model = loaded_task_models[name] return model end OroGen::Loaders.debug "Aggregate: resolving task model #{name} on #{loaders.map(&:to_s).join(",")}" loaders.each do |l| begin # We assume that the sub-loaders are created with self # as root loader. They will therefore register # themselves on self return loaded_task_models[name] = l.task_model_from_name(name) rescue ProjectNotFound => e Loaders.debug " not available on #{l}: #{e}" end end raise TaskModelNotFound, "there is no task model named #{name} on #{self}" end
to_s()
click to toggle source
# File lib/orogen/loaders/aggregate.rb, line 204 def to_s "#<#{self.class.name}(#{object_id.to_s(16)}): #{loaders.map(&:to_s).join(",")}>" end
typekit_for(type, exported = true)
click to toggle source
# File lib/orogen/loaders/aggregate.rb, line 131 def typekit_for(type, exported = true) typename = if type.respond_to?(:name) type.name else type end if typekits = typekits_by_type_name[typename] if exported if export_tk = typekits.find_all { |tk| tk.interface_type?(typename) }.first return export_tk end else return typekits.first end end loaders.each do |l| next if !l.respond_to?(:typekit_for) begin return l.typekit_for(type, exported) rescue NotExportedType, NotTypekitType end end raise NotTypekitType.new(type), "#{type} is not defined by any typekit known to #{self}" end
typekit_model_from_name(name)
click to toggle source
# File lib/orogen/loaders/aggregate.rb, line 114 def typekit_model_from_name(name) if typekit = loaded_typekits[name] return typekit end loaders.each do |l| begin # We assume that the sub-loaders are created with self # as root loader. They will therefore register # themselves on self return l.typekit_model_from_name(name) rescue TypekitNotFound end end raise TypekitNotFound, "there is no typekit named #{name} on #{self}" end