Документация
local p = {}
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local NS_CAT = mw.site.namespaces[14].name
local START = 'Начало'

local function link(name, text, par)
	return '[' .. tostring(mw.uri.fullUrl(NS_CAT .. ':' .. name, par)) .. ' ' .. text .. ']'
end

local function td_link_template(pagename, td, v, text)
	td:wikitext(link(pagename, text or v, {from = v}))
end


function p.years(frame)
	local args = getArgs(frame)
	local pagename = args.name or args['имя'] or mw.title.getCurrentTitle().text
	local min_val = tonumber(args.min or args['мин'] or -1000)
	local max_val = tonumber(args.max or args['макс'] or 2000)
	local step = tonumber(args.step or args['шаг'] or 200)
	local bc_step = tonumber(args.bcstep or args['шаг до н. э.'] or 200)
	local prefix = args.prefix or args['префикс'] or '*'
    prefix = mw.ustring.gsub(prefix, '<пробел>', ' ')
	local use_letters = yesno(args.letters or args['А']) --русская А
	local wt = mw.html.create('table'):attr('role', 'presentation'):addClass('plainlinks'):css('border', '1px solid #a2a9b1'):css('background-color', '#f9f9f9'):css('padding', '5px'):css('font-size', '95%'):css('margin-left', 'auto'):css('margin-right', 'auto')
	local row = wt:tag('tr')
	row:tag('td'):wikitext(link(pagename, START, {}))
	local i = min_val
	repeat
		if i < 0 then
			td_link_template(pagename, row:tag('td'), prefix..tostring(-10000-i), tostring(i))
			i = i + bc_step
		else
			td_link_template(pagename, row:tag('td'), prefix..tostring(i), tostring(i))
			i = i + step
		end
	until i > max_val
	if use_letters then
		td_link_template(pagename, row:tag('td'), 'А', 'Др. категории')
	end
	return tostring(wt)
end

return p