More actions
No edit summary |
No edit summary |
||
(37 intermediate revisions by 2 users not shown) | |||
Line 51: | Line 51: | ||
end | end | ||
local function getType( | local function getType(typeVal) | ||
if not typeVal then return end | |||
local categories = { | |||
-- Applications | |||
['Media Players'] = {'Switch homebrew applications', 'Media players on Switch', 'Switch homebrew applications'}, | |||
['File Browsers'] = {'Switch homebrew applications', 'File browsers on Switch', 'Switch homebrew applications'}, | |||
['Save Managers and Editors'] = {'Switch homebrew applications', 'Savegame tools on Switch', 'Switch homebrew applications'}, | |||
['Title Launchers'] = {'Switch homebrew applications', 'Title launchers on Switch', 'Switch homebrew applications'}, | |||
['Utilities'] = {'Switch homebrew applications', 'Utility applications on Switch', 'Switch homebrew applications'}, | |||
['System Tools'] = {'Switch homebrew applications', 'System tools on Switch', 'Switch homebrew applications'}, | |||
['Custom Firmwares'] = {'Switch homebrew applications', 'Custom firmwares on Switch', 'Switch homebrew applications'}, | |||
['Operating Systems'] = {'Switch homebrew applications', 'Operating systems on Switch', 'Switch homebrew applications'}, | |||
['Math'] = {'Switch homebrew applications', 'Maths applications on Switch', 'Switch homebrew applications'}, | |||
['Music Apps'] = {'Switch homebrew applications', 'Music applications on Switch', 'Switch homebrew applications'}, | |||
['Other Apps'] = {'Switch homebrew applications', 'Other applications on Switch', 'Switch homebrew applications'}, | |||
-- Games | |||
['Action'] = {'Switch homebrew games', 'Action games on Switch', 'Switch homebrew games'}, | |||
['Adventure'] = {'Switch homebrew games', 'Adventure games on Switch', 'Switch homebrew games'}, | |||
['Arcade Games'] = {'Switch homebrew games', 'Arcade games on Switch', 'Switch homebrew games'}, | |||
['Board'] = {'Switch homebrew games', 'Board games on Switch', 'Switch homebrew games'}, | |||
['Card'] = {'Switch homebrew games', 'Card games on Switch', 'Switch homebrew games'}, | |||
['Game Engine'] = {'Switch homebrew games', 'Game engines on Switch', 'Switch homebrew games'}, | |||
['Music'] = {'Switch homebrew games', 'Music games on Switch', 'Switch homebrew games'}, | |||
['Other Games'] = {'Switch homebrew games', 'Other games on Switch', 'Switch homebrew games'}, | |||
['Platform'] = {'Switch homebrew games', 'Platform games on Switch', 'Switch homebrew games'}, | |||
['Puzzle'] = {'Switch homebrew games', 'Puzzle games on Switch', 'Switch homebrew games'}, | |||
['Racing'] = {'Switch homebrew games', 'Racing games on Switch', 'Switch homebrew games'}, | |||
['Role Playing'] = {'Switch homebrew games', 'Role playing games on Switch', 'Switch homebrew games'}, | |||
['Shooter'] = {'Switch homebrew games', 'Shooter games on Switch', 'Switch homebrew games'}, | |||
['Simulation'] = {'Switch homebrew games', 'Simulation games on Switch', 'Switch homebrew games'}, | |||
['Strategy'] = {'Switch homebrew games', 'Strategy games on Switch', 'Switch homebrew games'}, | |||
['Trivia'] = {'Switch homebrew games', 'Trivia games on Switch', 'Switch homebrew games'}, | |||
-- Emulators | |||
['Arcade'] = {'Switch homebrew emulators', 'Arcade emulators on Switch', 'Switch homebrew emulators'}, | |||
['Computer'] = {'Switch homebrew emulators', 'Computer emulators on Switch', 'Switch homebrew emulators'}, | |||
['Console'] = {'Switch homebrew emulators', 'Console emulators on Switch', 'Switch homebrew emulators'}, | |||
['Handheld'] = {'Switch homebrew emulators', 'Handheld emulators on Switch', 'Switch homebrew emulators'}, | |||
['Other Emulators'] = {'Switch homebrew emulators', 'Other emulators on Switch', 'Switch homebrew emulators'}, | |||
-- Plugins | |||
['Overlays'] = {'Switch homebrew plugins', 'Overlays on Switch', 'Switch addons'}, | |||
['Sysmodules'] = {'Switch homebrew plugins', 'Sysmodules on Switch', 'Switch addons'}, | |||
['Plugins'] = {'Switch homebrew plugins', 'Plugins on Switch', 'Switch addons'}, | |||
-- PC (PC Utilities) | |||
['PC Utilities'] = {'Switch PC utilities', 'Other PC utilities for Switch', 'PC utilities for Switch'}, | |||
['Theme Tools'] = {'Switch PC utilities', 'Theme tools for Switch', 'PC utilities for Switch'}, | |||
['Game Management'] = {'Switch PC utilities', 'Game library managers for Switch', 'PC utilities for Switch'}, | |||
['Emulation and Forwarders'] = {'Switch PC utilities', 'Emulation and forwarder tools for Switch', 'PC utilities for Switch'}, | |||
['Game Installer Companion'] = {'Switch PC utilities', 'Game installer companions for Switch', 'PC utilities for Switch'}, | |||
['Network'] = {'Switch PC utilities', 'Network utilities for Switch', 'PC utilities for Switch'}, | |||
['Remote Play and Streaming'] = {'Switch PC utilities', 'Remote play and streaming programs for Switch', 'PC utilities for Switch'}, | |||
['Developments'] = {'Switch PC utilities', 'Development utilities for Switch', 'PC utilities for Switch'}, | |||
-- Payloads | |||
['Payload (Binaries)'] = {'Switch payloads', 'Payloads for Switch', 'Switch homebrew applications'}, | |||
['Payload Senders (Software)'] = {'Switch payloads', 'Payload Senders for Switch', 'Switch homebrew applications'}, | |||
['Payload Senders (Hardware)'] = {'Switch payloads', 'Payload Senders for Switch', 'Switch homebrew applications'}, | |||
-- Demos | |||
['Demos'] = {'Switch homebrew demos', 'Demo homebrews on Switch', 'Switch homebrew applications'}, | |||
-- ROM Hack | |||
['Game Hacks'] = {'Switch rom hacks', 'Switch game hacks', 'Switch rom hacks'}, | |||
['Translations'] = {'Switch rom hacks', 'Switch game translations', 'Switch rom hacks'}, | |||
['Hack Utilities'] = {'Switch rom hacks', 'Switch hack utilities', 'Switch rom hacks'}, | |||
['Save Editors and Converters'] = {'Switch rom hacks', 'Switch hack utilities', 'Switch rom hacks'}, | |||
} | |||
local category = categories[typeVal] | |||
if category then | |||
return string.format('[[List of %s#%s|%s]] [[Category:%s]] [[Category:%s]]', category[1], typeVal, typeVal, category[2], category[3]) | |||
else | |||
return typeVal .. '[[Category:Infobox homebrew using invalid type parameter]]' | |||
end | |||
end | end | ||
Line 146: | Line 175: | ||
local function getSource( source ) | local function getSource( source ) | ||
if empty( source ) then return end | if empty( source ) then return end | ||
if source == 'included' then return 'Source included[[Category: | if source == 'included' then return 'Source included[[Category:Switch open source homebrew]]' end | ||
return getLink( 'Source', source ) .. '[[Category: | return getLink( 'Source', source ) .. '[[Category:Switch open source homebrew]]' | ||
end | end | ||
local function getDonation( donation ) | local function getDonation( donation ) | ||
if empty( donation ) then return end | if empty( donation ) then return end | ||
if donation == 'included' then return ' | if donation == 'included' then return 'Donation included[[Category:Support the author]]' end | ||
return getLink( ' | return getLink( 'Support Author', donation ) .. '[[Category:Support the author]]' | ||
end | end | ||
Line 177: | Line 206: | ||
local ibData = { | local ibData = { | ||
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, | ||
header3 = 'General', | header3 = 'General', | ||
label4 = 'Author', | label4 = 'Author', | ||
Line 202: | Line 229: | ||
label12 = 'Last Updated', | label12 = 'Last Updated', | ||
data12 = a.lastupdated, | data12 = a.lastupdated, | ||
header13 = div3(), | |||
header20 = div(), | header20 = div(), | ||
header2 = div2(), | |||
-- 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 = getDonation( | data18 = getDonation( 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 216: | Line 244: | ||
if a.cia == 'yes' then | if a.cia == 'yes' then | ||
ibData. | ibData.header111 = 'CIA information' | ||
ibData.label112 = 'Title ID' | ibData.label112 = 'Title ID' | ||
ibData.data112 = a.titleID or 'Unknown[[Category:Switch Homebrew missing CIA titleID]]' | ibData.data112 = a.titleID or 'Unknown[[Category:Switch Homebrew missing CIA titleID]]' |
Latest revision as of 14:47, 22 Haziran 2024
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(typeVal) if not typeVal then return end local categories = { -- Applications ['Media Players'] = {'Switch homebrew applications', 'Media players on Switch', 'Switch homebrew applications'}, ['File Browsers'] = {'Switch homebrew applications', 'File browsers on Switch', 'Switch homebrew applications'}, ['Save Managers and Editors'] = {'Switch homebrew applications', 'Savegame tools on Switch', 'Switch homebrew applications'}, ['Title Launchers'] = {'Switch homebrew applications', 'Title launchers on Switch', 'Switch homebrew applications'}, ['Utilities'] = {'Switch homebrew applications', 'Utility applications on Switch', 'Switch homebrew applications'}, ['System Tools'] = {'Switch homebrew applications', 'System tools on Switch', 'Switch homebrew applications'}, ['Custom Firmwares'] = {'Switch homebrew applications', 'Custom firmwares on Switch', 'Switch homebrew applications'}, ['Operating Systems'] = {'Switch homebrew applications', 'Operating systems on Switch', 'Switch homebrew applications'}, ['Math'] = {'Switch homebrew applications', 'Maths applications on Switch', 'Switch homebrew applications'}, ['Music Apps'] = {'Switch homebrew applications', 'Music applications on Switch', 'Switch homebrew applications'}, ['Other Apps'] = {'Switch homebrew applications', 'Other applications on Switch', 'Switch homebrew applications'}, -- Games ['Action'] = {'Switch homebrew games', 'Action games on Switch', 'Switch homebrew games'}, ['Adventure'] = {'Switch homebrew games', 'Adventure games on Switch', 'Switch homebrew games'}, ['Arcade Games'] = {'Switch homebrew games', 'Arcade games on Switch', 'Switch homebrew games'}, ['Board'] = {'Switch homebrew games', 'Board games on Switch', 'Switch homebrew games'}, ['Card'] = {'Switch homebrew games', 'Card games on Switch', 'Switch homebrew games'}, ['Game Engine'] = {'Switch homebrew games', 'Game engines on Switch', 'Switch homebrew games'}, ['Music'] = {'Switch homebrew games', 'Music games on Switch', 'Switch homebrew games'}, ['Other Games'] = {'Switch homebrew games', 'Other games on Switch', 'Switch homebrew games'}, ['Platform'] = {'Switch homebrew games', 'Platform games on Switch', 'Switch homebrew games'}, ['Puzzle'] = {'Switch homebrew games', 'Puzzle games on Switch', 'Switch homebrew games'}, ['Racing'] = {'Switch homebrew games', 'Racing games on Switch', 'Switch homebrew games'}, ['Role Playing'] = {'Switch homebrew games', 'Role playing games on Switch', 'Switch homebrew games'}, ['Shooter'] = {'Switch homebrew games', 'Shooter games on Switch', 'Switch homebrew games'}, ['Simulation'] = {'Switch homebrew games', 'Simulation games on Switch', 'Switch homebrew games'}, ['Strategy'] = {'Switch homebrew games', 'Strategy games on Switch', 'Switch homebrew games'}, ['Trivia'] = {'Switch homebrew games', 'Trivia games on Switch', 'Switch homebrew games'}, -- Emulators ['Arcade'] = {'Switch homebrew emulators', 'Arcade emulators on Switch', 'Switch homebrew emulators'}, ['Computer'] = {'Switch homebrew emulators', 'Computer emulators on Switch', 'Switch homebrew emulators'}, ['Console'] = {'Switch homebrew emulators', 'Console emulators on Switch', 'Switch homebrew emulators'}, ['Handheld'] = {'Switch homebrew emulators', 'Handheld emulators on Switch', 'Switch homebrew emulators'}, ['Other Emulators'] = {'Switch homebrew emulators', 'Other emulators on Switch', 'Switch homebrew emulators'}, -- Plugins ['Overlays'] = {'Switch homebrew plugins', 'Overlays on Switch', 'Switch addons'}, ['Sysmodules'] = {'Switch homebrew plugins', 'Sysmodules on Switch', 'Switch addons'}, ['Plugins'] = {'Switch homebrew plugins', 'Plugins on Switch', 'Switch addons'}, -- PC (PC Utilities) ['PC Utilities'] = {'Switch PC utilities', 'Other PC utilities for Switch', 'PC utilities for Switch'}, ['Theme Tools'] = {'Switch PC utilities', 'Theme tools for Switch', 'PC utilities for Switch'}, ['Game Management'] = {'Switch PC utilities', 'Game library managers for Switch', 'PC utilities for Switch'}, ['Emulation and Forwarders'] = {'Switch PC utilities', 'Emulation and forwarder tools for Switch', 'PC utilities for Switch'}, ['Game Installer Companion'] = {'Switch PC utilities', 'Game installer companions for Switch', 'PC utilities for Switch'}, ['Network'] = {'Switch PC utilities', 'Network utilities for Switch', 'PC utilities for Switch'}, ['Remote Play and Streaming'] = {'Switch PC utilities', 'Remote play and streaming programs for Switch', 'PC utilities for Switch'}, ['Developments'] = {'Switch PC utilities', 'Development utilities for Switch', 'PC utilities for Switch'}, -- Payloads ['Payload (Binaries)'] = {'Switch payloads', 'Payloads for Switch', 'Switch homebrew applications'}, ['Payload Senders (Software)'] = {'Switch payloads', 'Payload Senders for Switch', 'Switch homebrew applications'}, ['Payload Senders (Hardware)'] = {'Switch payloads', 'Payload Senders for Switch', 'Switch homebrew applications'}, -- Demos ['Demos'] = {'Switch homebrew demos', 'Demo homebrews on Switch', 'Switch homebrew applications'}, -- ROM Hack ['Game Hacks'] = {'Switch rom hacks', 'Switch game hacks', 'Switch rom hacks'}, ['Translations'] = {'Switch rom hacks', 'Switch game translations', 'Switch rom hacks'}, ['Hack Utilities'] = {'Switch rom hacks', 'Switch hack utilities', 'Switch rom hacks'}, ['Save Editors and Converters'] = {'Switch rom hacks', 'Switch hack utilities', 'Switch rom hacks'}, } local category = categories[typeVal] if category then return string.format('[[List of %s#%s|%s]] [[Category:%s]] [[Category:%s]]', category[1], typeVal, typeVal, category[2], category[3]) else return typeVal .. '[[Category:Infobox homebrew using invalid type parameter]]' end 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:Switch open source homebrew]]' end return getLink( 'Source', source ) .. '[[Category:Switch 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( 'Support Author', 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 = { title = a.title, image = a.image, imagesize = a.imagesize or '48px', imagecaption = a.imagecaption, 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, header13 = div3(), header20 = div(), header2 = div2(), -- Links data15 = getLink( 'Download', a.download, a.downloadraw ), data16 = getLink( 'Website', a.website ), data17 = getSource( a.source ), data18 = getDonation( 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.header111 = '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