Редактирование:
Модуль:Example
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
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 --предотвращает обработку вики-текста в отображении образца local function nowiki(str) local res = str str = mw.text.unstripNoWiki(str) str = string.gsub(str, '%[', '[') str = string.gsub(str, '%]', ']') str = string.gsub(str, '<', '<') str = string.gsub(str, '>', '>') str = string.gsub(str, '{', '{') str = string.gsub(str, '|', '|') str = string.gsub(str, '}', '}') str = string.gsub(str, '\'', ''') str = string.gsub(str, '"', '"') str = string.gsub(str, '(://)', '<span>%1</span>') return str end --удаляет из параметров вписанные через HTML-сущности "<nowiki>" и заменяет "{{=}}" на "=" для вызова шаблона local function process_nowiki_equals(str) str = str:gsub('<nowiki>', ''):gsub('</nowiki>', '') :gsub('<nowiki>', ''):gsub('</nowiki>', '') :gsub('{{=}}', '=') :gsub('{{=}}', '=') :gsub('{{=}}', '=') :gsub('{{=}}', '=') :gsub('&', '&') return str end function p.main(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end local yesno = require('Module:Yesno') local args = copy(getArgs(frame, {trim = false, removeBlanks = false})) --copy(frame.args) local tag = args._tag local container = args._container or nil local ucFirst = yesno(args._u, false) local link = yesno(args._link, false) local sep = args._sep and args._sep .. ' ' local endl = args._endl or '' local prefix = args._prefix or args['_pre-text'] or '' local postfix = args._postfix or args['_post-text'] or '' local nobr = yesno(args._nobr, false) local spaced = yesno(args._spaced, false) local nocat = yesno(args._nocat, false) local style = args._style if style == '' then style = nil end -- передаётся шаблоном {{стопка примеров}}, один разделитель на все примеры local comment_sep = args._comment_sep -- полезно в шаблоне {{стопка примеров}} (это просто текст в конце) local after = args._after or args._comment -- полезно в шаблоне {{стопка примеров}} (это просто текст в начале) local before = args._before and args._before .. ' ' or '' if style == 'pre' then if not (tag or container) then container = 'pre' end sep = sep or '\n' elseif style == '*pre' then if not (tag or container) then container = '*pre' end sep = sep or '\n' elseif style == 'pre↓' then if not (tag or container) then container = 'pre' end -- содержимое шаблона {{sp↓|50%||-0.5em}} sep = sep or '<div style="margin:-0.5em 50% 0.7em;"><span style="font-size:150%;">↓</span></div>\n' elseif style == '*pre↓' then if not (tag or container) then container = '*pre' end -- содержимое шаблона {{sp↓|50%||-0.5em}} sep = sep or '<div style="margin:-0.5em 50% 0.7em;"><span style="font-size:150%;">↓</span></div>\n' elseif style == 'wikitable' then if not (tag or container) then tag = 'kbd' end sep = sep or '\n| ' comment_sep = '\n| ' end if not (tag or container) then tag = 'code' end if not sep then sep = '→ ' end if not comment_sep then comment_sep = ' ' end if (after) then if not style then after = '<small>' .. after .. '</small>' end after = comment_sep .. after end if not after then after = '' end local nwt if tag then nwt = mw.html.create(tag):tag(tag) -- "no-wiki tag", внутри него шаблон не вызывается if nobr then nwt:css('white-space', 'nowrap') end end local content = nowiki(prefix) .. '{{' -- для накопления содержимого тэга local tname = args._template or args[1] if tname == nil then -- если имя шаблона содержит знак "=" (работает, только если нет неименованных параметров) local nextfunc, static, cur = pairs(args) local k, v = nextfunc(static, cur) if k ~= nil and type(k) ~= 'number' and not k:find('^_') then -- именованные параметры, исключая модификаторы внешнего вида tname = k .. "=" .. v args[k] = nil --больше этот параметр нам не пригодится end end if tname == '' or tname == nil then -- при опущенном первом параметре берём имя шаблона из названия страницы local ru = mw.language.new('ru') local currentTitle = mw.title.getCurrentTitle().rootText if not ucFirst and ((ru:uc(currentTitle) ~= currentTitle and -- названия со всеми заглавными буквами not mw.ustring.match(currentTitle, '^[А-Яа-яA-Za-z]+:?[А-ЯA-Z]') -- Книга:Литературное наследство, TranslateDate ) or #currentTitle == 1 ) then tname = ru:lcfirst(currentTitle) else tname = currentTitle end end -- Имя вызываемого шаблона в неименованном первом параметре (или же взято из названия страницы или -- из именованного параметра в отсутствие неименованных — в следующей строчке вреда нет в любом случае), -- больше его обрабатывать не надо if args._template == nil then table.remove(args,1) end if link then content = content .. '[[Шаблон:' .. tname .. '|' .. tname .. ']]' else content = content .. tname end content = content .. endl local targs, equals_pos, param, value, left_shift = {}, 0, '', '', 0 for k, v in pairs(args) do if type(k) == 'number' then -- неименованные параметры equals_pos = v:find('=') if equals_pos and v:find('{{=}}') == equals_pos-2 then equals_pos = nil end if equals_pos then -- содержащие "=" преобразуем в именованные param = v:sub(1, equals_pos-1) value = v:sub(equals_pos+1) targs[param] = process_nowiki_equals(value) content = content .. (spaced and ' ' or '') .. '|' .. nowiki(param) .. '=' .. nowiki(value) .. endl left_shift = left_shift + 1 -- переменная нужна, чтобы квазинумерованные параметры, переданные через "{{=}}", -- не сбивали порядок else -- истинно неименованные targs[k - left_shift] = process_nowiki_equals(v) content = content .. (spaced and ' ' or '') .. '|' .. nowiki(v) .. endl end elseif not k:find('^_') then -- именованные параметры, исключая модификаторы внешнего вида targs[k] = process_nowiki_equals(v) content = content .. (spaced and ' ' or '') .. '|' .. nowiki(k) .. '=' .. nowiki(v) .. endl end end if spaced then content = content .. ' ' end content = content .. '}}' .. nowiki(postfix) if container then local container_args = {} container_args[1] = content nwt = expand(frame, container, container_args) else nwt:wikitext(content):done() end if nocat then targs['nocat'] = 1 end expand_result = tostring(expand(frame, tname, targs)) if expand_result:sub(1, 2) == '{|' then sep = sep .. '\n' end return before .. tostring(nwt) .. ' ' .. sep .. prefix .. expand_result .. postfix .. after end return p
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «ultracity» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
Ultracity:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
Отменить
Справка по редактированию
(в новом окне)
Шаблон, используемый на этой странице:
Модуль:Example/doc
(
править
)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Тёмная тема
Вклад
Создать учётную запись
Войти
Пространства имён
Модуль
Обсуждение
English
Просмотры
Читать
Править
История
Ещё
Обновить
Поиск
Навигация
Заглавная страница
Свежие правки
Новосибирск
Недвижимость
Коммерческая
H+cker
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице