Module:Media navbox
Jump to navigation
Jump to search
Documentation for this module may be created at Module:Media navbox/doc
-- <nowiki>
-- Implements {{Media navbox}}
local p = {}
local navbox = require( 'Module:Navbox' )._navbox
function p.main(frame)
local args = frame:getParent().args
local groupnr = 1
nArgs = {}
nArgs.doc = (isNotEmptyOrNil(args.doc) and args.doc or 'yes')
nArgs.footer = args.footer
nArgs.title = (isNotEmptyOrNil(args.title) and args.title or '[['..args.name..']]')
nArgs.name = args.name
local npcs_cat = (isNotEmptyOrNil(args['characters category']) and args['characters category'] or '')
groupnr = showGroup(args, 'characters', 'Characters', groupnr, npcs_cat)
local locations_cat = (isNotEmptyOrNil(args['locations category']) and args['locations category'] or '')
groupnr = showGroup(args, 'locations', 'Locations', groupnr, locations_cat)
local music_cat = (isNotEmptyOrNil(args['music category']) and args['music category'] or '')
groupnr = showGroup(args, 'music', 'Music', groupnr, music_cat)
local relatedline = getRelated(args)
if isNotEmptyOrNil(relatedline) then
nArgs['gtitle'..groupnr] = (isNotEmptyOrNil(args['related title']) and args['related title'] or 'Miscellaneous')
if string.match(string.lower(relatedline), "navbox") then
nArgs['gtype'..groupnr] = 'subgroup'
end
nArgs['group'..groupnr] = relatedline
groupnr = groupnr + 1
end
local cats = ''
if string.lower(nArgs.doc) == 'yes' then
cats = frame:expandTemplate{ title = 'Ctg', args = { '\'\'' .. args.name .. '\'\'' } }
local templatecats = (isNotEmptyOrNil(categories(args)) and categories(args) or '')
cats = cats..(isNotEmptyOrNil(templatecats) and frame:expandTemplate{title = 'Template only', args = {templatecats}} or '')
end
-- Preventing unwanted documentation from [[Module:Navbox]]
nArgs.doc = 'no'
return navbox(nArgs)..cats
end
function getRelated(args)
local related = ''
related = (isNotEmptyOrNil(args.related) and args.related or '')
if string.lower(args.transcript or '') == 'no' then
--do nothing
else
related = related..(isNotEmptyOrNil(related) and '\n' or '')..' * [[Transcript:'..args.name..'|Transcript]]'
end
return related
end
function showGroup(args, groupname, title, groupnr, cat)
if isNotEmptyOrNil(args[groupname]) then
nArgs['gtitle'..groupnr] = (isNotEmptyOrNil(args[groupname..' title']) and args[groupname..' title'] or title)
if string.match(string.lower(args[groupname]), "navbox") then
nArgs['gtype'..groupnr] = 'subgroup'
end
if isNotEmptyOrNil(cat) then
nArgs['g'..groupnr..'cat1'] = cat
end
nArgs['group'..groupnr] = args[groupname]
groupnr = groupnr + 1
end
return groupnr
end
function categories(args)
local cats = ''
local namewithoutarticle = string.match(args.name,'The (.+)') or
string.match(args.name,'An? (.+)') or
args.name
cats = '[[Category:Media templates|'..namewithoutarticle..']]'
return cats
end
function isNotEmptyOrNil(s)
local bool = false
bool = (s ~= nil and s ~= '')
return bool
end
return p
-- </nowiki>