Модуль:Тест: различия между версиями

Материал из Posmotrelisu
Перейти к навигации Перейти к поиску
Строка 1: Строка 1:
local p = {};  
local p = {};  
p.vkladki= function ( frame )
local args = require('Module:Arguments').getArgs(frame, {
trim = false,
removeBlanks = false})


p.test = function ( frame )
if args[1] == nil then return '<font color="red">Нет заголовка, видимо [[Шаблон:Вкладки]] вызван без параметров</font>' end
return "Ad Victoriam!"
if args[2] == nil then return '<font color="red">Нет текста вкладки, видимо [[Шаблон:Вкладки]] вызван без 2-го параметра</font>' end
end
 
p.randElem = function ( frame )
local cnt=0


-- Код курильщика
local h='<div style="text-align:left;border-bottom:1px solid #aaaaaa;margin-top:10px"><p>'
for i, val in ipairs(frame.args) do
local b='<div>'
cnt=i
end


local time=os.time()
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[1]..'==='..args[2]..'</div>'


return time.."  "..cnt.." "..frame.args[time%cnt+1]
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
end


h=h..'</p></div>'


p.iter_test = function ( frame )
i=4
local base=""
for name, val in pairs(frame.args) do
base=base..'<br> key: '..name..' zn: '..val
end
return base


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
end


local subfun = {}
b=b..'</div>'
 
local text=""
local pos=1 -- итерируемая позиция в разбираемом шаблоне
local result = {} -- массив частей html-кода для последующей склейки
local args={}
 
function header ()
if args[pos+1] == nil then text=text..'</tr>' return end
text = "<tr><td>"..args[pos+1].."</td>"
pos=pos+2
if subfun[args[pos]] ~= nil then
subfun[args[pos]]()
end
 
text=text..'</tr>'
 
end
 
function list ()
if args[pos+1] == nil then text=text..'</td>' return end
text=text.."<td>"..args[pos+1].."</td>"
pos=pos+2
end 
 
subfun["заголовок"]=header
subfun["список"]=list
 
 
--[[
Формат использования
 
...
|Заголовок|Ими гордится школа
|Список|Вася Петя Маша Вовочка
 
|Заголовок|Ими гордится город
|Подзаголовок|Пожарные|Список|Горюч Фаер Агни
|Подзаголовок|Врачи|Список|Лечил Оживил
|Подзаголовок|Ученые|Список|Знаток Эксперт Вовочка
 
|Заголовок|Ими не гордится город
|Заголовок|Вовочка!!!
]]
 
 
-- Создать строку в таблице
-- 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>'
return h..b


end
end


return p
return p

Версия 21:44, 29 июля 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[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

return p