Модуль:Error

Матеріал з Wikiситет
Версія від 11:10, 17 вересня 2015, створена Олександр Юрійович Старовєров (обговорення | внесок) (1 версія)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

-- Модуль для реалізації Шаблон:Error.

local p = {}

local function _error(args)

   local message = args.message or args[1] or error('не вказано повідомлення', 2)
   message = tostring(message)
   local tag = mw.ustring.lower(tostring(args.tag))
   -- вибираємо який html-тег нам потрібно.
   if not (tag == 'p' or tag == 'span' or tag == 'div') then
       tag = 'strong'
   end
   -- генеруємо html.
   local root = mw.html.create(tag)
   root
       :addClass('error')
       :wikitext(message)
   return tostring(root)

end

function p.error(frame)

   local args
   if frame == mw.getCurrentFrame() then
       -- Виклик через #invoke. Аргументи передалі модулю з сторінки шаблону,
       -- тож використовуємо аргументи, передані в шаблон.
       args = frame.args
   else
       -- Виклик з іншого модуля або з консолі налагодження,
       -- тож припускаємо, що аргументи передані напряму.
       args = frame
   end
   -- якщо повідомлення присутнє, але порожнє, міняємо його на nil, щоб Lua
   -- розглянула його як false.
   if args.message == "" then
       args.message = nil
   end
   return _error(args)

end

return p