Modül:SMAPI compatibility overrides
Gezinti kısmına atla
Arama kısmına atla
Bu modül için bir belgeleme oluşturabilirsiniz: Modül:SMAPI compatibility overrides/belge
local p = {}
local private = {}
--##########
--## Public functions
--##########
-- Start a mod data overrides table.
-- @test mw.log(p.header())
function p.header()
return
'<table class="wikitable sortable plainlinks" id="mod-overrides-list">'
.. "<tr><th style=\"position: sticky; top: 0;\">mod name</th><th style=\"position: sticky; top: 0;\">update keys</th><th style=\"position: sticky; top: 0;\">manifest version</th><th style=\"position: sticky; top: 0;\">mod page version</th><th style=\"position: sticky; top: 0;\">reason</th><th style=\"position: sticky; top: 0;\"> </th></tr>";
end
-- End a mod data overrides table.
-- @test mw.log(p.footer())
function p.footer()
return '</table>'
end
--- Render a mod row in the mod data overrides table.
-- @param frame The arguments passed to the script.
-- @test mw.log(p.entry({ args = { name="Lookup Anything", id="Pathoschild.LookupAnything", ["update keys"]="-Nexus:541, +Nexus:905", ["local version"]="1.05-beta → 1.0.5-beta", ["remote version"]="1.06 → 1.0.6", ["reason"]="test values" }}))
function p.entry(frame)
-- read input args
local name = private.emptyToNil(frame.args["name"])
local ids = private.parseCommaDelimited(frame.args["id"] or '')
local updateKeys = private.emptyToNil(frame.args["update keys"])
local localVersion = private.emptyToNil(frame.args["local version"])
local remoteVersion = private.emptyToNil(frame.args["remote version"])
local reason = private.emptyToNil(frame.args["reason"])
-- build HTML row
local row = mw.html.create("tr")
row:addClass("mod")
row:attr("id", name and "override_" .. mw.uri.anchorEncode(name));
row:attr("data-id", table.concat(ids, ","))
row:attr("data-local-version", localVersion)
row:attr("data-remote-version", remoteVersion)
row:attr("data-update-keys", updateKeys)
row:attr("data-reason", reason)
row:attr("style", "line-height: 1em;")
row:newline()
-- add name field
do
local field = mw.html.create("td")
if name then
field:wikitext("[[#" .. name .. "|" .. name .. "]]")
else
field:wikitext(name)
end
row:node(field)
row:newline()
end
-- add update keys field
do
local field = mw.html.create("td")
field:wikitext(updateKeys)
row:node(field)
row:newline()
end
-- add local version field
do
local field = mw.html.create("td")
field:wikitext(localVersion)
row:node(field)
row:newline()
end
-- add remote version field
do
local field = mw.html.create("td")
field:wikitext(remoteVersion)
row:node(field)
row:newline()
end
-- add reason field
do
local field = mw.html.create("td")
field:wikitext(reason)
row:node(field)
row:newline()
end
-- add metadata field
do
local field = mw.html.create("td")
field:attr("style", "font-size: 0.8em")
-- anchor
field:wikitext("[[#override_" .. (name or '') .. "|#]] ")
-- validation
if #ids == 0 then
field:wikitext("[⚠ no id] ")
end
row:node(field)
end
return tostring(row)
end
--##########
--## Private functions
--##########
-- Get a nil value if the specified value is an empty string, else return the value unchanged.
-- @param value The string to check.
function private.emptyToNil(value)
if value ~= "" then
return value
else
return nil
end
end
-- Parse a comma-delimited string into an array.
-- @param value The string to parse.
function private.parseCommaDelimited(value)
local result = {}
if value ~= nil then
local values = mw.text.split(value, ",", true)
for i = 1, #values do
v = mw.text.trim(values[i])
if v ~= "" then
table.insert(result, v)
end
end
end
return result
end
return p