模組:VG NFC category handle

require('strict')

local platformAlias = {
	-- Nintendo consoles
	['红白机'] = {'红白机', '紅白機', 'FC', 'Famicom', 'NES', 'Nintendo Entertainment System', 'FC磁碟机', 'FC磁碟機'},
	['超级任天堂'] = {'超级任天堂',  '超級任天堂', '超任', 'SFC', 'Super Famicom', 'SNES'},
	['任天堂64'] = {'任天堂64', 'N64'},
	['任天堂GameCube'] = {'任天堂GameCube', 'GameCube', 'NGC'},
	['Wii'] = {'Wii'},
	['Wii U'] = {'Wii ?U'},
	['任天堂Switch'] = {'任天堂Switch', 'Nintendo Switch', 'NS'},
	['Game Boy'] = {'Game ?Boy', 'GB'},
	['Game Boy Color'] = {'Game Boy Color', 'GBC'},
	['Game Boy Advance'] = {'Game Boy Advance', 'GBA'},
	['任天堂DS'] = {'任天堂DS', 'Nintendo DS', 'NDS'},
	['任天堂3DS'] = {'任天堂3DS', 'Nintendo 3DS', 'N3DS', '3DS'},
	
	-- Sony consoles 
	['PlayStation'] = {'PlayStation %(游戏机%)', 'PlayStation %(遊戲機%)', 'PlayStation', 'PS1'},
	['PlayStation 2'] = {'PlayStation 2', 'PS2'},
	['PlayStation 3'] = {'PlayStation 3', 'PS3'},
	['PlayStation 4'] = {'PlayStation 4', 'PS4'},
	['PlayStation 5'] = {'PlayStation 5', 'PS5'},
	['PlayStation Portable'] = {'PlayStation Portable', 'PSP'},
	['PlayStation Vita'] = {'PlayStation Vita', 'PSV', 'PS ?Vita'},
	
	-- Microsoft consoles
	['Xbox'] = {'Xbox %(游戏机%)', 'Xbox %(遊戲機%)', 'Xbox'},
	['Xbox 360'] = {'Xbox? 360', 'X360'},
	['Xbox One'] = {'Xbox? One', 'XOne'},
	['Xbox Series X/S'] = {'Xbox? X/?S', 'Xbox?X', 'Xbox?S', 'XSX', 'XS'},

	-- Sega consoles
	['世嘉Master System'] = {'世嘉Master System', 'Sega Master System', 'Master System', 'SMS'},
	['Mega Drive'] = {'Mega ?Drive', 'MD', 'Sega Genesis'},
	['世嘉土星'] = {'世嘉土星', 'Sega Saturn', 'SS'},
	['Dreamcast'] = {'Dreamcast'},
	
	-- Computer platforms
	['Windows'] = {'Windows', 'Microsoft Windows', 'Win'},
	['MacOS'] = {'macOS', 'Mac OS X', 'OS?X'},
	['Linux'] = {'Linux'},

	-- Mobile devices
	['Android'] = {'Android', '安卓'},
	['iOS'] = {'[Ii]OS', '[Ii]PadOS' },

	-- Others
	['街机'] = {'街机', '街機', '大型電玩', 'Arcade'},
	['日本成人'] = {'日本成人游戏', '日本成人遊戲', '十八禁'},

}


local getArgs = require('Module:Arguments').getArgs
local p = {}

local function returnCategory(input, property)
	for categoryName, aliases in pairs(platformAlias) do
		for _, k in ipairs(aliases) do
			if string.find(input, '^' .. k .. '$') then
				return '[[Category:' .. categoryName .. property .. ']]'
			end
		end
	end

	return '[[Category:' .. input .. property .. ']]'
	
end

function p.main(frame)
	local args = getArgs(frame)
	return p._main(args)
end

function p._main(args)
	-- Main module code goes here.
	local tab = {}
	for i = 1, 10 do
		if args[i] then
			table.insert(tab, returnCategory(args[i], args.property))
		end
	end
	if table.maxn(tab) == 0 then
		return returnCategory('电子', args.property)
	end
	return table.concat(tab)
end

return p