~rbdr/custom_event_support.lua

Event emitter support for lua
e441e76a — Ben Beltran 10 years ago
One last try at getting the link right
7fcb87ba — Ben Beltran 10 years ago
I forgot how to markdown
5fe2ea69 — Ben Beltran 10 years ago
Fix middleclass link, I think

refs

main
browse  log 

clone

read-only
https://git.sr.ht/~rbdr/custom_event_support.lua
read/write
git@git.sr.ht:~rbdr/custom_event_support.lua

You can also use your local clone with git send-email.

#custom_event_support.lua

This is a lua port of CustomEventSupport.js by @azendal. It's a simple implementation of the observer pattern.

#Dependencies

#Usage

Step 1. Require it somewhere

CustomEvent = require('custom_event')
CustomEventSupport = require('custom_event_support')

Step 2. Include it in a class

local MyClass = class('MyClass')
MyClass:include(CustomEventSupport)

Step 3a. Bind events

-- Bind them to the class
MyClass:bind('click', function (self, ev)
  print("Hey, I caught the event")
end)


-- or bind them to an instance
local my_instance = MyClass:new()
my_instance:bind('click', function (self, ev)
  print("Hey, I caught another event: "..tostring(ev.message))
end)

Step 3b. Dispatch events

-- Dispatch them from the class. You can optionally pass data as a
table.
MyClass:dispatch('click')

-- or dispatch them from an instance
my_instance:dispatch('click', {message = "Instance event!"})

That's it. Enjoy :)