Module:SummonAura
Jump to navigation
Jump to search
Documentation for this module may be created at Module:SummonAura/doc
local p = {}
local function stripRefTags(wikitext)
local w = wikitext:gsub("<ref%s[^>]*/>", "")
w = w:gsub("<ref[^>]*>.-</ref>", "")
return w
end
function findArg(needle, haystack)
local pattern = '|'..needle..'='
local startIndex = haystack:find(pattern, 0, true)
if startIndex == nil then
return 'Not Found'
end
startIndex = startIndex + pattern:len()
local endIndex = haystack:find('\n|', startIndex, true)
endIndex = endIndex - 1
local result = haystack:sub(startIndex,endIndex)
return mw.text.trim(result)
end
function p.renderCall(frame)
mw.log('render start: ' .. os.clock())
local template = frame.args.template
local summonName= frame.args.summonName
local auraIndex= frame.args.auraIndex
local subaura= frame.args.subaura
local additionalArgs = frame.args.additionalArgs
mw.log('load data: ' .. os.clock())
local title = mw.title.new(summonName)
local rawPage = title:getContent()
mw.log('find args:' .. os.clock())
local descArg
if subaura == 'true' then
descArg = 'subaura'..auraIndex
else
descArg = 'aura'..auraIndex
end
local desc = findArg(descArg, rawPage)
mw.log('expandTemplate')
local args = {}
args['link'] = summonName
args['desc'] = frame:preprocess(stripRefTags(desc))
args['subaura'] = frame.args.subaura
-- Pass `frame.args.additionalArgs` to `args`
if additionalArgs ~= nil then
for arg in (additionalArgs):gmatch('[^;]+') do
local i = arg:find('=')
args[arg:sub(0, i-1)] = arg:sub(i+1)
end
end
mw.log('done: ' .. os.clock())
return frame:expandTemplate{ title = template, args = args }
end
return p