Interested Article - Модули

Короткая ссылка-перенаправление

Модули — это специальные страницы Википедии, содержащие код на языке Lua , который может быть запущен для генерации содержимого других страниц. Назначение модулей — расширение функций движка Википедии за счёт относительно сложных функций, написанных пользователями. Модули размещаются в пространстве имён « Модуль » ( {{ :828 }}). Кроме них, в данном пространстве размещаются документация модулей на подстраницах вида Module:$1/doc , страницы JSON-данных и стилей шаблонов . На текущий момент все незаблокированные участники русской Википедии имеют возможность создавать и редактировать модули, кроме защищённых .

Технические особенности [ ]

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

Организационные особенности [ ]

  1. Модули, их документация и обсуждения являются страницами Википедии . Все базовые правила Википедии (например, ВП:АП , ВП:НТЗ , ВП:СОВР ) должны соблюдаться также и в них. Содержимое, генерируемое модулем при корректном использовании, также должно удовлетворять всем правилам для содержимого соответствующих страниц (например, ВП:КДИ ).
  2. Модули во многом аналогичны шаблонам , и в большинстве случаев положения правил для шаблонов автоматически распространяются на них (например, ВП:ПАТ , ВП:ЗС ).
  3. Не следует использовать конструкцию {{ }} непосредственно , категорий, документации проекта и т. п. Сколько-нибудь широко применяемые модули следует использовать через специальные шаблоны .
  4. Для модулей, как правило, обязательно наличие страниц документации, содержащих, как минимум, категорию Категория:Википедия:Модули или одну из её подкатегорий (иначе модуль не может быть категоризован ). Крайне желательно также объяснить там, где, как и для чего должен применяться модуль и его отдельные функции.
  5. Настоятельно рекомендуется отлаживать модуль сперва в консоли, а после сохранения и перед практическим применением за пределами личного пространства — с помощью Модуль:UnitTests (см. документацию). При отладке новых функций в уже используемых модулях рекомендуется создавать для экспериментов временную версию (например, Модуль:Math/песочница ). В особенности эти положения относятся к активно используемым и близким к пределам ограничений модулям.
  6. В пространстве модулей размещаются страницы пользователей , проектов , порталов и т. п., для которых необходимо исполнение кода. Они должны иметь псевдопрефикс вида Участник: , Проект: (например,) либо располагаться на подстраницах Модуль:Песочница (,). Содержимое таких страниц должно отвечать критериям для данного пространства имён.
  7. Код модулей желательно комментировать , чтобы другим участникам проще было вносить в него изменения.

См. также [ ]

Same as Модули