From b7625791b1405721a4a9d9d7392328a6a372c2ef Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Sun, 22 Jan 2012 19:10:13 +0000 Subject: util.helpers: After nearly 'fixing' this code, I conclude it instead only deserves a bigger smile --- util/helpers.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'util') diff --git a/util/helpers.lua b/util/helpers.lua index 11356176..a8c8c612 100644 --- a/util/helpers.lua +++ b/util/helpers.lua @@ -28,7 +28,7 @@ function log_events(events, name, logger) end function revert_log_events(events) - events.fire_event, events[events.fire_event] = events[events.fire_event], nil; -- :) + events.fire_event, events[events.fire_event] = events[events.fire_event], nil; -- :)) end function get_upvalue(f, get_name) -- cgit v1.2.3 From f7528a035b19a5a9278ec3b4bbfab86ba8e600ed Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Sun, 22 Jan 2012 23:59:19 +0000 Subject: util.set: Accept nil to add_list() --- util/set.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'util') diff --git a/util/set.lua b/util/set.lua index e4cc2dff..050446ec 100644 --- a/util/set.lua +++ b/util/set.lua @@ -82,8 +82,10 @@ function new(list) end function set:add_list(list) - for _, item in ipairs(list) do - items[item] = true; + if list then + for _, item in ipairs(list) do + items[item] = true; + end end end -- cgit v1.2.3 From 92cd4ec3f7782e817c6a967dce73495686ef5595 Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Mon, 23 Jan 2012 00:00:10 +0000 Subject: util.iterators: Make a standard library (no longer injects into global namespace) --- util/iterators.lua | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) (limited to 'util') diff --git a/util/iterators.lua b/util/iterators.lua index aa0b172b..fb89f4a5 100644 --- a/util/iterators.lua +++ b/util/iterators.lua @@ -8,8 +8,10 @@ --[[ Iterators ]]-- +local it = {}; + -- Reverse an iterator -function reverse(f, s, var) +function it.reverse(f, s, var) local results = {}; -- First call the normal iterator @@ -34,12 +36,12 @@ end local function _keys_it(t, key) return (next(t, key)); end -function keys(t) +function it.keys(t) return _keys_it, t; end -- Iterate only over values in a table -function values(t) +function it.values(t) local key, val; return function (t) key, val = next(t, key); @@ -48,7 +50,7 @@ function values(t) end -- Given an iterator, iterate only over unique items -function unique(f, s, var) +function it.unique(f, s, var) local set = {}; return function () @@ -65,7 +67,7 @@ function unique(f, s, var) end --[[ Return the number of items an iterator returns ]]-- -function count(f, s, var) +function it.count(f, s, var) local x = 0; while true do @@ -79,7 +81,7 @@ function count(f, s, var) end -- Return the first n items an iterator returns -function head(n, f, s, var) +function it.head(n, f, s, var) local c = 0; return function (s, var) if c >= n then @@ -91,7 +93,7 @@ function head(n, f, s, var) end -- Skip the first n items an iterator returns -function skip(n, f, s, var) +function it.skip(n, f, s, var) for i=1,n do var = f(s, var); end @@ -99,7 +101,7 @@ function skip(n, f, s, var) end -- Return the last n items an iterator returns -function tail(n, f, s, var) +function it.tail(n, f, s, var) local results, count = {}, 0; while true do local ret = { f(s, var) }; @@ -121,13 +123,13 @@ function tail(n, f, s, var) end local function _range_iter(max, curr) if curr < max then return curr + 1; end end -function range(x, y) +function it.range(x, y) if not y then x, y = 1, x; end -- Default to 1..x if y not given return _range_iter, y, x-1; end -- Convert the values returned by an iterator to an array -function it2array(f, s, var) +function it.to_array(f, s, var) local t, var = {}; while true do var = f(s, var); @@ -139,7 +141,7 @@ end -- Treat the return of an iterator as key,value pairs, -- and build a table -function it2table(f, s, var) +function it.to_table(f, s, var) local t, var2 = {}; while true do var, var2 = f(s, var); @@ -149,3 +151,4 @@ function it2table(f, s, var) return t; end +return it; -- cgit v1.2.3 From fe16dde20be2082bb44788113d416ecb35955ad1 Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Thu, 15 Mar 2012 19:09:24 +0000 Subject: loggingmanager, util.logger: Remove name sinks and the ability to filter logs by source name (lots of code, hardly used if at all, and possibly broken) --- util/logger.lua | 31 +------------------------------ 1 file changed, 1 insertion(+), 30 deletions(-) (limited to 'util') diff --git a/util/logger.lua b/util/logger.lua index c3bf3992..4fadb4b9 100644 --- a/util/logger.lua +++ b/util/logger.lua @@ -13,8 +13,7 @@ local ipairs, pairs, setmetatable = ipairs, pairs, setmetatable; module "logger" -local name_sinks, level_sinks = {}, {}; -local name_patterns = {}; +local level_sinks = {}; local make_logger; @@ -46,17 +45,7 @@ function make_logger(source_name, level) level_sinks[level] = level_handlers; end - local source_handlers = name_sinks[source_name]; - local logger = function (message, ...) - if source_handlers then - for i = 1,#source_handlers do - if source_handlers[i](source_name, level, message, ...) == false then - return; - end - end - end - for i = 1,#level_handlers do level_handlers[i](source_name, level, message, ...); end @@ -66,14 +55,12 @@ function make_logger(source_name, level) end function reset() - for k in pairs(name_sinks) do name_sinks[k] = nil; end for level, handler_list in pairs(level_sinks) do -- Clear all handlers for this level for i = 1, #handler_list do handler_list[i] = nil; end end - for k in pairs(name_patterns) do name_patterns[k] = nil; end end function add_level_sink(level, sink_function) @@ -84,22 +71,6 @@ function add_level_sink(level, sink_function) end end -function add_name_sink(name, sink_function, exclusive) - if not name_sinks[name] then - name_sinks[name] = { sink_function }; - else - name_sinks[name][#name_sinks[name] + 1] = sink_function; - end -end - -function add_name_pattern_sink(name_pattern, sink_function, exclusive) - if not name_patterns[name_pattern] then - name_patterns[name_pattern] = { sink_function }; - else - name_patterns[name_pattern][#name_patterns[name_pattern] + 1] = sink_function; - end -end - _M.new = make_logger; return _M; -- cgit v1.2.3 From 97f896be36bb265ae0bae619e6e580b88bc704bd Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Tue, 24 Apr 2012 18:53:50 +0100 Subject: util.debug: Turn into a real-ish module ('debugx'), and require you call use() to override debug.traceback() --- util/debug.lua | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'util') diff --git a/util/debug.lua b/util/debug.lua index 2170a6d1..aeb710d7 100644 --- a/util/debug.lua +++ b/util/debug.lua @@ -8,7 +8,9 @@ local censored_names = { pwd = true; }; -local function get_locals_table(level) +module("debugx", package.seeall); + +function get_locals_table(level) level = level + 1; -- Skip this function itself local locals = {}; for local_num = 1, math.huge do @@ -19,7 +21,7 @@ local function get_locals_table(level) return locals; end -local function get_upvalues_table(func) +function get_upvalues_table(func) local upvalues = {}; if func then for upvalue_num = 1, math.huge do @@ -31,7 +33,7 @@ local function get_upvalues_table(func) return upvalues; end -local function string_from_var_table(var_table, max_line_len, indent_str) +function string_from_var_table(var_table, max_line_len, indent_str) local var_string = {}; local col_pos = 0; max_line_len = max_line_len or math.huge; @@ -88,7 +90,7 @@ function get_traceback_table(thread, start_level) return levels; end -function debug.traceback(thread, message, level) +function traceback(thread, message, level) if type(thread) ~= "thread" then thread, message, level = coroutine.running(), thread, message; end @@ -136,3 +138,9 @@ function debug.traceback(thread, message, level) end return message.."stack traceback:\n"..table.concat(lines, "\n"); end + +function use() + debug.traceback = traceback; +end + +return _M; -- cgit v1.2.3 From cb0212542b4c63567d420538eb72c1f8b9623076 Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Tue, 24 Apr 2012 18:54:34 +0100 Subject: util.helpers: Add show_events(), to show the events and handlers in a util.events object --- util/helpers.lua | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'util') diff --git a/util/helpers.lua b/util/helpers.lua index a8c8c612..ad23dd79 100644 --- a/util/helpers.lua +++ b/util/helpers.lua @@ -6,6 +6,8 @@ -- COPYING file in the source package for more information. -- +local debug = require "util.debug"; + module("helpers", package.seeall); -- Helper functions for debugging @@ -31,6 +33,33 @@ function revert_log_events(events) events.fire_event, events[events.fire_event] = events[events.fire_event], nil; -- :)) end +function show_events(events) + local event_handlers = events._handlers; + local events_array = {}; + local event_handler_arrays = {}; + for event in pairs(events._event_map) do + local handlers = event_handlers[event]; + table.insert(events_array, event); + local handler_strings = {}; + for i, handler in ipairs(handlers) do + local upvals = debug.string_from_var_table(debug.get_upvalues_table(handler)); + handler_strings[i] = " "..i..": "..tostring(handler)..(upvals and ("\n "..upvals) or ""); + end + event_handler_arrays[event] = handler_strings; + end + table.sort(events_array); + local i = 1; + repeat + local handlers = event_handler_arrays[events_array[i]]; + for j=#handlers, 1, -1 do + table.insert(events_array, i+1, handlers[j]); + end + if i > 1 then events_array[i] = "\n"..events_array[i]; end + i = i + #handlers + 1 + until i == #events_array; + return table.concat(events_array, "\n"); +end + function get_upvalue(f, get_name) local i, name, value = 0; repeat -- cgit v1.2.3