summaryrefslogtreecommitdiff
path: root/lib/observer.rb
diff options
context:
space:
mode:
authorgsinclair <gsinclair@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-02-03 13:52:21 +0000
committergsinclair <gsinclair@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-02-03 13:52:21 +0000
commitbed06ae87de4c981f84e15356dc8ea90e48b1b6c ()
tree42bfa0e208c02baf0e5462e9e7cc4ee6015d23a8 /lib/observer.rb
parent41bb73b28a82a957464745e6111b3923e00cd0ac (diff)
Added RDoc comments.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3437 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--lib/observer.rb150
1 files changed, 147 insertions, 3 deletions
@@ -1,8 +1,123 @@
-# Observable Mixin
-#
-# Observers must respond to update
module Observable
def add_observer(observer)
@observer_peers = [] unless defined? @observer_peers
unless observer.respond_to? :update
@@ -10,12 +125,25 @@ module Observable
end
@observer_peers.push observer
end
def delete_observer(observer)
@observer_peers.delete observer if defined? @observer_peers
end
def delete_observers
@observer_peers.clear if defined? @observer_peers
end
def count_observers
if defined? @observer_peers
@observer_peers.size
@@ -23,9 +151,18 @@ module Observable
0
end
end
def changed(state=true)
@observer_state = state
end
def changed?
if defined? @observer_state and @observer_state
true
@@ -33,6 +170,12 @@ module Observable
false
end
end
def notify_observers(*arg)
if defined? @observer_state and @observer_state
if defined? @observer_peers
@@ -43,4 +186,5 @@ module Observable
@observer_state = false
end
end
end