Вікіпедія:Модулі — Вікіпедія
Ця сторінка — довідка, призначена для подання опису певних аспектів вікіпедійних норм, звичаїв, практик. Вона може відображати різні рівні консенсусу, але це не політика і не настанова. |
Модулі — спеціальні сторінки Вікіпедії, що містять код мовою Lua, який можна запустити для генерації вмісту інших сторінок. Призначення модулів — розширення функцій рушія Вікіпедії завдяки порівняно складним функціям, що написані користувачами. Модулі містяться у просторі назв «Модуль». Крім них, у цьому просторі розташована документація модулів на підсторінках типу Модуль:$1/документація. Наразі всі незаблоковані учасники української Вікіпедії можуть створювати та редагувати модулі (за рідкісними винятками).
Технічні особливості
[ред. код]- Сторінки з виконуваним кодом на Lua — це сторінки у просторі назв модулів, крім тих, чиї назви відповідають шаблону документації модуля. Технічно не можливо перейменувати на модуль сторінку, що містить вікікод, чи навпаки.
- На сторінках модулів не діють жодні конструкції вікікоду, включно з тегами категоризації, включеннями шаблонів, коментарями. Перед кодом модуля автоматично вмикається підсторінка документації (чи виводиться запрошення створити її, якщо її нема), на якій можуть бути всі елементи такого типу.
- Виклик модуля з інших сторінок може здійснюватися:
- через безпосереднє використання конструкції
{{#invoke|назва модуля|функція|…}}
; - через включення цієї конструкції через шаблон (або будь-яку включувану сторінку), при цьому модулю доступні параметри безпосередньо викликаного
#invoke
шаблону; - через виклик з іншого модуля (див. документацію Lua).
- через безпосереднє використання конструкції
- У всіх випадках результат аналогічний появі у статті на місці розкриття
#invoke
певного вікікоду.
- Сторінки модулів для користувачів, у яких у браузері включено JavaScript, відкриваються для редагування в спеціальному зручному редакторі. Редактор містить у собі засоби для налагодження модуля без збереження. Також типово рушій не дає зберегти модуль із синтаксичною помилкою.
- Зазвичай модуль обчислюється в кожній конструкції
#invoke
, яка його викликає; його значенням має бути таблиця, що містить функції. Існує можливість обчислювати певні дані, викликаючи модуль одноразово при оновленні сторінки. - Для коду на Lua діють визначені технічні обмеження, при перевищенні яких виникають помилки.
Організаційні особливості
[ред. код]- Модулі, їхня документація й обговорення є сторінками Вікіпедії. Усі базові правила й настанови Вікіпедії (наприклад, ВП:АП, ВП:НТЗ, ВП:БЖЛ) мають дотримуватися також і в них. Вміст, що генерується модулем за коректного використання, також має задовільняти всі правила для вмісту відповідних сторінок (наприклад, ВП:КДВ).
- Модулі багато в чому аналогічні шаблонам, і в більшості випадків положення правил для шаблонів автоматично поширюються на них (наприклад, ВП:ПАТ, ВП:ЗС).
- Не слід використовувати конструкцію
#invoke
безпосередньо на сторінках основного простору назв, категорій, документації проєкту тощо. Навіть щонайменш широко використовувані модулі слід використовувати через спеціальні шаблони. - Для модулів зазвичай потрібна наявність підсторінок документації, що принаймні містять категорію Категорія:Модулі чи одну з її підкатегорій (інакше модуль не може бути категоризовано). Вкрай бажано також там зазначити, де, як і для чого має застосовуватися модуль і його окремі функції.
- Наполегливо рекомендується відлагоджувати модуль спершу в консолі, а після збереження та перед практичним застосуванням за межами особистого простору — за допомоги Модуль:UnitTests (див. документацію). При відлагодженні нових функцій у вже використовуваних модулях рекомендується створювати для експериментів тимчасову версію (наприклад, Модуль:Math/пісочниця). Особливо ці положення стосуються активно використовуваних і близьких до порогу обмежень модулів.
- У просторі модулів розміщуються сторінки користувачів, проєктів, порталів тощо, для яких потрібно виконання коду. Вони зобов'язані мати псевдопрефікс типу
Користувач:
,Вікіпедія:Проєкт:
(наприклад, Модуль:Користувач:%username%/пісочниця) чи розташовуватися на підсторінках Модуль:Пісочниця (Модуль:Пісочниця/%username%, Модуль:Пісочниця/%username%/якась заготовка). Вміст таких сторінок має відповідати критеріям для цього простору назв. - Код модулів бажано коментувати, щоб іншим користувачам було простіше його редагувати.
Див. також
[ред. код]- Категорія:Модулі
- Українська документація Lua (може оновлюватися повільніше за англійську версію)
- mw:Manual:Coding conventions/Lua — есе, варіант рекомендацій з оформлення коду
- mw:Extension:Scribunto — додаток, що дозволяє запускати Lua на вікісайтах