class Syskit::OroGenNamespace::ProjectNamespace
Attributes
project_name[R]
The name of the underlying oroGen project
Public Class Methods
new(name)
click to toggle source
Calls superclass method
# File lib/syskit/orogen_namespace.rb, line 15 def initialize(name) @project_name = name @registered_models = ::Hash.new super() end
Public Instance Methods
method_missing(m, *args, &block)
click to toggle source
Calls superclass method
# File lib/syskit/orogen_namespace.rb, line 36 def method_missing(m, *args, &block) if model = @registered_models[m] if args.empty? return model else ::Kernel.raise ::ArgumentError, "expected 0 arguments, got #{args.size}" end end super rescue ::NoMethodError => e ::Kernel.raise e, "no task #{m} on #{project_name}, available tasks: " "#{@registered_models.keys.map(&:to_s).sort.join(', ')}" end
register_syskit_model(model)
click to toggle source
# File lib/syskit/orogen_namespace.rb, line 21 def register_syskit_model(model) orogen_name = model.orogen_model.name prefix = "#{project_name}::" unless orogen_name.start_with?(prefix) ::Kernel.raise ::ArgumentError, "#{model} does not seem to be part of the #{project_name} project" end @registered_models[orogen_name[prefix.size..-1].to_sym] = model end
respond_to_missing?(m, include_private = false)
click to toggle source
# File lib/syskit/orogen_namespace.rb, line 32 def respond_to_missing?(m, include_private = false) @registered_models.has_key?(m) end