Module:ViewData URL

local p = {} local cargo = mw.ext.cargo

function p.BBRadio( frame ) intro = frame.args['intro'] or '' intro = html_escape(intro) limit = frame.args['limit'] or 100 character = frame.args[1] or '' character = string.gsub(character, "'", '') link_parts = { 'tables=Files,BBRadio_Cuts', 'fields=Files._pageName, Files.Caption', 'where=Files.Characters HOLDS "' .. html_escape(character) .. '" AND BBRadio_Cuts.Season="' .. frame.args[2] .. '"', 'join_on=Files._pageName=BBRadio_Cuts._pageName', 'order_by=_pageName', 'format=gallery', 'offset=0', 'limit=' .. limit, 'default=', 'intro=' .. intro, 'show bytes=0', 'show dimensions=0', 'show filename=0', 'caption field=Caption', 'image width=250' }	link = html_escape(concatvalues(link_parts,"&")) parts = { 'https://blazblue.wiki/index.php\?title=Special:ViewData&', link }	final_link = concatvalues(parts,"") return final_link end

function p.Files( frame ) intro = frame.args['intro'] or '' intro = html_escape(intro) limit = frame.args['limit'] or 100 character = frame.args['character'] or '' character = string.gsub(character, "'", '') cameo = frame.args['cameo'] or '' cameo = string.gsub(cameo, "'", '') order_by = frame.args['order'] or 'Date DESC' -- build where clause where_clause_parts = { (function if not (frame.args['character'] == "" or frame.args['character'] == nil ) then 			return 'Files.Characters HOLDS "' .. character .. '"' else return "" end end), (function if not (frame.args['cameo'] == "" or frame.args['cameo'] == nil ) then 			return 'Files.Cameos HOLDS "' .. cameo .. '"' else return "" end end), (function if not (frame.args['location'] == "" or frame.args['location'] == nil ) then 			return 'Files.Locations HOLDS "' .. frame.args['location'] .. '"' else return "" end end), (function if not (frame.args['weapon'] == "" or frame.args['weapon'] == nil ) then 			return 'Files.Weapons HOLDS "' .. frame.args['weapon'] .. '"' else return "" end end), (function if not (frame.args['artist'] == "" or frame.args['artist'] == nil ) then 			return 'Files.Artists HOLDS "' .. frame.args['artist'] .. '"' else return "" end end), (function if not (frame.args['section'] == "" or frame.args['section'] == nil ) then 			return 'Files.Gallery_Sections HOLDS "' .. frame.args['section'] .. '"' else return "" end end), (function if not (frame.args['source'] == "" or frame.args['source'] == nil ) then 			return 'Files.Source HOLDS "' .. frame.args['source'] .. '"' else return "" end end) }	where_clause = concatvalues(where_clause_parts, " AND ") -- build url arguments link_parts = { 'tables=Files', 'fields=_pageName, Caption, Date', 'where=' .. where_clause, 'order_by=' .. order_by, 'format=gallery', 'offset=0', 'limit=' .. limit, 'default=', 'intro=' .. intro, 'show bytes=0', 'show dimensions=0', 'show filename=0', 'caption field=Caption', 'image width=250' }	link = html_escape(concatvalues(link_parts,"&")) parts = { 'https://blazblue.wiki/index.php\?title=Special:ViewData&', link }	final_link = concatvalues(parts,"") return final_link end

-- concat all the strings in table s together with the given delimiter -- skips blank entries (where value v = "") function concatvalues(s,delimiter) local t = { } for k,v in ipairs(s) do   	if not (v == '') then t[#t+1] = tostring(v) end end return table.concat(t,delimiter) end

function html_escape(s) return (string.gsub(s, "[<>\"'/ ,]", {       ["<"] = "%3C",        [">"] = "%3E",        ['"'] = "%22", ["'"] = "%27",       ["/"] = "%2F", [" "] = "+",       [","] = "%2C" })) end

return p