Module:Category handler: Difference between revisions
Content added Content deleted
(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.) |
(apply changes from sandbox as requested by User:Jackmcbarn which removes middleclass dependency) |
||
Line 15: | Line 15: | ||
-- Load required modules |
-- Load required modules |
||
local class = require('Module:Middleclass').class |
|||
local yesno = require('Module:Yesno') |
local yesno = require('Module:Yesno') |
||
Line 47: | Line 46: | ||
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
||
local CategoryHandler = |
local CategoryHandler = {} |
||
CategoryHandler.__index = CategoryHandler |
|||
function CategoryHandler |
function CategoryHandler.new(data, args) |
||
local obj = setmetatable({ _data = data, _args = args }, CategoryHandler) |
|||
self._data = data |
|||
self._args = args |
|||
-- Set the title object |
-- Set the title object |
||
do |
do |
||
local pagename = |
local pagename = obj:parameter('demopage') |
||
local success, titleObj = pcall(mw.title.new, pagename) |
local success, titleObj = pcall(mw.title.new, pagename) |
||
if success and titleObj then |
if success and titleObj then |
||
obj.title = titleObj |
|||
else |
else |
||
obj.title = mw.title.getCurrentTitle() |
|||
obj._usesCurrentTitle = true |
|||
end |
end |
||
end |
end |
||
Line 67: | Line 66: | ||
-- Set suppression parameter values |
-- Set suppression parameter values |
||
for _, key in ipairs{'nocat', 'categories'} do |
for _, key in ipairs{'nocat', 'categories'} do |
||
local value = |
local value = obj:parameter(key) |
||
value = trimWhitespace(value, true) |
value = trimWhitespace(value, true) |
||
obj['_' .. key] = yesno(value) |
|||
end |
end |
||
do |
do |
||
local subpage = |
local subpage = obj:parameter('subpage') |
||
local category2 = |
local category2 = obj:parameter('category2') |
||
if type(subpage) == 'string' then |
if type(subpage) == 'string' then |
||
subpage = mw.ustring.lower(subpage) |
subpage = mw.ustring.lower(subpage) |
||
Line 80: | Line 79: | ||
subpage = mw.ustring.lower(category2) |
subpage = mw.ustring.lower(category2) |
||
end |
end |
||
obj._subpage = trimWhitespace(subpage, true) |
|||
obj._category2 = trimWhitespace(category2) -- don't remove blank values |
|||
end |
end |
||
return obj |
|||
end |
end |
||
Line 239: | Line 239: | ||
function p._main(args, data) |
function p._main(args, data) |
||
data = data or mw.loadData('Module:Category handler/data') |
data = data or mw.loadData('Module:Category handler/data') |
||
local handler = CategoryHandler |
local handler = CategoryHandler.new(data, args) |
||
if handler:isSuppressed() then |
if handler:isSuppressed() then |
||
return nil |
return nil |