More actions
(..) |
No edit summary |
||
Line 87: | Line 87: | ||
['Title Launchers'] = {'DS homebrew loaders', 'Homebrew Loaders on DS', 'DS Homebrew Applications'}, | ['Title Launchers'] = {'DS homebrew loaders', 'Homebrew Loaders on DS', 'DS Homebrew Applications'}, | ||
-- PC (PC Utilities for DS) | -- PC (PC Utilities for DS) | ||
['Development Libraries'] = {'DS PC | ['Development Libraries'] = {'DS PC utilities', 'Development Utilities for DS', 'PC Utilities for DS'}, | ||
['Development Tools'] = {'DS PC | ['Development Tools'] = {'DS PC utilities', 'Development Utilities for DS', 'PC Utilities for DS'}, | ||
['File Operation'] = {'DS PC | ['File Operation'] = {'DS PC utilities', 'File Management Utilities for DS', 'PC Utilities for DS'}, | ||
['Save and Game Managers'] = {'DS PC | ['Save and Game Managers'] = {'DS PC utilities', 'Other PC Utilities for DS', 'PC Utilities for DS'}, | ||
['ROM Managers'] = {'DS PC | ['ROM Managers'] = {'DS PC utilities', 'Other PC Utilities for DS', 'PC Utilities for DS'}, | ||
['ROM Patchers'] = {'DS PC | ['ROM Patchers'] = {'DS PC utilities', 'ROM Patchers', 'PC Utilities for DS'}, | ||
['PC Utilities'] = {'DS PC | ['PC Utilities'] = {'DS PC utilities', 'Other PC Utilities for DS', 'PC Utilities for DS'}, | ||
['DS Emulators'] = {'DS PC | ['DS Emulators'] = {'DS PC utilities', 'Other PC Utilities for DS', 'PC Utilities for DS'}, | ||
-- Demos | -- Demos | ||
['Demos'] = {'DS homebrew demos', 'Demo Homebrews on DS', 'DS Homebrew Applications'}, | ['Demos'] = {'DS homebrew demos', 'Demo Homebrews on DS', 'DS Homebrew Applications'}, |
Revision as of 15:07, 7 Mayıs 2024
Documentation for this module may be created at Module:Infobox DS 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 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 ['Math'] = {'DS homebrew applications', 'Maths Applications on DS', 'DS Homebrew Applications'}, ['Media Players'] = {'DS homebrew applications', 'Media Players on DS', 'DS Homebrew Applications'}, ['Music Apps'] = {'DS homebrew applications', 'Music Applications on DS', 'DS Homebrew Applications'}, ['Operating Systems'] = {'DS homebrew applications', 'Operating Systems on DS', 'DS Homebrew Applications'}, ['Other Apps'] = {'DS homebrew applications', 'Other Applications on DS', 'DS Homebrew Applications'}, ['System Tools'] = {'DS homebrew applications', 'System Tools on DS', 'DS Homebrew Applications'}, ['File Browsers'] = {'DS homebrew applications', 'Utility Applications on DS', 'DS Homebrew Applications'}, ['Utilities'] = {'DS homebrew applications', 'Utility Applications on DS', 'DS Homebrew Applications'}, ['File Browsers'] = {'DS homebrew applications', 'Utility Applications on DS', 'DS Homebrew Applications'}, ['Save Managers and Editors'] = {'DS homebrew applications', 'Utility Applications on DS', 'DS Homebrew Applications'}, -- Games ['Action'] = {'DS homebrew games', 'Action Games on DS', 'DS Homebrew Games'}, ['Adventure'] = {'DS homebrew games', 'Adventure Games on DS', 'DS Homebrew Games'}, ['Arcade Games'] = {'DS homebrew games', 'Arcade Games on DS', 'DS Homebrew Games'}, ['Board'] = {'DS homebrew games', 'Board Games on DS', 'DS Homebrew Games'}, ['Card'] = {'DS homebrew games', 'Card Games on DS', 'DS Homebrew Games'}, ['Game Engine'] = {'DS homebrew games', 'Game Engines on DS', 'DS Homebrew Games'}, ['Music'] = {'DS homebrew games', 'Music Games on DS', 'DS Homebrew Games'}, ['Other Games'] = {'DS homebrew games', 'Other Games on DS', 'DS Homebrew Games'}, ['Platform'] = {'DS homebrew games', 'Platform Games on DS', 'DS Homebrew Games'}, ['Puzzle'] = {'DS homebrew games', 'Puzzle Games on DS', 'DS Homebrew Games'}, ['Racing'] = {'DS homebrew games', 'Racing Games on DS', 'DS Homebrew Games'}, ['Role Playing'] = {'DS homebrew games', 'Role Playing Games on DS', 'DS Homebrew Games'}, ['Shooter'] = {'DS homebrew games', 'Shooter Games on DS', 'DS Homebrew Games'}, ['Simulation'] = {'DS homebrew games', 'Simulation Games on DS', 'DS Homebrew Games'}, ['Strategy'] = {'DS homebrew games', 'Strategy Games on DS', 'DS Homebrew Games'}, ['Trivia'] = {'DS homebrew games', 'Trivia Games on DS', 'DS Homebrew Games'}, -- Emulators ['Arcade'] = {'DS homebrew emulators', 'Arcade Emulators on DS', 'DS Homebrew Emulators'}, ['Computer'] = {'DS homebrew emulators', 'Computer Emulators on DS', 'DS Homebrew Emulators'}, ['Console'] = {'DS homebrew emulators', 'Console Emulators on DS', 'DS Homebrew Emulators'}, ['Handheld'] = {'DS homebrew emulators', 'Handheld Emulators on DS', 'DS Homebrew Emulators'}, ['Other Emulators'] = {'DS homebrew emulators', 'Other Emulators on DS', 'DS Homebrew Emulators'}, -- Homebrew Loaders ['Homebrew Launchers'] = {'DS homebrew loaders', 'Homebrew Loaders on DS', 'DS Homebrew Applications'}, ['Kernels'] = {'DS homebrew loaders', 'Homebrew Loaders on DS', 'DS Homebrew Applications'}, ['Title Launchers'] = {'DS homebrew loaders', 'Homebrew Loaders on DS', 'DS Homebrew Applications'}, -- PC (PC Utilities for DS) ['Development Libraries'] = {'DS PC utilities', 'Development Utilities for DS', 'PC Utilities for DS'}, ['Development Tools'] = {'DS PC utilities', 'Development Utilities for DS', 'PC Utilities for DS'}, ['File Operation'] = {'DS PC utilities', 'File Management Utilities for DS', 'PC Utilities for DS'}, ['Save and Game Managers'] = {'DS PC utilities', 'Other PC Utilities for DS', 'PC Utilities for DS'}, ['ROM Managers'] = {'DS PC utilities', 'Other PC Utilities for DS', 'PC Utilities for DS'}, ['ROM Patchers'] = {'DS PC utilities', 'ROM Patchers', 'PC Utilities for DS'}, ['PC Utilities'] = {'DS PC utilities', 'Other PC Utilities for DS', 'PC Utilities for DS'}, ['DS Emulators'] = {'DS PC utilities', 'Other PC Utilities for DS', 'PC Utilities for DS'}, -- Demos ['Demos'] = {'DS homebrew demos', 'Demo Homebrews on DS', 'DS Homebrew Applications'}, -- ROM Hack ['Game Hacks'] = {'all DS Rom Hacks', 'DS Game Hacks', 'DS Homebrew Rom Hacks'}, ['Translations'] = {'all DS Rom Hacks', 'DS Game Translations', 'DS Homebrew Rom Hacks'}, ['Hack Utilities'] = {'all DS Rom Hacks', 'DS Hack Utilities', 'DS Homebrew Rom Hacks'}, ['Save Editors'] = {'all DS Rom Hacks', 'DS Hack Utilities', 'DS Homebrew 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 = { '3dsx', '3ds', '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:DS Open Source Homebrew]]' end return getLink( 'Source', source ) .. '[[Category:DS 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:3DS Homebrew in DownloadMii]]' else return "Version '''" .. dmversion .. "''' downloadable via [[DownloadMii]] [[Category:3DS 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, header2 = 'General', label3 = 'Author', data3 = a.author, label4 = 'Contributor', data4 = userList( a.contributor ), label5 = 'Ported by', data5 = userList( a.portedby ), label6 = 'Type', data6 = getType( a['type'] ), label7 = 'Version', data7 = a.version, label8 = 'License', data8 = getLicense( a.license ), label9 = 'Language', data9 = a.language, label10 = 'Format', data10 = getFormats( a ), label11 = 'Last Updated', data11 = a.lastupdated, header13 = div3(), header20 = div(), header1 = 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:3DS Homebrew missing CIA titleID]]' ibData.label113 = 'Unique ID' ibData.data113 = a.uniqueID or 'Unknown[[Category:3DS Homebrew missing CIA uniqueID]]' end return infobox.infobox( ibData ) end return p