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

Материал из Posmotrelisu
Перейти к навигации Перейти к поиску
 
(не показано 56 промежуточных версий этого же участника)
Строка 1: Строка 1:
local p = {};
local p = {}


p.test = function ( frame )
p.sortlist = function (frame)
return "Ad Victoriam!"
local args = require('Module:Arguments').getArgs(frame)
end


p.randElem = function ( frame )
local otstup= ' • '
local cnt=0
local list_end= ' … '


-- Код курильщика
if args['отступ'] ~= nil then otstup=args['отступ'] end
for i, val in ipairs(frame.args) do
cnt=i
end


local time=os.time()
local res_t = {}
 
local res=""
return time.."  "..cnt.." "..frame.args[time%cnt+1]


for i in ipairs(args) do
table.insert (res_t, args[i])
end
end


table.sort (
res_t,
function (a, b) return a < b end
)


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


return res..list_end
end
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
--[[
Формат использования
...
|Заголовок|Ими гордится школа
|Список|Вася Петя Маша Вовочка
|Заголовок|Ими гордится город
|Подзаголовок|Пожарные|Список|Горюч Фаер Агни
|Подзаголовок|Врачи|Список|Лечил Оживил
|Подзаголовок|Ученые|Список|Знаток Эксперт Вовочка
|Заголовок|Ими не гордится город
|Заголовок|Вовочка!!!
]]
-- Создать строку в таблице
-- 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
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
-- table.insert (row, args[i], args[i+1])
        row[args[i]]=args[i+1]
i=i+2
end
end
return result..'</table>'
end


return p
return p

Текущая версия на 15:06, 11 февраля 2025

Для документации этого модуля может быть создана страница Модуль:Тест/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

return p