Модуль:Оформление
Перейти к навигации
Перейти к поиску
Классика☸Атлас
Для документации этого модуля может быть создана страница Модуль:Оформление/doc
local p = {}
p.sortlist = function (frame)
local args = require('Module:Arguments').getArgs(frame)
local otstup= ' • '
local list_end= ' … '
if args['отступ'] ~= nil then otstup=args['отступ'] end
local res_t = {}
local res=""
for i in ipairs(args) do
table.insert (res_t, args[i])
end
table.sort (
res_t,
function (a, b) return a < b end
)
for i in ipairs(res_t) do
res=res..res_t[i]..otstup
end
return res..list_end
end
p.vkladki= function ( frame )
local args = require('Module:Arguments').getArgs(frame, {
trim = false,
removeBlanks = false})
if args[1] == nil then return '<font color="red">Нет заголовка, видимо [[Шаблон:Вкладки]] вызван без параметров</font>' end
if args[2] == nil then return '<font color="red">Нет текста вкладки, видимо [[Шаблон:Вкладки]] вызван без 2-го параметра</font>' end
local h='<div style="text-align:left;border-bottom:1px solid #aaaaaa;margin-top:10px"><p>'
local b='<div>'
h=h..'<span class="tab_click tab_active" id="tab_id_'..args[1]..'">'..args[1]..'</span>'
b=b..'<div id="tab_id_'..args[1]..'">'..args[2]..'</div>'
local i=3
while true do
if args[i] == nil then break end
h=h..'<span class="tab_click" id="tab_id_'..args[i]..'">'..args[i]..'</span>'
i=i+2
end
h=h..'</p></div>'
i=4
while true do
if args[i] == nil then break end
b=b..'<div id="tab_id_'..args[i-1]..'" style="display: none;">'..args[i]..'</div>'
i=i+2
end
b=b..'</div>'
return h..b
end
-- Создать строку в таблице
-- ktable это таблица ключей
-- row это таблица переданных значений
-- empty это элемент, который подставляется в строку, если не было переданного значения
function create_row ( ktable, row, empty )
local row_str=""
for j in ipairs(ktable) do
if row[ktable[j]] ~= nil then
row_str=row_str..'<td>'..row[ktable[j]]..'</td>'
else
row_str=row_str..'<td>'..empty..'</td>'
end
end
return row_str
end
-- Сгенерировать таблицу с использованием ключей
--
p.tablekey = function ( frame )
local args = require('Module:Arguments').getArgs(frame)
if args["ключи"] == nil then -- обязательный параметр
return "Не заданы ключи для таблицы"
end
local result=""
if args["атрибуты"] ~= nil then
result="<table "..args["атрибуты"].." >"
else
result="<table "
if args["класс"] ~= nil then result=result..'class="'..args["класс"]..'" ' end
if args["стиль"] ~= nil then result=result..'style="'..args["класс"]..'" ' end
result=result..' >'
end
local empty=""
if args["пусто"] ~= nil then empty=args["пусто"] end
local keys = {}
keys = mw.text.split (args["ключи"], "%s")
local row={} -- сюда записываются пары ключ=значение
local i=1
if args[i] == "заголовок" then
i=2
while true do
if i == #keys+2 then break end
result=result..'<th>'..args[i]..'</th>'
i=i+1
end
end
while true do
if args[i] == nil then
if next(row) == nil then break end -- если пусто, то уходим
result=result..'<tr>'..create_row( keys, row, empty )..'</tr>' -- на случай, если что-то осталось
break
end
if args[i]=="конец строки" then
result=result..'<tr>'..create_row( keys, row, empty )..'</tr>'
i=i+1
row={}
else
row[args[i]]=args[i+1]
i=i+2
end
end
return result..'</table>'
end
--Ниже будет код для дам, кавалеров и полотен дня.
p.museum = function ( frame )
local args = require('Module:Arguments').getArgs(frame, {
trim = false,
removeBlanks = false})
local output
if args["описание"] == nil then return '<font color="red">Не задан параметр 1, прочитайте документацию шаблона на его странице</font>' end
if args["картинка"] == nil then return '<font color="red">Не задан параметр 2, прочитайте документацию шаблона на его странице</font>' end
output = args["описание"]..'<br>'..'[[Файл:'..args["картинка"]..'|center|500px]]'
if args["show"] ~= nil and args["hide"] ~= nil then
local text= '123123123123123'
--TL:DR разобраться как впихнуть спойлер, или придумать аналог.
print(frame:callParserFunction( '#spoiler', { show='test', hide='test2', text} ))
local i=1
while true do
if args[i] == nil then break end
output=output..args[i]..'[[Файл:'..args[i+1]..'|center|750px]]'
i=i+2
end
output=output..'}}'
end
return output
end
return p