Module:Media table
Jump to navigation
Jump to search
Documentation for this module may be created at Module:Media table/doc
local p = {}
local function matchExtension(fn, ext)
fn = mw.ustring.lower(fn)
ext = "." .. mw.ustring.lower(ext)
return mw.ustring.sub(fn, -#ext) == ext
end
local function mediaType(filename)
local extensions = {"mkv", "mov", "mp4", "ogv", "webm"}
for _, ext in ipairs(extensions) do
if matchExtension(filename, ext) then return "Video" end
end
return "Audio"
end
local function bold(text)
return mw.getCurrentFrame():expandTemplate{
title = "Nihongo", args = {text}
}
end
function p.makeTable(args)
local html = mw.html.create("table")
:addClass("wikitable")
:addClass("mediatable")
html:tag("caption"):wikitext(
mw.getCurrentFrame():extensionTag{
name = "templatestyles",
args = {src = "Media table/styles.css"}
}
)
for _, argset in ipairs(args) do
html:tag("tr")
:tag("td"):wikitext(
"[[File:", mediaType(argset.file), ".svg|x20px|link=]] ",
bold(argset.title),
not argset.desc and "" or (" - " .. argset.desc),
"<br><center>[[File:", argset.file, "]]</center>"
):done()
:tag("td"):wikitext(
"[[:File:", argset.file, "|File info]]",
"<br>", argset.length
)
end
return tostring(html)
end
local function isEmpty(t)
for k, v in pairs(t) do return false end
return true
end
function p.main(frame)
local parentFrame = frame:getParent()
local args = {}
local i = 1
while true do
local argset = {
file = parentFrame.args["file" .. i],
title = parentFrame.args["title" .. i],
desc = parentFrame.args["desc" .. i],
length = parentFrame.args["length" .. i]
}
if isEmpty(argset) then break end
args[i] = argset
i = i + 1
end
return p.makeTable(args)
end
return p