Module:Portal parent
| This module depends on the following other modules: |
This module provides the logic for {{portal parent}}.
require('strict')
local p = {}
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local classification = require('Module:Library of Congress Classification')._classification
local default_portals = {
['portals'] = '[[Portal:Portals]]',
['index'] = '[[Portal:Index]]'
}
local unclassified_cat = '[[Category:Unclassified portals]]'
local function class_link_text(class, class_text)
return 'Class ' .. string.upper(class) .. ' - [[Portal:' .. class_text .. '|' .. class_text .. ']]'
end
local function subclass_link_text(subclass_text, class_text)
return 'Subclass ' .. string.upper(subclass_text) .. ' - [[Portal:' .. class_text .. '|' .. class_text .. ']]'
end
function p._portal_parent(args)
local current_title = mw.title.getCurrentTitle()
local pagename = current_title.text
local class_text
local class = args.class
local class_link = ''
local cat = ''
if class then
if class ~= 'none' then
class_text = classification({class = class})
if class_text == pagename then
class_link = default_portals['portals']
else
class_link = class_link_text(class, class_text)
end
end
else
class_link = default_portals['index']
if current_title:inNamespace('Portal') then
cat = unclassified_cat
end
end
local subclasses = {}
table.insert(subclasses, args.subclass1)
table.insert(subclasses, args.subclass2)
local subclass_links = {}
local midclass = yesno(args.midclass) or false
local classification_args = {class = class}
for i, subclass in ipairs(subclasses) do
classification_args['subclass' .. i] = subclass
class_text = classification(classification_args)
local subclass_text
if midclass then
subclass_text = subclass
elseif i == #subclasses then
subclass_text = table.concat(subclasses, '', 1, i)
end
if subclass_text then
table.insert(subclass_links, '<br>' .. subclass_link_text(subclass_text, class_text))
end
end
return class_link .. table.concat(subclass_links) .. cat
end
function p.portal_parent(frame)
return p._portal_parent(getArgs(frame))
end
return p