Модуль:ExampleList
Внешний вид
Гьаб модулалъе къимат кьун буго хӀалтӀизабиялъе хӀадураб гӀадин. РикӀкӀун буго киналниги багал лӀугӀизарун ругилан ва гьеб гӀатӀидго хӀалтӀизабизе бегьулилан. Гьеб бихьизабизе бегьула баянгьумеразда ва хӀалтӀизабизе рекомендация кьезе бегьула цӀиял гӀахьалчагӀазе. Гьеб хисизабиялъе ва тестинабиялъе хӀалтӀизабе салулгъамас. |
Реализация шаблонов {{стопка примеров}} и {{таблица примеров}}, см. их документацию.
См. также
[код хисизабизе]- Модуль:Example
- {{пример}}
local p = {}
-- используется для того, чтобы можно было удалять элементы из таблицы
local function copy(other)
local res = {}
for k,v in pairs(other) do
res[k] = v
end
return res
end
-- вызов шаблона, при ошибке возвращает пустую строку
local function expand(frame, tname, targs)
local success, result = pcall(
frame.expandTemplate,
frame,
{title = tname, args = targs}
)
if success then
return result
else
return ''
end
--return frame:expandTemplate({title = tname, args = args})
end
function p.main(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
yesno = require('Module:Yesno')
local trim = not (yesno(frame:getParent().args.trim or frame:getParent().args._trim, false) == false) -- по умолчанию true
local args = copy(getArgs(frame, {trim = trim, removeBlanks = false})) --copy(frame.args)
local tname = args.t or args._t or args.template or args._template
local opener = args.opener or args._opener
local sep = args.sep or args._sep
local prefix = args.prefix or args._prefix
local postfix = args.postfix or args._postfix
local style = args.style or args._style
local nobr = args.nobr or args._nobr
local nocat = args.nocat or args._nocat
local spaced = args.spaced or args._spaced
local comment_sep = args.comment_sep or args._comment_sep
local between = args.between or args._between
local inthemiddle = yesno(args.inthemiddle or args._inthemiddle, false)
local wide = yesno(args.wide or args._wide, false)
if not opener then
if style == 'wikitable' then
opener = '|-\n| '
elseif style == 'pre' or style == '*pre' or style == 'pre↓' or style == '*pre↓' then
opener = ''
if between == nil and (style == '*pre' or style == '*pre↓') then
between = '<div style="margin-top:3em"></div>' -- содержимое шаблона {{^|3em}}
end
else
opener = '* '
end
end
if between == nil and (style == 'pre' or style == '*pre' or style == 'pre↓' or style == '*pre↓') then
between = '<div style="margin-top:2em"></div>' -- содержимое шаблона {{^|2em}}
end
if tname == '' or tname == nil then -- при отсутствующем имени шаблона берём его из названия страницы
tname = mw.language.new('ru'):lcfirst(mw.title.getCurrentTitle().rootText)
end
local content, are_comments, i = '', false, 0
for k, v in pairs(args) do
local pre_targs, targs = {}, {}
if type(k) == 'number' then
i = i + 1
if v ~= '' then
pre_targs = mw.text.split(v, '\\')
for k2, v2 in pairs(pre_targs) do
equals_pos = nil
if v2:sub(1, 1) == '_' and v2:find('=') then -- параметры настроек шаблона "пример"
equals_pos = v2:find('=')
end
if equals_pos then
param = v2:sub(1, equals_pos-1)
value = v2:sub(equals_pos+1)
targs[param] = value
if param == '_comment' then are_comments = true end
else
if v2:sub(1, 5) == '_' then
targs[k2] = v2:gsub('_', '_')
else
targs[k2] = v2
end
end
end
end
table.insert(targs, 1, tname)
targs._sep, targs._style, targs._nobr, targs._nocat, targs._spaced, targs._comment_sep, targs._prefix, targs._postfix
= sep, style, nobr, nocat, spaced, comment_sep, prefix, postfix
local adjusted_opener
if style == 'pre' and opener == '*' and targs._before == nil then
adjusted_opener = ''
targs._style = '*pre'
else
adjusted_opener = opener
end
--[[if not targs._style then
targs._style = style
end]]
content = content .. (i ~= 1 and (between and between .. '\n' or '\n') or '') .. adjusted_opener .. tostring(expand(frame, 'пример', targs))
end
end
if style == 'wikitable' then
local table_content = ''
if not inthemiddle then
table_content = '{| class="wikitable '
if wide then table_content = table_content .. 'wide' end
table_content = table_content .. '"\n! Код !! Результат'
if are_comments then table_content = table_content .. ' !! Комментарий' end
end
content = table_content .. '\n' .. content
if not inthemiddle then
content = content .. '\n|}'
end
end
return content
end
return p