From ae1d0b65f16b24f2e0db39cb8baef4af57b2a12f Mon Sep 17 00:00:00 2001 From: jussi Date: Sun, 17 Mar 2024 10:38:30 +0200 Subject: Round and pubsub lib. --- examples/resources/lib/pubsub.lua | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 examples/resources/lib/pubsub.lua (limited to 'examples/resources/lib/pubsub.lua') diff --git a/examples/resources/lib/pubsub.lua b/examples/resources/lib/pubsub.lua new file mode 100644 index 0000000..2847d92 --- /dev/null +++ b/examples/resources/lib/pubsub.lua @@ -0,0 +1,34 @@ +local PubSub = {} +PubSub.__index = PubSub + +function PubSub:new() + local object = setmetatable( {}, self ) + + object.signals = {} + + return object +end + +function PubSub:add( name ) + self.signals[ name ] = {} +end + +function PubSub:subscribe( name, func ) + table.insert( self.signals[ name ], func ) +end + +function PubSub:unSubscribe( name, uFunc ) + for i, func in ipairs( self.signals[ name ] ) do + if func == uFunc then + table.remove( self.signals[ name ], i ) + end + end +end + +function PubSub:publish( name, ... ) + for _, func in ipairs( self.signals[ name ] ) do + func( ... ) + end +end + +return PubSub -- cgit v1.2.3