Class: Syskit::OroGenNamespace::ProjectNamespace

Inherits:
BasicObject
Defined in:
lib/syskit/orogen_namespace.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ ProjectNamespace

Returns a new instance of ProjectNamespace



15
16
17
18
19
# File 'lib/syskit/orogen_namespace.rb', line 15

def initialize(name)
    @project_name = name
    @registered_models = ::Hash.new
    super()
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(m, *args, &block) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 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

Instance Attribute Details

#project_nameObject (readonly)

The name of the underlying oroGen project



13
14
15
# File 'lib/syskit/orogen_namespace.rb', line 13

def project_name
  @project_name
end

Instance Method Details

#register_syskit_model(model) ⇒ Object



21
22
23
24
25
26
27
28
29
30
# 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) ⇒ Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/syskit/orogen_namespace.rb', line 32

def respond_to_missing?(m, include_private = false)
    @registered_models.has_key?(m)
end