Модуль:Оформление: различия между версиями
Перейти к навигации
Перейти к поиску
ЗаяцВолк (обсуждение | вклад) |
ЗаяцВолк (обсуждение | вклад) |
||
Строка 40: | Строка 40: | ||
-- Создать строку в таблице | |||
-- 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 | |||
if | 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 | 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 | end | ||
return p | return p |
Версия 08:31, 13 июля 2024
Для документации этого модуля может быть создана страница Модуль:Оформление/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 return p