Class: Syskit::OroGenNamespace::ProjectNamespace
- Inherits:
- BasicObject
- Defined in:
- lib/syskit/orogen_namespace.rb
Instance Attribute Summary collapse
-
#project_name ⇒ Object
readonly
The name of the underlying oroGen project.
Instance Method Summary collapse
-
#initialize(name) ⇒ ProjectNamespace
constructor
A new instance of ProjectNamespace.
- #method_missing(m, *args, &block) ⇒ Object
- #register_syskit_model(model) ⇒ Object
- #respond_to_missing?(m, include_private = false) ⇒ Boolean
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_name ⇒ Object (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
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 |