local module = {}
local getArgs = require('Module:Arguments').getArgs
function getRandomNumber(max)
local max = tonumber(max)
local ran = math.random(1, max) + tonumber(os.time())
return ran % max
end
function random_count(count, max, content_table)
local elected_indexes = {}
local result = {}
if count > max then count = max end
while #elected_indexes < count do
local index = getRandomNumber(max) + 1
local already_selected = false
for _, v in ipairs(elected_indexes) do
if v == index then
already_selected = true
break
end
end
if not already_selected then
elected_indexes[#elected_indexes + 1] = index
end
end
for _, index in ipairs(elected_indexes) do
result[#result + 1] = content_table[index]
end
return table.concat(result, "\n")
end
function module.temple(args, frame)
local titleName = args['page'] or ''
local title = mw.title.new(titleName)
if not title.exists then
return error("指定页面不存在")
end
local content_before = title:getContent()
local mtr1, mtr2 = string.gsub(content_before, "Temple ?_?Song", "")
local content_table = {}
local pattern = "{{Temple ?_?Song.-|image.-}}\n"
local mtr4 = content_before
for i = 1, mtr2, 1 do
local mtr3 = string.match(mtr4, pattern)
mtr4 = string.gsub(mtr4, pattern, "", 1)
content_table[i] = mtr3
end
local count = tonumber(args['count']) or 6
local mtr5 = random_count(count, mtr2, content_table)
--local content = frame:preprocess(content_before)
return frame:preprocess(mtr5)
end
function module.templemain(frame)
local args = getArgs(frame)
return module.temple(args, frame)
end
return module