class Domotics::Core::ElementGroup

Attributes

elements[R]
name[R]
room[R]
type[R]

Public Class Methods

new(args = {}) click to toggle source
# File lib/domotics/core/element_group.rb, line 4
def initialize(args = {})
  #::Object.instance_method(:is_a?).bind(self)
  @name = args[:name] || :undefined
  @room = Room[args[:room]]
  @room.register_element self, @name
  @elements = []
  @type = :group
end

Public Instance Methods

add_element(element) click to toggle source
# File lib/domotics/core/element_group.rb, line 12
def add_element(element)
  @elements << element
end
method_missing(method, *args, &block) click to toggle source
Calls superclass method
# File lib/domotics/core/element_group.rb, line 24
def method_missing(method, *args, &block)
  if @elements.map{ |el| el.respond_to? method }.reduce{ |res, n| res && n }
    @elements.map{ |el| el.public_send method, *args, &block }.reduce{ |res, n| res && n }
  else
    super
  end
end
respond_to?(method) click to toggle source
Calls superclass method
# File lib/domotics/core/element_group.rb, line 31
def respond_to?(method)
  @elements.map{ |el| el.respond_to? method }.reduce{ |res, n| res && n } || super
end
to_s() click to toggle source
# File lib/domotics/core/element_group.rb, line 34
def to_s
  "Group :#{@name} -> #{@elements}"
end
verbose_state() click to toggle source
# File lib/domotics/core/element_group.rb, line 15
def verbose_state
  { @room.name =>
    { :elements =>
      { @name =>
        { :state => nil }
      }
    }
  }
end