2023年政策修订增补工作正在进行中,欢迎参与!
  • Moegirl.ICU:萌娘百科流亡社群 581077156(QQ),欢迎对萌娘百科运营感到失望的编辑者加入
  • Moegirl.ICU:账号认领正在试运行,有意者请参照账号认领流程

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