This is the module sandbox page for Module:Professional wrestling profiles (diff). See also the companion subpage for test cases (run). |
Implements {{Professional wrestling profiles}}, and a family of related templates, including Template:Chikara profile, Template:Dragongateusa profile, Template:Gfw profile, Template:NJPW profile, and Template:Roh roster.
Tracking category
editlocal data = {
{"cagematch", "http://www.cagematch.net/?id=2&nr=$1", "Cagematch.net", "P2728"},
{"wrestlingdata", "http://wrestlingdata.com/index.php?befehl=bios&wrestler=$1", "Wrestlingdata.com", "P2764"},
{"iwd", "http://www.profightdb.com/wrestlers/$1.html", "Internet Wrestling Database", "P2829"}
}
local alone = {
{"http://www.cagematch.net/?id=2&nr=$1", "profile at Cagematch.net", "P2728", nil},
{"http://www.wrestling-titles.com/personalities/$1/", "profile at Wrestling-Titles.com", nil, "Wrestling Titles template with no id set"},
{"http://www.rohwrestling.com/wrestlers/roster/$1", "[[Ring of Honor]] profile", nil, nil},
{"http://www.njpw.co.jp/english/data/detail_profile.php?f=$1", "[[New Japan Pro Wrestling]] profile", nil, nil}
}
local p = {}
local categories = {}
local entity = mw.wikibase.getEntityObject()
local yesno = require('Module:Yesno')
local getArgs = require('Module:Arguments').getArgs
function getValue(param,wd)
local para,wd = param,wd
if para then
value = para
elseif entity then
if entity.claims[wd] then
local mainsnak = entity.claims[wd][1].mainsnak
if mainsnak.snaktype == 'value' then
value = mainsnak.datavalue.value
end
end
end
return value or ''
end
function p._profiles(args)
local title = mw.title.getCurrentTitle()
local name = args.name or string.gsub(title.text, " %b()", "")
local prefix = ''
local text
local letter = string.sub(name,-1)
local out = {}
for _,v in ipairs(data) do
local param, link, title, wdid = unpack(v)
--local param = args[v[1]]
--local link = v[2]
--local wdid = v[3]
param = args[param]
value = getValue(param,wdid)
if value ~='' then
out[#out+1] = "[" .. string.gsub(link, "$1",value) .. ' ' .. title .. "]"
end
value = ''
end
if letter=='s' then
text = name .. "'"
else
text = name .. "'s"
end
if out[1] then
prefix = text .. ' profile at '
end
return prefix .. mw.text.listToText(out, ', ', ', ' )
end
function p.profiles(frame)
local args = getArgs(frame)
return p._profiles(args)
end
return p