Модуль:Участник:Artem Korzhimanov/Статьи

Документация

Этот модуль формирует таблицу на странице Участник:Artem Korzhimanov/Статьи.

local p = {}

local data = mw.loadData('Модуль:Участник:Artem Korzhimanov/Статьи/data')
local frame = mw.getCurrentFrame()

local themes = {
	'Физика',
	'Астрономия',
	'Экзопланеты',
	'Российская академия наук',
	'Институты РАН',
	'Академики РАН',
	'Учёные',
	'Научные журналы',
	'Научные награды',
	'Научные учреждения',
	'Годы в науке',
	'Нижний Новгород',
	'Главы Нижнего Новгорода и Горького',
	'Политики',
	'Баскетбол',
	'Хоккей',
	'Футбол',
	'Женский футбол',
	'Флорбол',
	'Другое'
	}

-- формирует заголовок таблицы
p.makeHeader = function()
	return mw.ustring.format('%s%s',
		'\n{| class="standard sortable"\n|-\n',
		'! Название статьи !! Размер статьи, кБ !! Процент моего вклада\n|-\n'
		)
end

-- формирует подвал таблицы
p.makeFooter = function()
	return mw.ustring.format('%s',
		'\n|}\n'
		)
end

-- формирует подзаголовок темы
p.makeSubheader = function(name)
	return mw.ustring.format('%s%s',
		'\n|-\n! colspan=3 |', name
		)
end

-- формирует строку таблицы
p.makeLine = function(title)
	return mw.ustring.format('%s%s%s%s%s%s%s',
		'\n|-\n| [[', title, ']]',
		'\n| style="text-align:right;" |', frame:callParserFunction('PAGESIZE:' .. title),
		'\n| style="text-align:right;" |', tostring(data[title].part)
		)
end

-- формирует список статей для данной темы
p.makeSubList = function(name)
	local list = ''
	for i, v in pairs(data) do
		if v.theme == name then
			list = list .. p.makeLine(i)
		end
	end
	return list
end

-- формирует полный список статей с подзаголовками тем
p.makeList = function()
	local list = ''
	for i, t in pairs(themes) do
		list = list .. p.makeSubheader(t)
		list = list .. p.makeSubList(t)
	end
	return list
end

-- формирует итоговую таблицу
p.makeTable = function()
	return mw.ustring.format('%s%s%s',
		p.makeHeader(),
		p.makeList(),
		p.makeFooter()
	)
end

return p