Модуль:Оформление
Версия от 07:12, 22 августа 2024; Liners (обсуждение | вклад)
Для документации этого модуля может быть создана страница Модуль:Оформление/doc
local p = {} 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