Уикипедия:Модули
Първи стъпки | Правна рамка | Енциклопедично съдържание |
Уикиетикет | Редактиране на страници |
Портал на общността |
Навигация |
Модулите в Уикипедия се пишат на езика за програмиране Lua. Lua кодът може да бъде вграден в шаблони, като се използва {{#invoke:}}
функционалността на Scribunto. Това разширение поддържа Lua 5.1 от юли 2015 г.
За изпълняване на по-сложни задачи, като числови изчисления, манипулации на низове, анализи и дървета за вземане на решения, обикновените шаблони не вършат работа, понеже стават твърде сложни или бавни. Чрез използването на Lua модули страниците се зареждат по-бързо, освен това модулите са гъвкави и дават по-интересни начини за представяне на информацията.
Използване на модули
редактиране{{#invoke:Wd|property|Q347118|P18|format=\[\[File:%p {{!}} thumb {{!}} left\]\]}}
Wd
е името на модулаproperty
е името на функция от този модулQ347118
е стойността на параметър 1P18
е стойността на параметър 2format=\[\[File:%p | thumb | left\]\]
е параметър с имеformat
и неговата стойност\[\[File:%p | thumb | left\]\]
.
Създаване на модули
редактиранеМодулът е страница от именно пространство Модул:
и може да се създаде по същия начин както и всяка друга страница с тази разлика, че името задължително се предшества от префикса на именното пространство.
Пример
редактиранеПримерно съдържание на модул с име Hello:
local p = {}
function p.hi(frame)
local name = frame.args[1]
return "Hello, " .. name .."!"
end
return p
Извикване на модула:
{{#invoke:Hello|hi|Pesho}}
Резултат:
Hello, Pesho!
Дебъгване
редактиранеЗа дебъгване кода на даден модул може да се използва „Конзолата за отстраняване на грешки“ намираща се в долната част на всеки модул в режим на „редактиране“. Конзолата представлява поле за въвеждане на текст, което можете да се използва за изпробване на Lua код.
Щракнете върху полето за въвеждане на текст, въведете кода от примера по-долу и натиснете Enter.
local p = {}
function p.hi(frame)
local name = frame.args[1]
return "Hello, " .. name .."!"
end
Следва извикване на функцията p.hi(frame)
, но за целта първо трябва да подадем обекта frame
със задължителния параметър args
:
local frame = {}
frame.args = {}
frame.args[1] = 'world'
Самото извикване на желаната функция става с p.hi(frame)
, но за да видим резултата от нея, трябва да използваме mw.log()
:
mw.log(p.hi(frame))
След като натиснете отново Enter, под текста, който сте написали, трябва да видите следното:
Hello, world!
Друг вариант за логване на резултата от p.hi
е директно с mw.log(p.hi({['args']={'world'}}))
.