Wiki:Модули
Поделись знанием:
Эта страница является частью руководств русской Википедии. Рекомендуется следовать изложенным здесь правилам. Однако описанное здесь — не догма. Руководствуйтесь здравым смыслом. При редактировании этой страницы, пожалуйста, убедитесь, что вносимые изменения соответствуют консенсусу. Если есть сомнения, изложите их на странице обсуждения.
|
Модули — это специальные страницы Википедии, содержащие код на языке Lua, который может быть запущен для генерации содержимого других страниц. Назначение модулей — расширение функций движка Википедии за счёт относительно сложных функций, написанных пользователями. Модули размещаются в пространстве имён Модуль: ({{ns:828}}). Кроме них, в данном пространстве размещается документация модулей на подстраницах вида Module:$1/doc. На текущий момент, все незаблокированные участники русской Википедии имеют возможность создавать и редактировать модули (за редким исключением).
Технические особенности
- Страницы с исполнимым кодом на Lua — это страницы в пространстве имён модулей, кроме тех, название которых соответствует шаблону документации модуля. Технически нельзя переименовать в модуль страницу, содержащую вики-код, и наоборот.
- На страницах модулей не действуют никакие конструкции вики-кода, включая тэги категоризации, включения шаблонов, комментарии. Перед кодом модуля автоматически включается страница документации (или выводится приглашение создать её, если её нет), на которой могут быть все подобные элементы.
- Вызов модуля с других страниц может осуществляться:
- Непосредственным использованием конструкции {{#invoke:Имя модуля|функция|…}};
- Включением данной конструкции через шаблон (любую включаемую страницу), при этом модулю доступны параметры непосредственно вызывающего
#invoke
шаблона; - Вызовом из другого модуля (см. документацию Lua).
- Во всех случаях результат аналогичен появлению в статье на месте раскрытия
#invoke
некоторого вики-кода.</span>
- Страницы модулей для пользователей, у которых включён в браузере JavaScript, открываются для редактирования в специальном удобном редакторе. Редактор включает в себя средства для отладки модуля без сохранения. Также по умолчанию движок не даёт сохранить модуль с синтаксической ошибкой.
- Обычно модуль вычисляется в каждой конструкции
#invoke
, которая его вызывает; его значением должна быть таблица, содержащая функции. Естьвозможность
вычислять некоторые данные, вызывая модуль однократно при обновлении страницы. - Для кода на Lua действуют определённые технические ограничения, при превышении которых возникают ошибки.
Организационные особенности
- Модули, их документация и обсуждения являются страницами Википедии. Все базовые правила Википедии (например, ВП:АП, ВП:НТЗ, ВП:СОВР) должны соблюдаться также и в них. Содержимое, генерируемое модулем при корректном использовании, также должно удовлетворять всем правилам для содержимого соответствующих страниц (например, ВП:КДИ).
- Модули во многом аналогичны шаблонам, и в большинстве случаев положения правил для шаблонов автоматически рапространяются на них (например, ВП:ПАТ, ВП:ЗС).
- Не следует использовать конструкцию {{#invoke}} непосредственно на страницах основного пространства имён, категорий, документации проекта и т. п. Сколько-нибудь широко применяемые модули следует использовать через специальные шаблоны.
- Для модулей, как правило, обязательно наличие страниц документации, содержащих, как минимум, категорию Категория:Википедия:Модули или одну из её подкатегорий (иначе модуль не может быть категоризован). Крайне желательно также объяснить там, где, как и для чего должен применяться модуль и его отдельные функции.
- Настоятельно рекомендуется отлаживать модуль сперва в консоли, а после сохранения и перед практическим применением за пределами личного пространства — с помощью Модуль:UnitTests (см. документацию). При отладке новых функций в уже используемых модулях рекомендуется создавать для экспериментов временную версию (например, Модуль:Math/sandbox). В особенности эти положения относятся к активно используемым и близким к пределам ограничений модулям.
- В пространстве модулей размещаются страницы пользователей, проектов, порталов и т. п., для которых необходимо исполнение кода. Они должны иметь псевдопрефикс вида
Участник:
(User:
),Проект:
(например, Модуль:Участник:%username%/песочница). Содержимое таких страниц должно отвечать критериям для данного пространства имён. - Код модулей желательно комментировать, чтобы другим участникам проще было вносить в него изменения.
См. также
В Википедии есть проект «Модули» |
- Категория:Википедия:Модули
- Scribunto — расширение, позволяющее запускать Lua на вики-сайтах.
- Русскоязычная документация Lua (может обновляться медленнее английской версии)
- {{Luaman}} — шаблон для ссылок на эту документацию
- mw:Manual:Coding conventions/Lua — эссе, вариант рекомендаций по оформлению кода