Module:Goetia

require "string" require "table"

local p = {}

local COLUMNS = 9

function p.entry(frame) local args -- If called via #invoke, use the args passed into the invoking template. -- Otherwise, for testing purposes, assume args are being passed directly in. if frame == mw.getCurrentFrame then args = frame:getParent.args else args = frame end return args[1] .. ";" end

function p.all(frame) local args -- If called via #invoke, use the args passed into the invoking template. -- Otherwise, for testing purposes, assume args are being passed directly in. if frame == mw.getCurrentFrame then args = frame:getParent.args else args = frame end local col = 0 local sigils = "" local pages = "" local rows = {} for k, v in ipairs(args) do		data = mw.text.split(v, ";", true) sigils = sigils .. "\n|" .. data[2] pages = pages .. "\n|" .. data[1] col = col + 1 if col >= COLUMNS then col = 0 rows.insert(sigils .. "\n|-" .. pages) sigils = "" pages = "" end end if col ~= 0 then table.insert(rows, sigils .. "\n|-" .. pages) end return "{|" .. mw.text.listToText(rows, "\n|-", "") .. "\n|}\n" end

return p