Модуль:Доработка

Материал из ВикиФур
Перейти к: навигация, поиск
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