Модуль:Доработка
Материал из ВикиФур
local p = require('Модуль:Шаблон')
p.DEFAULT_DATA_SOURCE = 'Модуль:Доработка/Список'
p.MIN_OUTSIDE_POINTS = 3
p.MIN_HIDDEN_POINTS = 2
p.simple_template = '%list%'
p.more_template = [[
%list%
{{скрытый|Ещё %more_count%...|
%more%
}}]]
p.point_template = "* '''%title%''': %desc%<sup>[[:Категория:%cat%|все]]</sup>"
function p.expand(list, production)
local points = {}
for i, v in ipairs(list) do
table.insert(points, p.expand_point(v, production))
end
local template
local more_count
if #points >= p.MIN_OUTSIDE_POINTS + p.MIN_HIDDEN_POINTS then
template = p.more_template
more_count = #points - p.MIN_OUTSIDE_POINTS
else
template = p.simple_template
more_count = 0
end
local basic_list = ''
local more_list = ''
for i, v in ipairs(points) do
if i > #points - more_count then
if more_list ~= '' then more_list = more_list.."\n" end
more_list = more_list..v
else
if basic_list ~= '' then basic_list = basic_list.."\n" end
basic_list = basic_list..v
end
end
local result
result = p.str_replace(template, '%list%', basic_list)
result = p.str_replace(result, '%more_count%', tostring(more_count))
result = p.str_replace(result, '%more%', more_list)
return result
end
function p.expand_point(point, production)
local title
if point.guide then
title = '[[:'..point.guide..'|'..point.title..']]'
else
title = point.title
end
local result
result = p.str_replace(p.point_template, '%title%', title)
result = p.str_replace(result, '%desc%', point.desc)
result = p.str_replace(result, '%cat%', point.category)
if production then
result = result..'[[Категория:'..point.category..']]'
end
return result
end
return p