blob: bad1b076127850c3734a790dfb5c59f8f338e128 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
#!/usr/local/bin/ruby -w
# $Id$
# the object allowing us to build complex structures
# this thing contains everything else, including itself
require 'blink/interface'
module Blink
class Component < Blink::Interface
attr_accessor :name
@objects = Hash.new(nil)
#---------------------------------------------------------------
# our components are effectively arrays, with a bit extra functionality
def each
@subobjects.each { |obj|
yield obj
}
end
#---------------------------------------------------------------
#---------------------------------------------------------------
def initialize(*args)
args = Hash[*args]
unless args.include?(:name)
fail TypeError.new("Components must be provided a name")
else
self.name = args[:name]
end
Component[self.name] = self
@subobjects = []
end
#---------------------------------------------------------------
#---------------------------------------------------------------
def push(*objs)
objs.each { |obj|
@subobjects.push(obj)
}
end
#---------------------------------------------------------------
#---------------------------------------------------------------
def to_s
return self.name
end
#---------------------------------------------------------------
end
end
|