More actions
No edit summary |
No edit summary |
||
Line 12: | Line 12: | ||
div | div | ||
:attr( 'id', 'largemobilebanner' ) | :attr( 'id', 'largemobilebanner' ) | ||
return tostring( div ) | |||
end | |||
local function div3() | |||
local div = mw.html.create( 'div' ) | |||
div | |||
:attr( 'id', 'Ads-Infobox1' ) | |||
return tostring( div ) | |||
end | |||
local function div4() | |||
local div = mw.html.create( 'div' ) | |||
div | |||
:attr( 'id', 'Ads-Infobox3' ) | |||
return tostring( div ) | return tostring( div ) | ||
end | end | ||
Line 42: | Line 56: | ||
local types = { | local types = { | ||
-- Applications | -- Applications | ||
['media player'] = '[[List of | ['media player'] = '[[List of Switch homebrew applications#Media players|Media player]] [[Category:Switch Homebrew media players]]', | ||
['utility'] = '[[List of | ['utility'] = '[[List of Switch homebrew applications#Utilities|Utility]] [[Category:Switch Homebrew utilities]]', | ||
['operating system'] = '[[List of | ['operating system'] = '[[List of Switch homebrew applications#Operating systems|Operating system]] [[Category:Switch Homebrew operating systems]]', | ||
['math'] = '[[List of | ['math'] = '[[List of Switch homebrew applications#Math|Math application]] [[Category:Switch Homebrew math applications]]', | ||
['other'] = '[[List of | ['other'] = '[[List of Switch homebrew applications#Other applications|Other application]] [[Category:Switch Homebrew other applications]]', | ||
-- Games | -- Games | ||
['arcade game'] = '[[List of | ['arcade game'] = '[[List of Switch homebrew games#Arcade|Arcade game]] [[Category:Switch Homebrew arcade games]]', | ||
['board game'] = '[[List of | ['board game'] = '[[List of Switch homebrew games#Board|Board game]] [[Category:Switch Homebrew board games]]', | ||
['card game'] = '[[List of | ['card game'] = '[[List of Switch homebrew games#Card|Card game]] [[Category:Switch Homebrew card games]]', | ||
['game engine'] = '[[List of | ['game engine'] = '[[List of Switch homebrew games#Game engine|Game engine]] [[Category:Switch Homebrew game engines]]', | ||
['music game'] = '[[List of | ['music game'] = '[[List of Switch homebrew games#Music|Music game]] [[Category:Switch Homebrew music games]]', | ||
['platform game'] = '[[List of | ['platform game'] = '[[List of Switch homebrew games#Platform|Platform game]] [[Category:Switch Homebrew platform games]]', | ||
['puzzle game'] = '[[List of | ['puzzle game'] = '[[List of Switch homebrew games#Puzzle|Puzzle game]] [[Category:Switch Homebrew puzzle games]]', | ||
['racing game'] = '[[List of | ['racing game'] = '[[List of Switch homebrew games#Racing|Racing game]] [[Category:Switch Homebrew racing games]]', | ||
['role playing game'] = '[[List of | ['role playing game'] = '[[List of Switch homebrew games#Role playing|Role playing game]] [[Category:Switch Homebrew role playing games]]', | ||
['shooting game'] = '[[List of | ['shooting game'] = '[[List of Switch homebrew games#Shooter|Shooting game]] [[Category:Switch Homebrew shooting games]]', | ||
['simulation game'] = '[[List of | ['simulation game'] = '[[List of Switch homebrew games#Simulation|Simulation game]] [[Category:Switch Homebrew simulation games]]', | ||
['trivia game'] = '[[List of | ['trivia game'] = '[[List of Switch homebrew games#Trivia|Trivia game]] [[Category:Switch Homebrew trivia games]]', | ||
['other game'] = '[[List of | ['other game'] = '[[List of Switch homebrew games#Other games|Other game]] [[Category:Switch Homebrew other games]]', | ||
-- Emulators | -- Emulators | ||
['console emulator'] = '[[List of | ['console emulator'] = '[[List of Switch homebrew emulators#Console|Console emulator]] [[Category:Switch Homebrew console emulators]]', | ||
['handheld emulator'] = '[[List of | ['handheld emulator'] = '[[List of Switch homebrew emulators#Handheld|Handheld emulator]] [[Category:Switch Homebrew portable emulators]]', | ||
['arcade emulator'] = '[[List of | ['arcade emulator'] = '[[List of Switch homebrew emulators#Arcade|Arcade emulator]] [[Category:Switch Homebrew arcade emulators]]', | ||
['computer emulator'] = '[[List of | ['computer emulator'] = '[[List of Switch homebrew emulators#Computer|Computer emulator]] [[Category:Switch Homebrew computer emulators]]', | ||
-- Loaders | -- Loaders | ||
['loader'] = '[[List of | ['loader'] = '[[List of Switch homebrew loaders|Loader]] [[Category:Switch Homebrew loaders]]', | ||
-- Exploits | -- Exploits | ||
['exploit'] = '[[List of | ['exploit'] = '[[List of Switch homebrew exploits|Exploit]] [[Category:Switch Homebrew exploits]]', | ||
-- System Tools | -- System Tools | ||
['system tool'] = '[[List of | ['system tool'] = '[[List of Switch system tools|System tool]] [[Category:Switch homebrew system tools]]', | ||
-- PC Utilities | -- PC Utilities | ||
['pc utility'] = '[[List of | ['pc utility'] = '[[List of Switch PC utilities|PC utility]] [[Category:Switch PC utilities]]', | ||
-- Demos | -- Demos | ||
['demo'] = '[[List of | ['demo'] = '[[List of Switch homebrew demos|Demo]] [[Category:Switch homebrew demos]]', | ||
} | } | ||
Line 98: | Line 112: | ||
local function getFormats( a ) | local function getFormats( a ) | ||
local formats = { ' | local formats = { 'Switchx', 'Switch', 'cia', 'bin', 'dat', 'cxi' } | ||
local ret = {} | local ret = {} | ||
Line 135: | Line 149: | ||
return getLink( 'Source', source ) .. '[[Category:Open source homebrew]]' | return getLink( 'Source', source ) .. '[[Category:Open source homebrew]]' | ||
end | |||
local function getDonation( donation ) | |||
if empty( donation ) then return end | |||
if donation == 'included' then return 'donation included[[Category:Support the author]]' end | |||
return getLink( 'donation', donation ) .. '[[Category:Support the author]]' | |||
end | end | ||
Line 141: | Line 162: | ||
if empty(dmversion) or dmversion == version then | if empty(dmversion) or dmversion == version then | ||
return 'Downloadable via [[DownloadMii]] [[Category: | return 'Downloadable via [[DownloadMii]] [[Category:Switch Homebrew in DownloadMii]]' | ||
else | else | ||
return "Version '''" .. dmversion .. "''' downloadable via [[DownloadMii]] [[Category: | return "Version '''" .. dmversion .. "''' downloadable via [[DownloadMii]] [[Category:Switch Homebrew in DownloadMii]]" | ||
end | end | ||
end | end | ||
Line 156: | Line 177: | ||
local ibData = { | local ibData = { | ||
header1 = div3(), | |||
title = a.title, | title = a.title, | ||
image = a.image, | image = a.image, | ||
imagesize = a.imagesize or '48px', | imagesize = a.imagesize or '48px', | ||
imagecaption = a.imagecaption, | imagecaption = a.imagecaption, | ||
header2 = div2(), | |||
header3 = 'General', | |||
label4 = 'Author', | |||
data4 = a.author, | |||
label5 = 'Contributor', | |||
data5 = userList( a.contributor ), | |||
label6 = 'Ported by', | |||
data6 = userList( a.portedby ), | |||
label7 = 'Type', | |||
data7 = getType( a['type'] ), | |||
label8 = 'Version', | |||
data8 = a.version, | |||
label9 = 'License', | |||
data9 = getLicense( a.license ), | |||
label10 = 'Language', | |||
data10 = a.language, | |||
label11 = 'Format', | |||
data11 = getFormats( a ), | |||
label12 = 'Last Updated', | |||
data12 = a.lastupdated, | |||
header20 = div(), | header20 = div(), | ||
header13 = div4(), | |||
-- Links | -- Links | ||
data15 = getLink( 'Download', a.download, a.downloadraw ), | data15 = getLink( 'Download', a.download, a.downloadraw ), | ||
data16 = getLink( 'Website', a.website ), | data16 = getLink( 'Website', a.website ), | ||
data17 = getSource( a.source ), | data17 = getSource( a.source ), | ||
data18 = | data18 = getDonation( 'Support Author', a.donation), | ||
data19 = getDownloadMii( a.dm, a.dmversion, a.version ), | data19 = getDownloadMii( a.dm, a.dmversion, a.version ), | ||
below = a.below | below = a.below | ||
Line 194: | Line 217: | ||
if a.cia == 'yes' then | if a.cia == 'yes' then | ||
ibData.header11 = 'CIA information' | ibData.header11 = 'CIA information' | ||
ibData. | ibData.label112 = 'Title ID' | ||
ibData. | ibData.data112 = a.titleID or 'Unknown[[Category:Switch Homebrew missing CIA titleID]]' | ||
ibData. | ibData.label113 = 'Unique ID' | ||
ibData. | ibData.data113 = a.uniqueID or 'Unknown[[Category:Switch Homebrew missing CIA uniqueID]]' | ||
end | end | ||
Revision as of 23:26, 28 March 2023
Documentation for this module may be created at Module:Infobox Switch Homebrews/doc
local p = {} local function div() local div = mw.html.create( 'div' ) div :attr( 'id', 'Ads-Infobox' ) return tostring( div ) end local function div2() local div = mw.html.create( 'div' ) div :attr( 'id', 'largemobilebanner' ) return tostring( div ) end local function div3() local div = mw.html.create( 'div' ) div :attr( 'id', 'Ads-Infobox1' ) return tostring( div ) end local function div4() local div = mw.html.create( 'div' ) div :attr( 'id', 'Ads-Infobox3' ) return tostring( div ) end local function empty(param) return not param or param == '' end local function formatUser( user ) return '[[User:' .. user .. (user:find('|') and '' or ('|' .. user)) .. ']]' end local function userList( list ) if empty(list) then return end if not list:find(',') then return formatUser(list) end local ret = {} for user in mw.text.gsplit( list, '%s*,%s*' ) do ret[#ret+1] = formatUser(user) end return table.concat( ret, ', ' ) end local function getType( type ) if empty( type ) then return end local types = { -- Applications ['media player'] = '[[List of Switch homebrew applications#Media players|Media player]] [[Category:Switch Homebrew media players]]', ['utility'] = '[[List of Switch homebrew applications#Utilities|Utility]] [[Category:Switch Homebrew utilities]]', ['operating system'] = '[[List of Switch homebrew applications#Operating systems|Operating system]] [[Category:Switch Homebrew operating systems]]', ['math'] = '[[List of Switch homebrew applications#Math|Math application]] [[Category:Switch Homebrew math applications]]', ['other'] = '[[List of Switch homebrew applications#Other applications|Other application]] [[Category:Switch Homebrew other applications]]', -- Games ['arcade game'] = '[[List of Switch homebrew games#Arcade|Arcade game]] [[Category:Switch Homebrew arcade games]]', ['board game'] = '[[List of Switch homebrew games#Board|Board game]] [[Category:Switch Homebrew board games]]', ['card game'] = '[[List of Switch homebrew games#Card|Card game]] [[Category:Switch Homebrew card games]]', ['game engine'] = '[[List of Switch homebrew games#Game engine|Game engine]] [[Category:Switch Homebrew game engines]]', ['music game'] = '[[List of Switch homebrew games#Music|Music game]] [[Category:Switch Homebrew music games]]', ['platform game'] = '[[List of Switch homebrew games#Platform|Platform game]] [[Category:Switch Homebrew platform games]]', ['puzzle game'] = '[[List of Switch homebrew games#Puzzle|Puzzle game]] [[Category:Switch Homebrew puzzle games]]', ['racing game'] = '[[List of Switch homebrew games#Racing|Racing game]] [[Category:Switch Homebrew racing games]]', ['role playing game'] = '[[List of Switch homebrew games#Role playing|Role playing game]] [[Category:Switch Homebrew role playing games]]', ['shooting game'] = '[[List of Switch homebrew games#Shooter|Shooting game]] [[Category:Switch Homebrew shooting games]]', ['simulation game'] = '[[List of Switch homebrew games#Simulation|Simulation game]] [[Category:Switch Homebrew simulation games]]', ['trivia game'] = '[[List of Switch homebrew games#Trivia|Trivia game]] [[Category:Switch Homebrew trivia games]]', ['other game'] = '[[List of Switch homebrew games#Other games|Other game]] [[Category:Switch Homebrew other games]]', -- Emulators ['console emulator'] = '[[List of Switch homebrew emulators#Console|Console emulator]] [[Category:Switch Homebrew console emulators]]', ['handheld emulator'] = '[[List of Switch homebrew emulators#Handheld|Handheld emulator]] [[Category:Switch Homebrew portable emulators]]', ['arcade emulator'] = '[[List of Switch homebrew emulators#Arcade|Arcade emulator]] [[Category:Switch Homebrew arcade emulators]]', ['computer emulator'] = '[[List of Switch homebrew emulators#Computer|Computer emulator]] [[Category:Switch Homebrew computer emulators]]', -- Loaders ['loader'] = '[[List of Switch homebrew loaders|Loader]] [[Category:Switch Homebrew loaders]]', -- Exploits ['exploit'] = '[[List of Switch homebrew exploits|Exploit]] [[Category:Switch Homebrew exploits]]', -- System Tools ['system tool'] = '[[List of Switch system tools|System tool]] [[Category:Switch homebrew system tools]]', -- PC Utilities ['pc utility'] = '[[List of Switch PC utilities|PC utility]] [[Category:Switch PC utilities]]', -- Demos ['demo'] = '[[List of Switch homebrew demos|Demo]] [[Category:Switch homebrew demos]]', } return types[type] or type .. '[[Category:Infobox homebrew using invalid type parameter]]' end local function getLicense( license ) if empty( license ) then return end local licenses = { ['Apache'] = '[https://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0]', ['GNU GPL'] = '[https://www.gnu.org/licenses/gpl.html GNU GPL]', ['GNU LGPL'] = '[https://www.gnu.org/licenses/lgpl.html GNU LGPL]', ['BSD 2-Clause'] = '[http://opensource.org/licenses/BSD-2-Clause BSD 2-Clause]', ['BSD 3-Clause'] = '[http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause]', ['Mixed'] = 'Mixed', ['MIT'] = '[http://opensource.org/licenses/mit-license.html MIT License]', } return licenses[license] or license end local function getFormats( a ) local formats = { 'Switchx', 'Switch', 'cia', 'bin', 'dat', 'cxi' } local ret = {} for i=1,#formats do local f = formats[i] local tmp = a[f] if not empty(tmp) then local label = f == 'bin' and 'bin/elf' or f if tmp == 'yes' then ret[#ret+1] = label .. ' <span style="color:#00B000">✔</span>' elseif tmp == 'no' then ret[#ret+1] = label .. ' <span style="color:red">✘</span>' else ret[#ret+1] = label .. ' <span style="color:orange">?</span>' end end end if next(ret) == nil then return end -- We got nothing... return table.concat(ret, '<br />') end local function getLink( label, link, altlink ) if empty( link ) then return altlink end if link:find( '://' ) then return '[' .. link .. ' ' .. label .. ']' end return '[[' .. link .. '|' .. label .. ']]' end local function getSource( source ) if empty( source ) then return end if source == 'included' then return 'Source included[[Category:Open source homebrew]]' end return getLink( 'Source', source ) .. '[[Category:Open source homebrew]]' end local function getDonation( donation ) if empty( donation ) then return end if donation == 'included' then return 'donation included[[Category:Support the author]]' end return getLink( 'donation', donation ) .. '[[Category:Support the author]]' end local function getDownloadMii( dm, dmversion, version ) if not dm or dm ~= 'yes' then return end if empty(dmversion) or dmversion == version then return 'Downloadable via [[DownloadMii]] [[Category:Switch Homebrew in DownloadMii]]' else return "Version '''" .. dmversion .. "''' downloadable via [[DownloadMii]] [[Category:Switch Homebrew in DownloadMii]]" end end function p.main( frame ) local a = frame:getParent().args local infobox = require( 'Module:Infobox' ) if not empty( a.title ) then frame:callParserFunction( 'DISPLAYTITLE', a.title ) end local ibData = { header1 = div3(), title = a.title, image = a.image, imagesize = a.imagesize or '48px', imagecaption = a.imagecaption, header2 = div2(), header3 = 'General', label4 = 'Author', data4 = a.author, label5 = 'Contributor', data5 = userList( a.contributor ), label6 = 'Ported by', data6 = userList( a.portedby ), label7 = 'Type', data7 = getType( a['type'] ), label8 = 'Version', data8 = a.version, label9 = 'License', data9 = getLicense( a.license ), label10 = 'Language', data10 = a.language, label11 = 'Format', data11 = getFormats( a ), label12 = 'Last Updated', data12 = a.lastupdated, header20 = div(), header13 = div4(), -- Links data15 = getLink( 'Download', a.download, a.downloadraw ), data16 = getLink( 'Website', a.website ), data17 = getSource( a.source ), data18 = getDonation( 'Support Author', a.donation), data19 = getDownloadMii( a.dm, a.dmversion, a.version ), below = a.below } if ibData.data15 or ibData.data16 or ibData.data17 or ibData.data18 or ibData.data19 then ibData.header14 = 'Links' end if a.cia == 'yes' then ibData.header11 = 'CIA information' ibData.label112 = 'Title ID' ibData.data112 = a.titleID or 'Unknown[[Category:Switch Homebrew missing CIA titleID]]' ibData.label113 = 'Unique ID' ibData.data113 = a.uniqueID or 'Unknown[[Category:Switch Homebrew missing CIA uniqueID]]' end return infobox.infobox( ibData ) end return p