Module:Scientific American volume issues

From Wikisource
Jump to navigation Jump to search

--[=[
Implements [[Template:Scientific American volume issues]]
]=]

local p = {} --p stands for package

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

function pad_number(n, pad)
	if n == nil or pad == nil or n < 0 or pad <= 0 then
		return n
	else
		local padded_n = tostring(n)
		while string.len(padded_n) < pad do
			padded_n = "0" .. padded_n
		end
		return padded_n
	end
end

function p.scientific_american_volume_issues(frame)
	local args = getArgs(frame)
	
	local volume = tonumber(args.volume or 1)
	local series = tonumber(args.series or 1)
	local issues = tonumber(args.issues or 52)
	
	local volume_list = {}
	for i = 1, issues do
		volume_list[i] = "* [[Index:Scientific American - Series " .. series .. " - Volume " .. pad_number(volume, 3) .. " - Issue " .. pad_number(i, 2) .. ".pdf|" .. i .. "]]"
	end
	
	return "'''Volume&nbsp;" .. volume .. "&nbsp;issues:'''&nbsp;" .. frame:expandTemplate {
		['title'] = 'flatlist',
		['args'] = {table.concat(volume_list, "\n")}
	}
end

return p