From 3dbeb1e6792f403717e2ff5de03dba5ce3fc3105 Mon Sep 17 00:00:00 2001 From: Manuel Simon Hirsig Date: Tue, 7 Nov 2017 22:01:30 +0100 Subject: [PATCH] refactoring --- core/cache.lua | 2 +- libs/module.lua | 26 +++++++++++--------------- util/filter.lua | 2 +- 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/core/cache.lua b/core/cache.lua index 78b9eff..2999015 100644 --- a/core/cache.lua +++ b/core/cache.lua @@ -42,7 +42,7 @@ end do local characters = T.empty function M.is_player(name) - return characters[name] and true or false + return not not characters[name] end function handle.LOAD2() characters = realm_data'characters' diff --git a/libs/module.lua b/libs/module.lua index c780872..1059e27 100644 --- a/libs/module.lua +++ b/libs/module.lua @@ -1,40 +1,36 @@ if module then return end local _G, setfenv, setmetatable = getfenv(0), setfenv, setmetatable -local loaded = {} +local environments, exports_data, interfaces = {}, {}, {} local function nop() end local function create_module(name) - local environment, public_fields = setmetatable({}, {__index=_G}), {} - local public_modifier = setmetatable({}, { + local environment, exports = setmetatable({_G=_G, nop=nop}, {__index=_G}), {} + environment.M = setmetatable({}, { __metatable=false, __newindex=function(_, k, v) - environment[k], public_fields[k] = v, v + environment[k], exports[k] = v, v end, }) - environment._G, environment.nop, environment._M, environment.M = _G, nop, environment, public_modifier environment.include = function(name) - local P = loaded[name] or error('No such module.', 2) - for k, v in P.public_fields do + for k, v in exports_data[name] or error('No such module.', 2) do environment[k] = v end end - local interface = setmetatable({}, {__metatable=false, __index=public_fields, __newindex=nop}) - local P = {environment=environment, public_fields=public_fields, interface=interface} - loaded[name] = P - return P + environment._M = environment + interfaces[name] = setmetatable({}, {__metatable=false, __index=exports, __newindex=nop}) + environments[name], exports_data[name] = environment, exports end function module(name) - local defined = loaded[name] and true or false + local defined = not not environments[name] if not defined then create_module(name) end - setfenv(2, loaded[name].environment) + setfenv(2, environments[name]) return defined end function require(name) - local P = loaded[name] - return P and P.interface + return interfaces[name] end \ No newline at end of file diff --git a/util/filter.lua b/util/filter.lua index c18aac5..12069c4 100644 --- a/util/filter.lua +++ b/util/filter.lua @@ -525,7 +525,7 @@ function validator(filter) tinsert(stack, any(args)) end elseif type == 'filter' then - tinsert(stack, validators[i](record) and true or false) + tinsert(stack, not not validators[i](record)) end end return all(stack)