Module:Category handler: Difference between revisions

m
1 revision imported from loginwiki:Module:Category_handler: Updating template with latest edits from loginwiki
(Rewrite this using Module:Middleclass. It is now more efficient: it only parses parameters when necessary, and caches data with mw.loadData where it can.)
(username removed)
m (1 revision imported from loginwiki:Module:Category_handler: Updating template with latest edits from loginwiki)
 
(22 intermediate revisions by 21 users not shown)
Line 15:
 
-- Load required modules
local class = require('Module:Middleclass').class
local yesno = require('Module:Yesno')
 
Line 47 ⟶ 46:
--------------------------------------------------------------------------------
 
local CategoryHandler = class('CategoryHandler'){}
CategoryHandler.__index = CategoryHandler
 
function CategoryHandler:initialize.new(data, args)
local obj = setmetatable({ _data = data, _args = args }, CategoryHandler)
self._data = data
self._args = args
-- Set the title object
do
local pagename = selfobj:parameter('demopage')
local success, titleObj = pcall(mw.title.new, pagename)
if pagename then
success, titleObj = pcall(mw.title.new, pagename)
end
if success and titleObj then
selfobj.title = titleObj
if titleObj == mw.title.getCurrentTitle() then
obj._usesCurrentTitle = true
end
else
selfobj.title = mw.title.getCurrentTitle()
selfobj._usesCurrentTitle = true
end
end
Line 67 ⟶ 72:
-- Set suppression parameter values
for _, key in ipairs{'nocat', 'categories'} do
local value = selfobj:parameter(key)
value = trimWhitespace(value, true)
selfobj['_' .. key] = yesno(value)
end
do
local subpage = selfobj:parameter('subpage')
local category2 = selfobj:parameter('category2')
if type(subpage) == 'string' then
subpage = mw.ustring.lower(subpage)
Line 80 ⟶ 85:
subpage = mw.ustring.lower(category2)
end
selfobj._subpage = trimWhitespace(subpage, true)
selfobj._category2 = trimWhitespace(category2) -- don't remove blank values
end
return obj
end
 
Line 239 ⟶ 245:
function p._main(args, data)
data = data or mw.loadData('Module:Category handler/data')
local handler = CategoryHandler:.new(data, args)
if handler:isSuppressed() then
return nil
(username removed)