Направо към съдържанието

Уикипедия:Модули

от Уикипедия, свободната енциклопедия
  Първи стъпки   Правна рамка   Енциклопедично
съдържание
  Уикиетикет   Редактиране
на страници
  Портал на
общността
  Навигация  


Модулите в Уикипедия се пишат на езика за програмиране Lua. Lua кодът може да бъде вграден в шаблони, като се използва {{#invoke:}} функционалността на Scribunto. Това разширение поддържа Lua 5.1 от юли 2015 г.

За изпълняване на по-сложни задачи, като числови изчисления, манипулации на низове, анализи и дървета за вземане на решения, обикновените шаблони не вършат работа, понеже стават твърде сложни или бавни. Чрез използването на Lua модули страниците се зареждат по-бързо, освен това модулите са гъвкави и дават по-интересни начини за представяне на информацията.

Използване на модули

[редактиране на кода]
{{#invoke:Wd|property|Q347118|P18|format=\[\[File:%p {{!}} thumb {{!}} left\]\]}}
  • Wd е името на модула
  • property е името на функция от този модул
  • Q347118 е стойността на параметър 1
  • P18 е стойността на параметър 2
  • format=\[\[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'}})).