Module:Media table: Difference between revisions

From Rhythm Heaven Wiki
Jump to navigation Jump to search
(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...")
 
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
html:tag("tr")
tbody:tag("tr")
:tag("td"):wikitext(
:tag("td"):wikitext(
"[[File:", mediaType(argset.file), ".svg|25px|link=]] ",
"[[File:", mediaType(argset.file), ".svg|x20px|link=]] ",
"<b>", argset.title, "</b>",
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