Вікіпедія:Модулі

Модулі — спеціальні сторінки Вікіпедії, що містять код мовою Lua, який можна запустити для генерації вмісту інших сторінок. Призначення модулів — розширення функцій рушія Вікіпедії завдяки порівняно складним функціям, що написані користувачами. Модулі містяться у просторі назв «Модуль». Крім них, у цьому просторі розташована документація модулів на підсторінках типу Модуль:$1/документація. Наразі всі незаблоковані учасники української Вікіпедії можуть створювати та редагувати модулі (за рідкісними винятками).

Технічні особливості

  • Сторінки з виконуваним кодом на Lua — це сторінки у просторі назв модулів, крім тих, чиї назви відповідають шаблону документації модуля. Технічно не можливо перейменувати на модуль сторінку, що містить вікікод, чи навпаки.
  • На сторінках модулів не діють жодні конструкції вікікоду, включно з тегами категоризації, включеннями шаблонів, коментарями. Перед кодом модуля автоматично вмикається підсторінка документації (чи виводиться запрошення створити її, якщо її нема), на якій можуть бути всі елементи такого типу.
  • Виклик модуля з інших сторінок може здійснюватися:
    • через безпосереднє використання конструкції {{#invoke|назва модуля|функція|…}};
    • через включення цієї конструкції через шаблон (або будь-яку включувану сторінку), при цьому модулю доступні параметри безпосередньо викликаного #invoke шаблону;
    • через виклик з іншого модуля (див. документацію Lua).
У всіх випадках результат аналогічний появі у статті на місці розкриття #invoke певного вікікоду.
  • Сторінки модулів для користувачів, у яких у браузері включено JavaScript, відкриваються для редагування в спеціальному зручному редакторі. Редактор містить у собі засоби для налагодження модуля без збереження. Також типово рушій не дає зберегти модуль із синтаксичною помилкою.
  • Зазвичай модуль обчислюється в кожній конструкції #invoke, яка його викликає; його значенням має бути таблиця, що містить функції. Існує можливість обчислювати певні дані, викликаючи модуль одноразово при оновленні сторінки.
  • Для коду на Lua діють визначені технічні обмеження, при перевищенні яких виникають помилки.

Організаційні особливості

  1. Модулі, їхня документація й обговорення є сторінками Вікіпедії. Усі базові правила й настанови Вікіпедії (наприклад, ВП:АП, ВП:НТЗ, ВП:БЖЛ) мають дотримуватися також і в них. Вміст, що генерується модулем за коректного використання, також має задовільняти всі правила для вмісту відповідних сторінок (наприклад, ВП:КДВ).
  2. Модулі багато в чому аналогічні шаблонам, і в більшості випадків положення правил для шаблонів автоматично поширюються на них (наприклад, ВП:ПАТ, ВП:ЗС).
  3. Не слід використовувати конструкцію #invoke безпосередньо на сторінках основного простору назв, категорій, документації проєкту тощо. Навіть щонайменш широко використовувані модулі слід використовувати через спеціальні шаблони.
  4. Для модулів зазвичай потрібна наявність підсторінок документації, що принаймні містять категорію Категорія:Модулі чи одну з її підкатегорій (інакше модуль не може бути категоризовано). Вкрай бажано також там зазначити, де, як і для чого має застосовуватися модуль і його окремі функції.
  5. Наполегливо рекомендується відлагоджувати модуль спершу в консолі, а після збереження та перед практичним застосуванням за межами особистого простору — за допомоги Модуль:UnitTests (див. документацію). При відлагодженні нових функцій у вже використовуваних модулях рекомендується створювати для експериментів тимчасову версію (наприклад, Модуль:Math/пісочниця). Особливо ці положення стосуються активно використовуваних і близьких до порогу обмежень модулів.
  6. У просторі модулів розміщуються сторінки користувачів, проєктів, порталів тощо, для яких потрібно виконання коду. Вони зобов'язані мати псевдопрефікс типу Користувач:, Вікіпедія:Проєкт: (наприклад, Модуль:Користувач:%username%/пісочниця) чи розташовуватися на підсторінках Модуль:Пісочниця (Модуль:Пісочниця/%username%, Модуль:Пісочниця/%username%/якась заготовка). Вміст таких сторінок має відповідати критеріям для цього простору назв.
  7. Код модулів бажано коментувати, щоб іншим користувачам було простіше його редагувати.

Див. також