Module:Professional wrestling profiles
Appearance
| This module depends on the following other modules: |
This module implements {{Professional wrestling profiles}}. See template page for documentation.
Tracking category
local getArgs = require('Module:Arguments').getArgs
local p = {}
local profiles = {
{
key = "wwe",
name = "WWE",
person = { url = "https://www.wwe.com/superstars/%s", wikidata = "P2857" },
team = { url = "https://www.wwe.com/superstars/%s", wikidata = "P2857" },
stable = { url = "https://www.wwe.com/superstars/%s", wikidata = "P2857" }
},
{
key = "roh",
name = "Ring of Honor",
person = { url = "https://www.ringofhonor.com/active-roster/%s", wikidata = nil },
team = { url = nil, wikidata = nil },
stable = { url = nil, wikidata = nil }
},
{
key = "njpw",
name = "New Japan Pro-Wrestling",
person = { url = "https://www.njpw1972.com/profile/%s", wikidata = nil },
team = { url = nil, wikidata = nil },
stable = { url = nil, wikidata = nil }
},
{
key = "cagematch",
name = "Cagematch",
person = { url = "https://www.cagematch.net/?id=2&nr=%s", wikidata = "P2728" },
team = { url = "https://www.cagematch.net/?id=28&nr=%s", wikidata = "P2939" },
stable = { url = "https://www.cagematch.net/?id=29&nr=%s", wikidata = "P3042" }
},
{
key = "wrestlingdata",
name = "Wrestlingdata",
person = { url = "https://www.wrestlingdata.com/index.php?befehl=bios&wrestler=%s", wikidata = "P2764" },
team = { url = "https://www.wrestlingdata.com/index.php?befehl=stables&stable=%s", wikidata = nil },
stable = { url = "https://www.wrestlingdata.com/index.php?befehl=stables&stable=%s", wikidata = nil }
},
{
key = "iwd",
name = "Internet Wrestling Database",
person = { url = "http://www.profightdb.com/wrestlers/%s.html", wikidata = "P2829" },
team = { url = nil, wikidata = nil },
stable = { url = nil, wikidata = nil }
},
{
key = "wrestlingtitles",
name = "Wrestling-Titles",
person = { url = "https://www.wrestling-titles.com/personalities/%s/", wikidata = nil },
team = { url = nil, wikidata = nil },
stable = { url = nil, wikidata = nil }
}
}
local function fetch_wikidata(entity, property)
if entity and property then
local value = entity:getBestStatements(property)[1]
if value then
return value["mainsnak"]["datavalue"]["value"]
end
end
return nil
end
function p.profiles(frame)
local args = getArgs(frame)
local entity = mw.wikibase.getEntity()
local _type = "person"
local text = ""
-- Determine type
if args["type"] and (args["type"] == "person" or args["type"] == "team" or args["type"] == "stable") then
_type = args["type"]
else
local instance = fetch_wikidata(entity, "P31") -- "instance of" on Wikidata
local types = {
["Q5"] = "person", -- "human"
["Q1066670"] = "team", -- "tag team"
["Q25178247"] = "stable" -- "professional wrestling stable"
}
if instance and types[instance.id] then
_type = types[instance.id]
end
end
-- Parse profiles
for index, data in ipairs(profiles) do
local value = args[data["key"]] or fetch_wikidata(entity, data[_type]["wikidata"])
if value and data[_type]["url"] then
text = text
.. string.format("[" .. data[_type]["url"] .. " " .. data["name"] .. "]", value)
.. (args[data["key"]] and "" or frame:expandTemplate{title = 'EditAtWikidata', args = { pid = data[_type]["wikidata"] }})
.. ", "
end
end
if text == "" then
return mw.title.getCurrentTitle().namespace == 0 and "[[Category:Professional wrestling profiles template without any identifiers]]" or nil
end
return (args["name"] or frame:expandTemplate{title = 'PAGENAMEBASE'}) .. "'s profile at " .. string.sub(text, 1, -3)
end
return p