置顶公告:【置顶】关于临时开启评论区所有功能的公告(2022.10.22) | 【置顶】关于本站Widget恢复使用的公告
  • 你好~!欢迎来到萌娘百科镜像站!如需查看或编辑,请联系本站管理员注册账号。
  • 本镜像站和其他萌娘百科的镜像站无关,请注意分别。

Module:Sandbox/東東君/animeShow

贴贴♀百科,万娘皆可贴的百科全书!转载请标注来源页面的网页链接,并声明引自贴贴百科。内容不可商用。
跳到导航 跳到搜索
Template-info.svg 模块文档  [创建] [刷新]
local module = {}

local getArgs = require('Module:Arguments').getArgs

local randomSeed = 0
function module._main(args)
	function random(count, min, max)
		randomSeed = randomSeed + 1
		math.randomseed(tostring(os.time()):reverse():sub(1, 7)..randomSeed)
		
		if count == 1 then
			return math.random(min, max)	
		end
		
		local order = {}
		function test(num)
			for i=1, #order do
				if num == order[i] then
					return true
				end
			end
			return false
		end
		
		repeat
		    local ran = math.random(min, max)
			if test(ran) == false then  
				order[#order + 1] = ran
			end
		until(#order == count)
		
		return order
	end
	
	local data = args[1]
	local num = tonumber(args['num']) or 19 
	local anime = {}
	local iter = string.gmatch(data, '%[%[(.-)%]%]')
	for v in iter do
		v = string.gsub(v, '<.->', '')
		local link = v
		local text = v
		if string.find(v, '%|') ~= nil then
			link = string.gsub(v, '([^|]*)%|?([^|]*)', '%1')
			text = string.gsub(v, '[^|]*%|?([^|]*)', '%1')	    		
		end
		if mw.ustring.find(text, '^[查论编]$') == nil then
			local r = random(1, 0, 255)
			local g = random(1, 0, 255)
			local b = random(1, 0, 255)
			local element = '[['..link..'|<span style="display:inline-block; color:rgb('..r..','..g..','..b..');">'..text..'</span>]]'
			anime[#anime + 1] = element
		end
	end
	
	local set = {}
	local ran = random(num, 1, #anime)
	for i=1, num do
		set[#set + 1] = anime[ran[i]]	
	end
	
	local str = ''
	for i=1, #set do
		str = str..set[i]..'$'
	end
	
	return str
end

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

return module