Class: Huey::Group
Overview
A group is a collection of bulbs.
Constant Summary collapse
- ATTRIBUTES =
Huey::Bulb::ATTRIBUTES - [:name, :reachable] + [:rgb]
Instance Attribute Summary collapse
-
#bulbs ⇒ Object
Returns the value of attribute bulbs.
-
#name ⇒ Object
Returns the value of attribute name.
Class Method Summary collapse
Instance Method Summary collapse
- #each(&block) ⇒ Object
-
#initialize(*string_or_array) ⇒ Group
constructor
A new instance of Group.
- #method_missing(meth, *args, &block) ⇒ Object
- #save ⇒ Object (also: #commit)
- #update(attrs) ⇒ Object
Constructor Details
#initialize(*string_or_array) ⇒ Group
Returns a new instance of Group.
29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/huey/group.rb', line 29 def initialize(*string_or_array) @bulbs = [] string_or_array = string_or_array.first if string_or_array.first.is_a?(Array) self.bulbs = if string_or_array.first.is_a?(Bulb) string_or_array else string_or_array.collect {|s| Huey::Bulb.find_all(s)}.flatten.uniq end @attributes_to_write = {} Huey::Group.all << self unless self.bulbs.nil? || self.bulbs.empty? self end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(meth, *args, &block) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/huey/group.rb', line 65 def method_missing(meth, *args, &block) if !self.bulbs.empty? && self.bulbs.first.respond_to?(meth) h = {} self.each {|b| h[b.id] = b.send(meth, *args, &block)} h elsif self.bulbs.respond_to?(meth) bulbs.send(meth, *args, &block) else super end end |
Instance Attribute Details
#bulbs ⇒ Object
Returns the value of attribute bulbs.
9 10 11 |
# File 'lib/huey/group.rb', line 9 def bulbs @bulbs end |
#name ⇒ Object
Returns the value of attribute name.
9 10 11 |
# File 'lib/huey/group.rb', line 9 def name @name end |
Class Method Details
.all ⇒ Object
21 22 23 |
# File 'lib/huey/group.rb', line 21 def self.all @all ||= [] end |
Instance Method Details
#each(&block) ⇒ Object
61 62 63 |
# File 'lib/huey/group.rb', line 61 def each(&block) bulbs.each {|b| block.call(b)} end |
#save ⇒ Object Also known as: commit
50 51 52 53 54 |
# File 'lib/huey/group.rb', line 50 def save response = self.collect {|b| b.update(@attributes_to_write)} @attributes_to_write = {} response end |
#update(attrs) ⇒ Object
57 58 59 |
# File 'lib/huey/group.rb', line 57 def update(attrs) self.collect {|b| b.update(attrs)} end |