Модуль:Тест: различия между версиями
Перейти к навигации
Перейти к поиску
ЗаяцВолк (обсуждение | вклад) |
ЗаяцВолк (обсуждение | вклад) |
||
Строка 57: | Строка 57: | ||
subfun["список"]=list | subfun["список"]=list | ||
--[[ | --[[ | ||
Строка 76: | Строка 73: | ||
|Заголовок|Вовочка!!! | |Заголовок|Вовочка!!! | ||
]] | ]] | ||
function create_row () | |||
local row_str="" | |||
local j=1 | |||
for j,v in ipairs(keys) do | |||
if row[keys[j]] ~= nil then | |||
row_str=row_str..'<td>'..row[keys[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["key"] == nil then | |||
return "" | |||
end | |||
local empty="" | |||
if args["пусто"] ~= nil then empty=args["пусто"] end | |||
local keys = nw.text.split (args["key"], "%s") | |||
local result="<table>" | |||
local row={} | |||
local row_str="" | |||
local i=1 | |||
while true do | |||
if args[i] == nil then | |||
if row == {} then break end | |||
result=result..'<tr>'..create_row()..'</tr>' | |||
break | |||
end | |||
if args[i]=="конец строки" then | |||
result=result..'<tr>'..create_row()..'</tr>' | |||
i=i+1 | |||
row={} | |||
else | |||
table.insert (row, args[i], args[i+1]) | |||
i=i+2 | |||
end | |||
end | |||
return result..'</table>' | |||
end | |||
return p |
Версия 07:10, 13 июля 2024
Для документации этого модуля может быть создана страница Модуль:Тест/doc
local p = {}; p.test = function ( frame ) return "Ad Victoriam!" end p.randElem = function ( frame ) local cnt=0 -- Код курильщика for i, val in ipairs(frame.args) do cnt=i end local time=os.time() return time.." "..cnt.." "..frame.args[time%cnt+1] end p.iter_test = function ( frame ) local base="" for name, val in pairs(frame.args) do base=base..'<br> key: '..name..' zn: '..val end return base end local subfun = {} 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 --[[ Формат использования ... |Заголовок|Ими гордится школа |Список|Вася Петя Маша Вовочка |Заголовок|Ими гордится город |Подзаголовок|Пожарные|Список|Горюч Фаер Агни |Подзаголовок|Врачи|Список|Лечил Оживил |Подзаголовок|Ученые|Список|Знаток Эксперт Вовочка |Заголовок|Ими не гордится город |Заголовок|Вовочка!!! ]] function create_row () local row_str="" local j=1 for j,v in ipairs(keys) do if row[keys[j]] ~= nil then row_str=row_str..'<td>'..row[keys[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["key"] == nil then return "" end local empty="" if args["пусто"] ~= nil then empty=args["пусто"] end local keys = nw.text.split (args["key"], "%s") local result="<table>" local row={} local row_str="" local i=1 while true do if args[i] == nil then if row == {} then break end result=result..'<tr>'..create_row()..'</tr>' break end if args[i]=="конец строки" then result=result..'<tr>'..create_row()..'</tr>' i=i+1 row={} else table.insert (row, args[i], args[i+1]) i=i+2 end end return result..'</table>' end return p