Module:Media table: Difference between revisions
Jump to navigation
Jump to search
HyperNervie (talk | contribs) (Created page with "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 function p.makeTable(args) local html = mw.html.create("table") :addClass("wikitable") :addCla...") |
HyperNervie (talk | contribs) No edit summary |
||
| Line 13: | Line 13: | ||
end | end | ||
return "Audio" | return "Audio" | ||
end | |||
local function bold(text) | |||
return mw.getCurrentFrame():expandTemplate{ | |||
title = "Nihongo", args = {text} | |||
} | |||
end | end | ||
| Line 19: | Line 25: | ||
:addClass("wikitable") | :addClass("wikitable") | ||
:addClass("mediatable") | :addClass("mediatable") | ||
html:tag("caption"):wikitext( | |||
mw.getCurrentFrame():extensionTag{ | |||
name = "templatestyles", | |||
args = {src = "Media table/styles.css"} | |||
} | |||
) | |||
local tbody = html:tag("tbody") | |||
for _, argset in ipairs(args) do | for _, argset in ipairs(args) do | ||
tbody:tag("tr") | |||
:tag("td"):wikitext( | :tag("td"):wikitext( | ||
"[[File:", mediaType(argset.file), ".svg| | "[[File:", mediaType(argset.file), ".svg|x20px|link=]] ", | ||
bold(argset.title), | |||
not argset.desc and "" or (" - " .. argset.desc), | not argset.desc and "" or (" - " .. argset.desc), | ||
"<br><center>[[File:", argset.file, "]]</center>" | "<br><center>[[File:", argset.file, "]]</center>" | ||
Revision as of 10:31, 23 September 2025
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"}
}
)
local tbody = html:tag("tbody")
for _, argset in ipairs(args) do
tbody: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