From b524214f659907805437889521f7799980fa130d Mon Sep 17 00:00:00 2001 From: Manuel Simon Hirsig Date: Fri, 15 Jul 2016 22:47:20 +0200 Subject: [PATCH] refactoring --- control.lua | 2 +- core.lua | 105 ++++++++++++++++++------------------- gui.lua | 2 +- modules/cache.lua | 2 +- modules/disenchant.lua | 2 +- modules/history.lua | 2 +- modules/post.lua | 2 +- modules/scan.lua | 2 +- modules/stack.lua | 2 +- modules/tooltip.lua | 2 +- panels/auctions/core.lua | 6 ++- panels/auctions/frames.lua | 2 +- panels/bids/core.lua | 6 ++- panels/bids/frames.lua | 2 +- panels/post/core.lua | 7 ++- panels/post/frames.lua | 2 +- panels/search/core.lua | 6 ++- panels/search/frames.lua | 2 +- tables/auction_listing.lua | 2 +- tables/item_listing.lua | 2 +- tables/listing.lua | 2 +- util/completion.lua | 2 +- util/core.lua | 2 +- util/info.lua | 2 +- util/money.lua | 2 +- util/persistence.lua | 2 +- util/scan_util.lua | 2 +- util/sort.lua | 2 +- 28 files changed, 90 insertions(+), 86 deletions(-) diff --git a/control.lua b/control.lua index b1fde4a..d7c14ff 100644 --- a/control.lua +++ b/control.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.module'control' +local m, public, private = Aux.module'control' private.event_listeners = {} private.threads = {} diff --git a/core.lua b/core.lua index 1c31f84..27d6f3c 100644 --- a/core.lua +++ b/core.lua @@ -19,83 +19,91 @@ do end function Aux_module(name) - local interface, data, private, public, is_public = {}, {}, {}, {}, {} - setmetatable(interface, { + local data, is_public, public_interface, private_interface, public, private = {}, {}, {}, {}, {}, {} + setmetatable(public_interface, { __newindex = function(_, key) - error('Illegal write of attribute "'..key..'" on interface of "'..name..'"!') + error('Illegal write of attribute "'..key..'" on public interface of "'..name..'"!') end, __index = function(_, key) + if data[key] == nil then + error('Access of undeclared attribute "'..key..'" on public interface of "'..name..'"!') + end if is_public[key] then - return data[key] + return Aux_unwrap(data[key]) end end, + __call = function(_, key) + return is_public[key] + end }) - setmetatable(data, { + setmetatable(private_interface, { __newindex = function(_, key, value) - if rawget(data, key) == nil then - error('Assignment of undeclared attribute "'..key..'" of module"'..name..'"!') + if data[key] == nil then + error('Assignment of undeclared attribute "'..key..'" on private interface of "'..name..'"!') end - rawset(data, key, Aux_wrap(value)) + data[key] = Aux_wrap(value) end, __index = function(_, key) - if rawget(data, key) == nil then - error('Access of undeclared attribute "'..key..'" of module"'..name..'"!') - else - return Aux_unwrap(rawget(data, key)) + if data[key] == nil then + error('Access of undeclared attribute "'..key..'" on private interface of "'..name..'"!') end + return Aux_unwrap(data[key]) + end, + __call = function(_, key) + return data[key] ~= nil + end + }) + setmetatable(public, { + __newindex = function(_, key, value) + if data[key] ~= nil then + error('Multiple declarations of "'..key..'" in "'..name..'"!') + end + data[key] = Aux_wrap(value) + is_public[key] = true + end, + __index = function(_, key) + error('Illegal read of attribute "'..key..'" on public keyword in "'..name..'"!') end, }) setmetatable(private, { __newindex = function(_, key, value) - if rawget(data, key) ~= nil then - error('Multiple declarations of "'..key..'" in module"'..name..'"!') + if data[key] ~= nil then + error('Multiple declarations of "'..key..'" in "'..name..'"!') end - rawset(data, key, Aux_wrap(value)) + data[key] = Aux_wrap(value) is_public[key] = nil end, - __index = function() - error('Illegal read on "private" keyword in"'..name..'"!') + __index = function(_, key) + error('Illegal read of attribute "'..key..'" on private keyword in "'..name..'"!') end, }) - setmetatable(public, { - __newindex = function(_, key, value) - if rawget(data, key) ~= nil then - error('Multiple declarations of "'..key..'" in module"'..name..'"!') - end - rawset(data, key, Aux_wrap(value)) - is_public[key] = true - end, - __index = function() - error('Illegal read on "public" keyword in"'..name..'"!') - end, - }) - return { interface, data, private, public } + return { public_interface, private_interface, public, private } end function Aux_addon(name) - local interface, data, private, public = unpack(Aux_module(name)) + local public_interface, private_interface, public, private = unpack(Aux_module(name)) - private.modules = { interface } + private.modules = { public_interface } function public.module(name) local module = Aux_module(name) - local interface = tremove(module, 1) - tinsert(data.modules, interface) - public[name] = interface + local public_interface = tremove(module, 1) + tinsert(private_interface.modules, public_interface) + public[name] = public_interface return unpack(module) end - return { interface, data, private, public } + return { public_interface, private_interface, public, private } end local addon = Aux_addon('Aux') Aux = tremove(addon, 1) -local m, private, public = unpack(addon) +local m, public, private = unpack(addon) private.tabs = {} function public.tab(index, name) local ret = { m.module(name) } - m.tabs[index] = m.modules[name] + m.tabs[index] = m[name] return unpack(ret) end @@ -118,9 +126,7 @@ function public.on_load() tab_group:create_tab('Post') tab_group:create_tab('Auctions') tab_group:create_tab('Bids') - tab_group.on_select = function() - m.on_tab_click() - end + tab_group.on_select = m.on_tab_click public.tab_group = tab_group end @@ -154,7 +160,7 @@ function public.on_load() end for _, module in m.modules do - if module.LOAD then + if module('LOAD') then module.LOAD() end end @@ -376,28 +382,17 @@ function private.on_auction_house_closed() end function private.on_tab_click(index) + local y = m.active_tab if m.active_tab then m.tabs[m.active_tab].CLOSE() end + AuxSearchFrame:Hide() AuxPostFrame:Hide() AuxAuctionsFrame:Hide() AuxBidsFrame:Hide() m.tabs[index].OPEN() --- if index == 1 then --- AuxSearchFrame:Show() --- Aux.search_frame.on_open() --- elseif index == 2 then --- AuxPostFrame:Show() --- Aux.post_frame.on_open() --- elseif index == 3 then --- AuxAuctionsFrame:Show() --- Aux.auctions_frame.on_open() --- elseif index == 4 then --- AuxBidsFrame:Show() --- Aux.bids_frame.on_open() --- end m.active_tab = index end diff --git a/gui.lua b/gui.lua index 96ea256..9a9e549 100644 --- a/gui.lua +++ b/gui.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.module'gui' +local m, public, private = Aux.module'gui' --TSM.designDefaults = { -- frameColors = { diff --git a/modules/cache.lua b/modules/cache.lua index adea6b3..6b4e464 100644 --- a/modules/cache.lua +++ b/modules/cache.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.module'cache' +local m, public, private = Aux.module'cache' local MIN_ITEM_ID, MAX_ITEM_ID = 1, 30000 local items_schema = {'record', '#', {name='string'}, {quality='number'}, {level='number'}, {class='string'}, {subclass='string'}, {slot='string'}, {max_stack='number'}, {texture='string'}} diff --git a/modules/disenchant.lua b/modules/disenchant.lua index 0db25d6..ba47097 100644 --- a/modules/disenchant.lua +++ b/modules/disenchant.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.module'disenchant' +local m, public, private = Aux.module'disenchant' function public.source(item_id) diff --git a/modules/history.lua b/modules/history.lua index 8cfc654..778e169 100644 --- a/modules/history.lua +++ b/modules/history.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.module'history' +local m, public, private = Aux.module'history' local history_schema = {'record', '#', {next_push='number'}, {daily_min_buyout='number'}, {daily_max_price='number'}, {data_points={'list', ';', {'record', '@', {market_value='number'}, {time='number'}}}}} private.value_cache = {} diff --git a/modules/post.lua b/modules/post.lua index 3fcc18d..253141b 100644 --- a/modules/post.lua +++ b/modules/post.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.module'post' +local m, public, private = Aux.module'post' local state diff --git a/modules/scan.lua b/modules/scan.lua index 27f5aad..03e8556 100644 --- a/modules/scan.lua +++ b/modules/scan.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.module'scan' +local m, public, private = Aux.module'scan' local PAGE_SIZE = 50 diff --git a/modules/stack.lua b/modules/stack.lua index 6011649..c77cab5 100644 --- a/modules/stack.lua +++ b/modules/stack.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.module'stack' +local m, public, private = Aux.module'stack' local state diff --git a/modules/tooltip.lua b/modules/tooltip.lua index c4e7e2c..b0be082 100644 --- a/modules/tooltip.lua +++ b/modules/tooltip.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.module'tooltip' +local m, public, private = Aux.module'tooltip' aux_tooltip_value = true diff --git a/panels/auctions/core.lua b/panels/auctions/core.lua index 3bdf388..cddcdb8 100644 --- a/panels/auctions/core.lua +++ b/panels/auctions/core.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.tab(3, 'auctions_frame') +local m, public, private = Aux.tab(3, 'auctions_frame') local auction_records @@ -7,14 +7,16 @@ function public.FRAMES(f) end function public.LOAD() - m.create_frames(m, private, public) + m.create_frames(m, public, private) end function public.OPEN() + AuxAuctionsFrame:Show() m.scan_auctions() end function public.CLOSE() + AuxAuctionsFrame:Hide() end function private.update_listing() diff --git a/panels/auctions/frames.lua b/panels/auctions/frames.lua index af23de7..055a7d4 100644 --- a/panels/auctions/frames.lua +++ b/panels/auctions/frames.lua @@ -1,4 +1,4 @@ -Aux.auctions_frame.FRAMES(function(m, private, public) +Aux.auctions_frame.FRAMES(function(m, public, private) private.listing = Aux.auction_listing.CreateAuctionResultsTable(AuxAuctionsFrameListing, Aux.auction_listing.auctions_config) m.listing:SetSort(1,2,3,4,5,6,7,8) m.listing:Reset() diff --git a/panels/bids/core.lua b/panels/bids/core.lua index e2a1b6b..60bf645 100644 --- a/panels/bids/core.lua +++ b/panels/bids/core.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.tab(4, 'bids_frame') +local m, public, private = Aux.tab(4, 'bids_frame') local auction_records @@ -7,14 +7,16 @@ function public.FRAMES(f) end function public.LOAD() - m.create_frames(m, private, public) + m.create_frames(m, public, private) end function public.OPEN() + AuxBidsFrame:Show() m.scan_bids() end function public.CLOSE() + AuxBidsFrame:Hide() end function private.update_listing() diff --git a/panels/bids/frames.lua b/panels/bids/frames.lua index ab883f4..835b077 100644 --- a/panels/bids/frames.lua +++ b/panels/bids/frames.lua @@ -1,4 +1,4 @@ -Aux.bids_frame.FRAMES(function(m, private, public) +Aux.bids_frame.FRAMES(function(m, public, private) private.listing = Aux.auction_listing.CreateAuctionResultsTable(AuxBidsFrameListing, Aux.auction_listing.bids_config) m.listing:SetSort(1,2,3,4,5,6,7,8) m.listing:Reset() diff --git a/panels/post/core.lua b/panels/post/core.lua index caa1f7c..255ef21 100644 --- a/panels/post/core.lua +++ b/panels/post/core.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.tab(2, 'post_frame') +local m, public, private = Aux.tab(2, 'post_frame') local DURATION_4, DURATION_8, DURATION_24 = 120, 480, 1440 local settings_schema = {'record', '#', {stack_size='number'}, {duration='number'}, {start_price='number'}, {buyout_price='number'}, {hidden='boolean'}} @@ -15,10 +15,12 @@ function public.FRAMES(f) end function public.LOAD() - m.create_frames(m, private, public) + m.create_frames(m, public, private) end function public.OPEN() + AuxPostFrame:Show() + m.deposit:SetText('Deposit: '..Aux.money.to_string(0, nil, nil, nil, Aux.gui.inline_color({255, 254, 250, 1}))) m.set_unit_start_price(0) @@ -31,6 +33,7 @@ end function public.CLOSE() m.selected_item = nil + AuxPostFrame:Hide() end function private.default_settings() diff --git a/panels/post/frames.lua b/panels/post/frames.lua index b4ad8c1..decbe08 100644 --- a/panels/post/frames.lua +++ b/panels/post/frames.lua @@ -1,4 +1,4 @@ -Aux.post_frame.FRAMES(function(m, private, public) +Aux.post_frame.FRAMES(function(m, public, private) Aux.gui.vertical_line(AuxPostFrameContent, 219) AuxPostParametersItem:EnableMouse() diff --git a/panels/search/core.lua b/panels/search/core.lua index cb7cb85..79ea3bd 100644 --- a/panels/search/core.lua +++ b/panels/search/core.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.tab(1, 'search_frame') +local m, public, private = Aux.tab(1, 'search_frame') aux_favorite_searches = {} aux_recent_searches = {} @@ -74,18 +74,20 @@ function public.FRAMES(f) end function public.LOAD() - m.create_frames(m, private, public) + m.create_frames(m, public, private) m:disable_sniping() m.update_search() m.update_tab(m.SAVED) end function public.OPEN() + AuxSearchFrame:Show() m.update_search_listings() end function public.CLOSE() m.results_listing:SetSelectedRecord() + AuxSearchFrame:Hide() end function private.update_search_listings() diff --git a/panels/search/frames.lua b/panels/search/frames.lua index 4c88065..a14f7b7 100644 --- a/panels/search/frames.lua +++ b/panels/search/frames.lua @@ -1,4 +1,4 @@ -Aux.search_frame.FRAMES(function(m, private, public) +Aux.search_frame.FRAMES(function(m, public, private) do local btn = Aux.gui.button(AuxSearchFrame, 22) btn:SetPoint('TOPLEFT', 5, -8) diff --git a/tables/auction_listing.lua b/tables/auction_listing.lua index c2c11ee..027bd9d 100644 --- a/tables/auction_listing.lua +++ b/tables/auction_listing.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.module'auction_listing' +local m, public, private = Aux.module'auction_listing' local RT_COUNT = 1 local HEAD_HEIGHT = 27 diff --git a/tables/item_listing.lua b/tables/item_listing.lua index ff48985..0bec9c7 100644 --- a/tables/item_listing.lua +++ b/tables/item_listing.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.module'item_listing' +local m, public, private = Aux.module'item_listing' local ROW_HEIGHT = 38 diff --git a/tables/listing.lua b/tables/listing.lua index c5eb99f..7d5df4b 100644 --- a/tables/listing.lua +++ b/tables/listing.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.module'listing' +local m, public, private = Aux.module'listing' local ST_COUNT = 0 diff --git a/util/completion.lua b/util/completion.lua index 289fc75..651826b 100644 --- a/util/completion.lua +++ b/util/completion.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.module'completion' +local m, public, private = Aux.module'completion' function public:complete() if IsControlKeyDown() then -- TODO problem is ctrl-v, maybe find a better solution diff --git a/util/core.lua b/util/core.lua index 65a778d..955ebae 100644 --- a/util/core.lua +++ b/util/core.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.module'util' +local m, public, private = Aux.module'util' function public.pass() end diff --git a/util/info.lua b/util/info.lua index cc7208e..e2c02fc 100644 --- a/util/info.lua +++ b/util/info.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.module'info' +local m, public, private = Aux.module'info' local TOOLTIP_LENGTH = 30 diff --git a/util/money.lua b/util/money.lua index 9f7554d..c5a9243 100644 --- a/util/money.lua +++ b/util/money.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.module'money' +local m, public, private = Aux.module'money' local GOLD_TEXT = '|cffffd70ag|r' local SILVER_TEXT = '|cffc7c7cfs|r' diff --git a/util/persistence.lua b/util/persistence.lua index f81b50c..efd9789 100644 --- a/util/persistence.lua +++ b/util/persistence.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.module'persistence' +local m, public, private = Aux.module'persistence' aux_datasets = {} diff --git a/util/scan_util.lua b/util/scan_util.lua index 0cf802e..1f07d1f 100644 --- a/util/scan_util.lua +++ b/util/scan_util.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.module'scan_util' +local m, public, private = Aux.module'scan_util' function public.default_filter(str) return { diff --git a/util/sort.lua b/util/sort.lua index 5133b44..f02a8a0 100644 --- a/util/sort.lua +++ b/util/sort.lua @@ -1,4 +1,4 @@ -local m, private, public = Aux.module'sort' +local m, public, private = Aux.module'sort' public.LT = {} public.EQ = {}