Callbacks module extended

Now supports callback methods as well observer classes

levels example now uses callback methods

register,deregister now alias add/remove observer methods

minor version bump
This commit is contained in:
2023-07-27 14:55:00 +01:00
parent 155cbe019a
commit 4fdebc8178
5 changed files with 32 additions and 26 deletions

View File

@@ -43,7 +43,7 @@ module OBSWS
def add_observer(observer)
observer = [observer] if !observer.respond_to? :each
observer.each { |o| observers << o }
observer.each { |o| observers << o unless observers.include? o }
end
def remove_observer(observer)
@@ -52,15 +52,18 @@ module OBSWS
def notify_observers(event, data)
observers.each do |o|
if o.respond_to? "on_#{snakecase(event)}"
if data.empty?
o.send("on_#{snakecase(event)}")
else
o.send("on_#{snakecase(event)}", data)
if o.is_a? Method
if o.name.to_s == "on_#{snakecase(event)}"
data.empty? ? o.call : o.call(data)
end
elsif o.respond_to? "on_#{snakecase(event)}"
data.empty? ? o.send("on_#{snakecase(event)}") : o.send("on_#{snakecase(event)}", data)
end
end
end
alias_method :register, :add_observer
alias_method :deregister, :remove_observer
end
class Client

View File

@@ -7,11 +7,11 @@ module OBSWS
end
def minor
3
4
end
def patch
3
0
end
def to_a