| 1 | -- Prosody IM |
| 2 | -- Copyright (C) 2008-2010 Matthew Wild |
| 3 | -- Copyright (C) 2008-2010 Waqas Hussain |
| 4 | -- |
| 5 | -- This project is MIT/X11 licensed. Please see the |
| 6 | -- COPYING file in the source package for more information. |
| 7 | -- |
| 8 | |
| 9 | module("helpers", package.seeall); |
| 10 | |
| 11 | -- Helper functions for debugging |
| 12 | |
| 13 | local log = require "util.logger".init("util.debug"); |
| 14 | |
| 15 | function log_events(events, name, logger) |
| 16 | local f = events.fire_event; |
| 17 | if not f then |
| 18 | error("Object does not appear to be a util.events object"); |
| 19 | end |
| 20 | logger = logger or log; |
| 21 | name = name or tostring(events); |
| 22 | function events.fire_event(event, ...) |
| 23 | logger("debug", "%s firing event: %s", name, event); |
| 24 | return f(event, ...); |
| 25 | end |
| 26 | events[events.fire_event] = f; |
| 27 | return events; |
| 28 | end |
| 29 | |
| 30 | function revert_log_events(events) |
| 31 | events.fire_event, events[events.fire_event] = events[events.fire_event], nil; -- :) |
| 32 | end |
| 33 | |
| 34 | function get_upvalue(f, get_name) |
| 35 | local i, name, value = 0; |
| 36 | repeat |
| 37 | i = i + 1; |
| 38 | name, value = debug.getupvalue(f, i); |
| 39 | until name == get_name or name == nil; |
| 40 | return value; |
| 41 | end |
| 42 | |
| 43 | return _M; |