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