Модуль: Документация / песочница


< Модуль: Документация
Документация по модулю [ просмотреть ] [ изменить ] [ историю ] [ очистить ]

Этот модуль отображает синее поле, содержащее документацию для шаблонов , модулей Lua или других страниц. Его вызывает шаблон {{ documentation }}.

Нормальное использование

В большинстве случаев вам следует использовать шаблон {{ documentation }}; пожалуйста, обратитесь к странице этого шаблона для получения инструкций по использованию и параметров.

Использование в других модулях

Чтобы использовать этот модуль из другого модуля Lua, сначала загрузите его с помощью require:

local  documentation  =  require ( 'Модуль: Документация' ). основной

Затем вы можете просто вызвать его, используя таблицу аргументов.

документация { content  =  'Некоторая документация' ,  [ 'link box' ]  =  'My custom link box' }

Пожалуйста, обратитесь к документации шаблона за инструкциями по использованию и списком параметров.

Перенос на другие вики

У модуля есть файл конфигурации в Module: Documentation / config, который предназначен для облегчения перевода и переноса на другие вики. См. Инструкции в комментариях к коду на странице конфигурации. Если у вас есть какие-либо вопросы или вам нужна функция, которая в настоящее время не реализована, оставьте сообщение на Template talk: Documentation, чтобы привлечь внимание разработчика.

- Этот модуль реализует {{документацию}}.- Получить необходимые модули.local  getArgs  =  require ( 'Модуль: аргументы' ). getArgs- Получить конфигурационную таблицу.локальный  cfg  =  mw . loadData ( 'Модуль: Документация / config / песочница' )местный  p  =  {}- Часто используемые функции.местный  ugsub  =  mw . ustring . gsub-------------------------------------------------- --------------------------- Вспомогательные функции-- Они определены как локальные функции, но доступны в p- таблица для тестирования.-------------------------------------------------- -------------------------- сообщение локальной функции  ( cfgKey , valArray , expectType )  - [[ - Получает сообщение из таблицы cfg и при необходимости форматирует его. - Функция выдает ошибку, если значение из таблицы cfg не совпадает с- типа expectType. Тип по умолчанию для expectType - строка. - Если таблица valArray присутствует, строки, такие как $ 1, $ 2 и т. Д., В - сообщение заменяется значениями из ключей таблицы [1], [2] и т. д. - Например, если сообщение «foo-message» имело значение «Foo $ 2 bar $ 1.», - message ('foo-message', {'baz', 'qux'}) вернет "Foo qux bar baz." -]]локальное  сообщение  =  cfg [ cfgKey ]expectType  =  expectType  или  'строка'если  type ( msg )  ~ =  expectType,  тоerror ( 'message: type error in message cfg.'  ..  cfgKey  ..  '('  ..  expectType  ..  'ожидалось,  получено ' ..  type ( msg )  ..  ')' ,  2 )конецесли  не  valArray,  товернуть  сообщениеконецлокальная  функция  getMessageVal ( совпадение )матч  =  ToNumber ( совпадение )return  valArray [ match ]  или  error ( 'message: не найдено значение для ключа $'  ..  match  ..  'в сообщении cfg.'  ..  cfgKey ,  4 )конецreturn  ugsub ( msg ,  '$ ([1-9] [0-9] *)' ,  getMessageVal )конецстр . message  =  сообщениелокальная  функция  makeWikilink ( страница ,  отображение )если  дисплей  товернуть  мв . ustring . формат ( '[[% s |% s]]' ,  страница ,  отображение )ещевернуть  мв . ustring . формат ( '[[% s]]' ,  страница )конецконецстр . makeWikilink  =  makeWikilinkлокальная  функция  makeCategoryLink ( cat ,  sort )местные  catns  =  mw . сайт . пространства имен [ 14 ]. названиеreturn  makeWikilink ( catns  ..  ':'  ..  cat ,  sort )конецстр . makeCategoryLink  =  makeCategoryLinkлокальная  функция  makeUrlLink ( url ,  display )вернуть  мв . ustring . формат ( '[% s% s]' ,  URL ,  отображение )конецстр . makeUrlLink  =  makeUrlLinkлокальная  функция  makeToolbar (...)местное  ret  =  {}локальный  lim  =  select ( '#' ,  ...)если  lim  <  1,  товернуть  нольконецдля  i  =  1 ,  lim  doret [ # ret  +  1 ]  =  select ( i ,  ...)конец- 'панель инструментов документации'return  '..  message ( 'toolbar-class' )  ..  '"> ('..  table.concat ( ret ,  '& # 124;' )  ..  ') 'конецстр . makeToolbar  =  makeToolbar-------------------------------------------------- --------------------------- Обработка аргументов-------------------------------------------------- --------------------------локальная  функция  makeInvokeFunc ( funcName ) функция  возврата ( фрейм )local  args  =  getArgs ( frame ,  {valueFunc  =  функция  ( ключ ,  значение )если  тип ( значение )  ==  'строка',  тоvalue  =  value : match ( '^% s * (.-)% s * $' )  - удалить пробелы.если  ключ  ==  'заголовок'  или  значение  ~ =  '',  товозвращаемое  значениеещевернуть  нольконецещевозвращаемое  значениеконецконец})return  p [ funcName ] ( аргументы )конецконец-------------------------------------------------- --------------------------- Пункты въезда-------------------------------------------------- --------------------------функция  p . несуществующий ( фрейм )если  мв . название . getCurrentTitle (). subpageText  ==  'testcases',  затемreturn  frame : expandTemplate { title  =  'примечание о тестовых примерах модуля' }ещевозврат  п . основной ( фрейм )конецконецстр . main  =  makeInvokeFunc ( '_main' )функция  p . _main ( аргументы )- [[ - Эта функция определяет логический поток для модуля. - @args - таблица аргументов, переданных пользователем -]]локальный  env  =  p . getEnvironment ( аргументы )локальный  корень  =  mw . html . создать ()корень: wikitext ( стр . _getModuleWikitext ( args ,  env )): wikitext ( стр . ProtectionTemplate ( env )): wikitext ( стр . sandboxNotice ( args ,  env )): tag ( 'div' )- 'документация-контейнер': addClass ( сообщение ( 'контейнер' )): новая строка (): tag ( 'div' )-- 'документация': addClass ( сообщение ( 'основные-див-классы' )): новая строка (): wikitext ( стр . _startBox ( args ,  env )): wikitext ( стр . _content ( args ,  env )): tag ( 'div' )- 'документация-ясно': addClass ( сообщение ( 'очистить' )): сделано (): новая строка (): сделано (): wikitext ( стр . _endBox ( args ,  env )): сделано (): wikitext ( стр . addTrackingCategories ( env ))- 'Модуль: Documentation / styles.css'вернуть  мв . getCurrentFrame (): extensionTag  ('templatestyles' ,  '' ,  { src = cfg [ 'templatestyles' ]})  ..  tostring ( корень )конец-------------------------------------------------- --------------------------- Настройки среды-------------------------------------------------- --------------------------функция  p . getEnvironment ( аргументы )- [[ - Возвращает таблицу с информацией о среде, включая заголовок - объекты и другие данные, относящиеся к пространству имен или пути. - @args - таблица аргументов, переданных пользователем - - Титульные объекты включают: - env.title - страница, для которой мы делаем документацию (обычно текущий заголовок) - env.templateTitle - шаблон (или модуль, файл и т. д.) - env.docTitle - подстраница / doc. - env.sandboxTitle - подстраница / sandbox. - env.testcasesTitle - подстраница / testcases. - env.printTitle - версия шаблона для печати, расположенная на подстранице / Print. - - Данные включают: - env.protectionLevels - таблица уровней защиты титровального объекта. - env.subjectSpace - номер пространства имён темы заголовка. - env.docSpace - номер пространства имен, в которое заголовок помещает свою документацию. - env.docpageBase - текст базовой страницы страниц / doc, / sandbox и / testcases с пространством имен. - env.compareUrl - URL страницы Special: ComparePages, сравнивающей песочницу с шаблоном. - - Все просмотры таблиц проходят через pcall, поэтому ошибки обнаруживаются. В случае ошибки значение - возвращается будет ноль. -]]локальный  env ,  envFuncs  =  {},  {}- Настроить метатаблицу. В случае срабатывания мы вызываем соответствующую функцию в таблице envFuncs. Значение- возвращаемый этой функцией запоминается в таблице env, чтобы мы не вызывали ни одну из функций-- больше чем единожды. (Нильс не запомнился.)setmetatable ( env ,  {__index  =  функция  ( t ,  ключ )локальный  envFunc  =  envFuncs [ ключ ]если  envFunc,  толокальный  успех ,  val  =  pcall ( envFunc )если  успех,  тоenv [ key ]  =  val  - запомнить значение.вернуть  valконецконецвернуть  нольконец})функция  envFuncs . название ()- Заголовочный объект для текущей страницы или тестовой страницы, переданной с args.page.местное  названиелокальный  titleArg  =  args . страницаесли  titleArg,  тоназвание  =  mw . название . новый ( titleArg )ещеназвание  =  mw . название . getCurrentTitle ()конецвернуть  заголовокконецфункция  envFuncs . templateTitle ()- [[ - Шаблон (или модуль и т. Д.) Титровального объекта. -- Сообщения: - «песочница-подстраница» -> «песочница» - 'testcases-subpage' -> 'testcases' -]]локальный  subjectSpace  =  env . subjectSpaceместный  заголовок  =  env . заглавиелокальная  подстраница  =  заголовок . subpageTextесли  subpage  ==  message ( 'sandbox-subpage' )  или  subpage  ==  message ( 'testcases-subpage' ),  товернуть  мв . название . makeTitle ( SUBJECTSPACE ,  название . baseText )ещевернуть  мв . название . makeTitle ( SUBJECTSPACE ,  название . текст )конецконецфункция  envFuncs . docTitle ()- [[ - Заглавный объект подстраницы / doc. -- Сообщения: - 'doc-subpage' -> 'doc' -]]местный  заголовок  =  env . заглавиеlocal  docname  =  args [ 1 ]  - Пользовательская страница документа.местная  страница документацииесли  docname  тогдаdocpage  =  docnameещеdocpage  =  env . docpageBase  ..  '/'  ..  message ( 'doc-subpage' )конецвернуть  мв . название . новый ( docpage )конецфункция  envFuncs . sandboxTitle ()- [[ - Объект заголовка для подстраницы / sandbox. -- Сообщения: - «песочница-подстраница» -> «песочница» -]]вернуть  мв . название . новое ( env . docpageBase  ..  '/'  ..  message ( 'sandbox-subpage' ))конецфункция  envFuncs . testcasesTitle ()- [[ - Объект заголовка для подстраницы / testcases. -- Сообщения: - 'testcases-subpage' -> 'testcases' -]]вернуть  мв . название . новое ( env . docpageBase  ..  '/'  ..  message ( 'testcases-subpage' ))конецфункция  envFuncs . printTitle ()- [[ - Объект заголовка для подстраницы / Print. -- Сообщения: - 'print-subpage' -> 'Print' -]]вернуть  env . templateTitle : subPageTitle ( сообщение ( 'печать-подстраница' ))конецфункция  envFuncs . ProtectionLevels ()- Таблица уровней защиты титровального объекта.вернуть  env . название . ProtectionLevelsконецфункция  envFuncs . subjectSpace ()- Номер пространства имен субъекта.вернуть  мв . сайт . пространства имен [ env . название . пространство имен ]. предмет . я быконецфункция  envFuncs . docSpace ()- Номер пространства имен документации. Для большинства пространств имен это- то же, что и пространство имен субъекта. Однако страницы статьи, файла,- Пространства имен MediaWiki или Category должны иметь свои / doc, / sandbox и- / testcases страницы в пространстве разговора.локальный  subjectSpace  =  env . subjectSpaceесли  subjectSpace  ==  0  или  subjectSpace  ==  6  или  subjectSpace  ==  8  или  subjectSpace  ==  14,  тогдаreturn  subjectSpace  +  1ещевернуть  subjectSpaceконецконецфункция  envFuncs . docpageBase ()- Базовая страница подстраниц / doc, / sandbox и / testcases.- Для некоторых пространств имен это страница обсуждения, а не страница шаблона.локальный  templateTitle  =  env . templateTitleлокальный  docSpace  =  env . docSpaceлокальный  docSpaceText  =  mw . сайт . пространства имен [ docSpace ]. название- Соберите ссылку. docSpace никогда не является основным пространством имен, поэтому мы можем жестко закодировать двоеточие.вернуть  docSpaceText  ..  ':'  ..  templateTitle . текстконецфункция  envFuncs . compareUrl ()- Различить связь между песочницей и основным шаблоном с помощью [[Special: ComparePages]].локальный  templateTitle  =  env . templateTitlelocal  sandboxTitle  =  env . sandboxTitleесли  templateTitle . существует  и  sandboxTitle . существует  тогдалокальный  compareUrl  =  mw . uri . fullUrl ('Special: ComparePages' ,{  page1  =  templateTitle . prefixedText ,  страница2  =  sandboxTitle . prefixedText })вернуться в  строку ( compareUrl )ещевернуть  нольконецконецвернуть  envконец-------------------------------------------------- --------------------------- Вспомогательные шаблоны-------------------------------------------------- --------------------------стр . getModuleWikitext  =  makeInvokeFunc ( '_getModuleWikitext' )функция  p . _getModuleWikitext ( аргументы ,  env )локальный  currentTitle  =  mw . название . getCurrentTitle ()если  currentTitle . contentModel  ~ =  'Scribunto',  затем  верните  конецpcall ( require ,  currentTitle . prefixedText )  - если он не работает, нам все равноlocal  moduleWikitext  =  package.loaded [ "Модуль: wikitext модуля" ]если  moduleWikitext,  товернуть  модульWikitext . main ()конецконецфункция  p . sandboxNotice ( аргументы ,  env )знак равно - Создает уведомление о песочнице для отображения над страницами песочницы. - @args - таблица аргументов, переданных пользователем - @env - таблица окружения, содержащая титровальные объекты и т. д., сгенерированная с помощью p.getEnvironment -  -- Сообщения: - 'sandbox-notice-image' -> '[[Image: Sandbox.svg | 50px | alt = | link =]]' - 'sandbox-notice-blurb' -> 'Это 1 доллар за 2 доллара.' - 'sandbox-notice-diff-blurb' -> 'Это 1 доллар за 2 доллара (3 доллара).' - 'sandbox-notice-pagetype-template' -> '[[Википедия: тестовые примеры шаблонов | тестовая среда шаблона]] страница' - 'sandbox-notice-pagetype-module' -> '[[Википедия: тестовые примеры шаблонов | песочница модуля]] страница' - 'sandbox-notice-pagetype-other' -> 'sandbox page' - 'sandbox-notice-compare-link-display' -> 'diff' - 'sandbox-notice-testcases-blurb' -> 'См. также сопутствующую подстраницу для $ 1.' - 'sandbox-notice-testcases-link-display' -> 'test case' - 'sandbox-category' -> 'Шаблонные песочницы' знак равноместный  заголовок  =  env . заглавиеlocal  sandboxTitle  =  env . sandboxTitleлокальный  templateTitle  =  env . templateTitleлокальный  subjectSpace  =  env . subjectSpaceесли  нет  ( subjectSpace  и  title  и  sandboxTitle  и  templateTitleи  мв . название . equals ( title ,  sandboxTitle )),  затемвернуть  нольконец- Создайте таблицу аргументов для передачи в {{ombox}}. Нам нужно всего два поля: «изображение» и «текст».local  omargs  =  {}омаргс . изображение  =  сообщение ( 'песочница-уведомление-изображение' )- Получи текст. Начнем с вводной аннотации, которая выглядит примерно так:- «Это песочница шаблона для [[Template: Foo]] (diff)».местный  текст  =  ''местный  тип страницыесли  subjectSpace  ==  10,  тогдаpagetype  =  сообщение ( 'шаблон-уведомления-страницы-песочницы' )elseif  subjectSpace  ==  828  тогдаpagetype  =  сообщение ( 'песочница-уведомление-pagetype-модуль' )ещеpagetype  =  сообщение ( 'песочница-уведомление-pagetype-другое' )конецлокальная  templateLink  =  makeWikilink ( templateTitle . prefixedText )локальный  compareUrl  =  env . compareUrlесли  compareUrl,  толокальное  compareDisplay  =  сообщение ( 'песочница-уведомление-сравнение-ссылка-дисплей' )локальное  compareLink  =  makeUrlLink ( compareUrl ,  compareDisplay )text  =  text  ..  message ( 'sandbox-notice-diff-blurb' ,  { pagetype ,  templateLink ,  compareLink })ещеtext  =  text  ..  message ( 'sandbox-notice-blurb' ,  { pagetype ,  templateLink })конец- Получите аннотацию к странице тестовых примеров, если она существует. Это что-то вроде- «См. Также дополнительную страницу для [[Template: Foo / testcases | тестовых примеров]]».local  testcasesTitle  =  env . testcasesTitleесли  testcasesTitle  и  testcasesTitle . существует  тогдаесли  testcasesTitle . contentModel  ==  "Scribunto",  затемлокальные  testcasesLinkDisplay  =  сообщение ( 'песочница-уведомление-тесткейсы-ссылка-дисплей' )local  testcasesRunLinkDisplay  =  message ( 'sandbox-notice-testcases-run-link-display' )локальная  testcasesLink  =  makeWikilink ( testcasesTitle . prefixedText ,  testcasesLinkDisplay )локальная  testcasesRunLink  =  makeWikilink ( testcasesTitle . talkPageTitle . prefixedText ,  testcasesRunLinkDisplay )text  =  text  ..  '
'
.. message ( 'sandbox-notice-testcases-run-blurb' , { testcasesLink , testcasesRunLink })
ещелокальные testcasesLinkDisplay = сообщение ( 'песочница-уведомление-тесткейсы-ссылка-дисплей' )локальная testcasesLink = makeWikilink ( testcasesTitle . prefixedText , testcasesLinkDisplay )text = text .. '
'
.. message ( 'sandbox-notice-testcases-blurb' , { testcasesLink })
конецконец- Добавьте песочницу в категорию песочницы.омаргс . text = text .. makeCategoryLink ( сообщение ( 'категория-песочницы' ))- 'документация-ясно'return '
..
message ( 'clear' ) .. '">
' .. require ( 'Модуль: окно сообщения' ). main ( 'ombox' , omargs )конецфункция p . ProtectionTemplate ( env ) - Создает значок замка в правом верхнем углу. - @env - таблица окружения, содержащая титровальные объекты и т. д., сгенерированная с помощью p.getEnvironment -- Сообщения: - 'шаблон-защиты' -> 'шаблон-pp' - 'protection-template-args' -> {docusage = 'yes'} local protectionLevels = env . ProtectionLevels если не ProtectionLevels, то вернуть ноль конец локальный editProt = protectionLevels . уровни редактирования и защиты . редактировать [ 1 ] local moveProt = protectionLevels . Move и ProtectionLevels . переместить [ 1 ] если editProt тогда - Страница защищена от редактирования. return require ( 'Модуль: Защитный баннер' ). _main { сообщение ( 'правка-причины-защиты' ), small = true } elseif moveProt и moveProt ~ = 'autoconfirmed', затем - Страница защищена от перемещения, но не от редактирования. Исключить ход - защита с уровнем "autoconfirmed", что эквивалентно - вообще нет защиты от движения. return require ( 'Модуль: Защитный баннер' ). _main { действие = 'двигаться' , маленький = правда } еще вернуть ноль конецконец-------------------------------------------------- --------------------------- Стартовое окно-------------------------------------------------- --------------------------стр . startBox = makeInvokeFunc ( '_startBox' )функция p . _startBox ( аргументы , env ) - [[ - Эта функция генерирует стартовое окно. - @args - таблица аргументов, переданных пользователем - @env - таблица окружения, содержащая титровальные объекты и т. д., сгенерированная с помощью p.getEnvironment - - Фактическая работа выполняется p.makeStartBoxLinksData и p.renderStartBoxLinks, которые делают - ссылки [view] [edit] [history] [purge], а также p.makeStartBoxData и p.renderStartBox - которые генерируют окно HTML. -]] env = env или p . getEnvironment ( аргументы ) местные ссылки местное содержимое = аргументы . содержание если не content или args [ 1 ], то - Нет необходимости включать ссылки, если документация находится на самой странице шаблона. локальные ссылкиData = p . makeStartBoxLinksData ( аргументы , env ) если linksData тогда ссылки = стр . renderStartBoxLinks ( linksData ) конец конец - Создайте стартовое окно html. локальные данные = стр . makeStartBoxData ( аргументы , env , ссылки ) если данные то возврат п . renderStartBox ( данные ) еще - Пользователь не указал заголовок. вернуть ноль конецконецфункция p . makeStartBoxLinksData ( аргументы , env ) - [[ - Выполняет начальную обработку данных, чтобы сделать ссылки [просмотр] [редактировать] [история] [очистить]. - @args - таблица аргументов, переданных пользователем - @env - таблица окружения, содержащая титровальные объекты и т. д., сгенерированная с помощью p.getEnvironment - -- Сообщения: - 'просмотр-ссылка-дисплей' -> 'просмотр' - 'edit-link-display' -> 'edit' - 'отображение-ссылка-история' -> 'история' - 'очистить-ссылку-дисплей' -> 'очистить' - 'file-docpage-preload' -> 'Шаблон: документация / preload-filespace' - 'module-preload' -> 'Template: Documentation / preload-module-doc' - 'docpage-preload' -> 'Шаблон: документация / предварительная загрузка' - 'create-link-display' -> 'create' -]] локальный subjectSpace = env . subjectSpace местный заголовок = env . заглавие локальный docTitle = env . docTitle если не title или не docTitle, то вернуть ноль конец если docTitle . isRedirect, тогда docTitle = docTitle . redirectTarget конец локальные данные = {} данные . title = название данные . docTitle = docTitle - Просмотр, отображение, редактирование и удаление ссылок, если / doc существует. данные . viewLinkDisplay = сообщение ( 'просмотр-ссылка-дисплей' ) данные . editLinkDisplay = сообщение ( 'отображение ссылки редактирования' ) данные . historyLinkDisplay = сообщение ( 'отображение ссылки-истории' ) данные . purgeLinkDisplay = сообщение ( 'отображение ссылки-очистки' ) - Создать ссылку, если / doc не существует. локальная предварительная загрузка = аргументы . предварительная нагрузка если не предварительная нагрузка, то если subjectSpace == 6, то - Пространство имен файлов preload = сообщение ( 'файл-док-страница-предварительная загрузка' ) elseif subjectSpace == 828 then - Пространство имен модуля preload = сообщение ( 'предварительная загрузка модуля' ) еще preload = сообщение ( 'docpage-preload' ) конец конец данные . предварительная нагрузка = предварительная нагрузка данные . createLinkDisplay = сообщение ( 'создание-отображение-ссылки' ) вернуть данныеконецфункция p . renderStartBoxLinks ( данные ) - [[ - Создает ссылки [просмотр] [редактирование] [история] [очистка] или [создание] из таблицы данных. - @data - таблица данных, сгенерированная p.makeStartBoxLinksData -]] локальная функция escapeBrackets ( s ) - Снимает квадратные скобки с объектами HTML. s = s : gsub ( '% [' , '& # 91;' ) - заменить квадратные скобки на объекты HTML. s = s : gsub ( '%]' , '& # 93;' ) вернуть s конец местный рет local docTitle = data . docTitle местное название = данные . заглавие если docTitle . существует тогда локальная viewLink = makeWikilink ( docTitle . prefixedText , данные . viewLinkDisplay ) local editLink = makeUrlLink ( docTitle : fullUrl { действие = 'edit' }, data . editLinkDisplay ) local historyLink = makeUrlLink ( docTitle : fullUrl { действие = 'история' }, данные . historyLinkDisplay ) local purgeLink = makeUrlLink ( title : fullUrl { action = 'purge' }, data . purgeLinkDisplay ) ret = '[% s] [% s] [% s] [% s]' ret = escapeBrackets ( ret ) ret = mw . ustring . формат ( ret , viewLink , editLink , historyLink , purgeLink ) еще local createLink = makeUrlLink ( docTitle : fullUrl { действие = 'редактировать' , preload = data . preload }, data . createLinkDisplay ) ret = '[% s]' ret = escapeBrackets ( ret ) ret = mw . ustring . формат ( ret , createLink ) конец возвращение в отставкеконецфункция p . makeStartBoxData ( аргументы , env , ссылки ) знак равно - Выполняет начальную обработку данных для передачи в функцию рендеринга начального окна p.renderStartBox. - @args - таблица аргументов, переданных пользователем - @env - таблица окружения, содержащая титровальные объекты и т. д., сгенерированная с помощью p.getEnvironment - @links - строка, содержащая ссылки [view] [edit] [history] [purge] - может быть нулевым, если есть ошибка. - -- Сообщения: - 'documentation-icon-wikitext' -> '[[Файл: Значок информации о тестовом шаблоне - Версия (2) .svg | 50px | link = | alt =]]' - 'template-namespace-heading' -> 'Шаблонная документация' - 'module-namespace-heading' -> 'Модульная документация' - 'заголовок-пространства-имён' -> 'Сводка' - 'other-namespaces-heading' -> 'Документация' - 'testcases-create-link-display' -> 'create' знак равно локальный subjectSpace = env . subjectSpace если не subjectSpace, то - По умолчанию используется пространство имен "other namespaces", так что мы получаем хоть какой-то вывод - при возникновении ошибки. subjectSpace = 2 конец локальные данные = {} -- Заголовок локальный заголовок = аргументы . заголовок - пустые значения не удаляются. если заголовок == '', то - Не отображать начальное окно, если аргумент заголовка определен, но пуст. вернуть ноль конец если заголовок, то данные . заголовок = заголовок elseif subjectSpace == 10 then - Пространство имен шаблона данные . заголовок = сообщение ( 'значок-документация-викитекст' ) .. '' .. сообщение ( 'заголовок-пространства-имён' ) elseif subjectSpace == 828 then - Пространство имен модуля данные . заголовок = сообщение ( 'значок-документация-викитекст' ) .. '' .. сообщение ( 'заголовок-пространства-имен-модуля' ) elseif subjectSpace == 6 then - Пространство имен файлов данные . заголовок = сообщение ( 'заголовок-пространства-имён' ) еще данные . заголовок = сообщение ( ' заголовок -других-пространств-имен' ) конец - Заголовок CSS local headingStyle = args [ 'стиль заголовка' ] если заголовокStyle, то данные . headingStyleText = стиль заголовка еще - 'заголовок документации' данные . headingClass = сообщение ( 'основной-див-заголовок-класс' ) конец - Данные для ссылок [просмотреть] [изменить] [историю] [очистить] или [создать]. если ссылки то - 'mw-editsection-like plainlinks' данные . linksClass = сообщение ( 'начальные-ссылки-классы' ) данные . links = ссылки конец вернуть данныеконецфункция p . renderStartBox ( данные ) - Отображает начальное окно html. - @data - таблица данных, созданная p.makeStartBoxData. локальный sbox = mw . html . создать ( 'div' ) sbox - 'documentation-startbox' : addClass ( сообщение ( 'начальный-класс-окна' )) : новая строка () : tag ( 'диапазон' ) : addClass ( data . headingClass ) : cssText ( data . headingStyleText ) : Вики - текст ( данные . Заголовок ) локальные ссылки = данные . ссылки если ссылки то sbox : tag ( 'диапазон' ) : addClass ( data . linksClass ) : attr ( 'идентификатор' , data . linksId ) : wikitext ( ссылки ) конец возврат в строку ( sbox )конец-------------------------------------------------- --------------------------- Содержание документации-------------------------------------------------- --------------------------стр . content = makeInvokeFunc ( '_content' )функция p . _content ( аргументы , env ) - Отображает содержимое документации - @args - таблица аргументов, переданных пользователем - @env - таблица окружения, содержащая титровальные объекты и т. д., сгенерированная с помощью p.getEnvironment env = env или p . getEnvironment ( аргументы ) локальный docTitle = env . docTitle местное содержимое = аргументы . содержание если не контент, а docTitle и docTitle . существует тогда content = args . _content или mw . getCurrentFrame (): expandTemplate { title = docTitle . prefixedText } конец - Разрывы строк ниже необходимы, чтобы в начале и в конце было "=== Заголовки ===". - документов интерпретируются правильно. вернуть ' \ n ' .. ( содержимое или '' ) .. ' \ n 'конецстр . contentTitle = makeInvokeFunc ( '_contentTitle' )функция p . _contentTitle ( аргументы , env ) env = env или p . getEnvironment ( аргументы ) локальный docTitle = env . docTitle если не аргументы . content и docTitle и docTitle . существует тогда вернуть docTitle . prefixedText еще вернуться '' конецконец-------------------------------------------------- --------------------------- Концевая коробка-------------------------------------------------- --------------------------стр . endBox = makeInvokeFunc ( '_endBox' )функция p . _endBox ( аргументы , env ) знак равно - Эта функция создает конечную рамку (также известную как поле связи). - @args - таблица аргументов, переданных пользователем - @env - таблица окружения, содержащая титровальные объекты и т. д., сгенерированная с помощью p.getEnvironment - знак равно - Получить данные об окружающей среде. env = env или p . getEnvironment ( аргументы ) локальный subjectSpace = env . subjectSpace локальный docTitle = env . docTitle если не subjectSpace или не docTitle, то вернуть ноль конец - Проверяем, нужно ли вообще выводить конечный блок. Добавить конец - поле по умолчанию, если документация существует или мы находимся в - пространства имен пользователя, модуля или шаблона. local linkBox = args [ 'поле ссылок' ] если linkBox == 'off' или нет ( docTitle . существуют или subjectSpace == 2 или subjectSpace == 828 или subjectSpace == 10 ) тогда вернуть ноль конец - Соберите коробку ссылок. местный текст = '' если linkBox, то text = text .. linkBox еще text = text .. ( стр . makeDocPageBlurb ( args , env ) или '' ) - «Эта документация включена из [[Foo]].» если subjectSpace == 2 или subjectSpace == 10 или subjectSpace == 828, тогда - Мы находимся в пространствах имен пользователя, шаблона или модуля. - Добавить ссылки на песочницу и тесты. - «Редакторы могут экспериментировать на страницах тестовой среды и тестовых сценариев этого шаблона». text = text .. ( p . makeExperimentBlurb ( args , env ) или '' ) .. '
'
если не аргументы . content, а не args [ 1 ], тогда - «Добавьте категории на подстраницу / doc». - Не показывать это сообщение с встроенными документами или с явно указанной страницей документа, - так как тогда непонятно куда добавлять категории. text = text .. ( стр . makeCategoriesBlurb ( args , env ) или '' ) конец text = text .. '' .. ( p . makeSubpagesBlurb ( args , env ) или '' ) - «Подстраницы этого шаблона» локальный printBlurb = p . makePrintBlurb ( args , env ) - двухстрочное объявление о печатных версиях шаблонов. если printBlurb то text = text .. '
'
.. printBlurb
конец конец конец локальный ящик = mw . html . создать ( 'div' ) - 'документация-метаданные' box : attr ( 'роль' , 'примечание' ) : addClass ( сообщение ( 'конец-класс-окна' )) - 'plainlinks' : addClass ( сообщение ( 'конец-поле-простые ссылки' )) : wikitext ( текст ) : сделано () return ' \ n ' .. tostring ( поле )конецфункция p . makeDocPageBlurb ( аргументы , env ) знак равно - Делает аннотацию «Эта документация включена из [[Template: Foo]] (редактировать, история)». - @args - таблица аргументов, переданных пользователем - @env - таблица окружения, содержащая титровальные объекты и т. д., сгенерированная с помощью p.getEnvironment - -- Сообщения: - 'edit-link-display' -> 'edit' - 'отображение-ссылка-история' -> 'история' - 'включено-из-рекламного объявления' -> - 'Выше [[Википедия: документация по шаблонам | документация]] - [[Википедия: Включение | включено]] из $ 1. ' - 'module-preload' -> 'Template: Documentation / preload-module-doc' - 'create-link-display' -> 'create' - 'create-module-doc-blurb' -> - 'Вы можете захотеть $ 1 на страницу документации для этого [[Wikipedia: Lua | Scribunto module]] ». знак равно локальный docTitle = env . docTitle если не docTitle, то вернуть ноль конец местный рет если docTitle . существует тогда - / doc существует; ссылка на него. локальная docLink = makeWikilink ( docTitle . prefixedText ) local editUrl = docTitle : fullUrl { действие = 'редактировать' } локальный editDisplay = сообщение ( 'отображение ссылки редактирования' ) локальный editLink = makeUrlLink ( editUrl , editDisplay ) local historyUrl = docTitle : fullUrl { действие = 'история' } local historyDisplay = сообщение ( 'отображение-ссылка-история' ) локальная historyLink = makeUrlLink ( сервис история , historyDisplay ) ret = message ( 'transcluded-from-blurb' , { docLink }) .. '' .. makeToolbar ( editLink , historyLink ) .. '
'
elseif env . subjectSpace == 828, тогда - / doc не существует; прошу создать его. local createUrl = docTitle : fullUrl { действие = 'редактировать' , preload = message ( 'module-preload' )} локальное createDisplay = сообщение ( 'создать-ссылку-дисплей' ) local createLink = makeUrlLink ( createUrl , createDisplay ) ret = message ( 'create-module-doc-blurb' , { createLink }) .. '
'
конец возвращение в отставкеконецфункция p . makeExperimentBlurb ( аргументы , env ) - [[ - Отображает текст «Редакторы могут экспериментировать на страницах тестовой среды (редактировать | diff) и тестовых сценариев (редактировать) этого шаблона». - @args - таблица аргументов, переданных пользователем - @env - таблица окружения, содержащая титровальные объекты и т. д., сгенерированная с помощью p.getEnvironment - -- Сообщения: - 'sandbox-link-display' -> 'sandbox' - 'sandbox-edit-link-display' -> 'edit' - 'compare-link-display' -> 'diff' - 'module-sandbox-preload' -> 'Template: Documentation / preload-module-sandbox' - 'template-sandbox-preload' -> 'Template: Documentation / preload-sandbox' - 'sandbox-create-link-display' -> 'create' - 'mirror-edit-summary' -> 'Создать версию $ 1 для песочницы' - 'зеркало-ссылка-дисплей' -> 'зеркало' - 'mirror-link-preload' -> 'Шаблон: Документация / зеркало' - 'sandbox-link-display' -> 'sandbox' - 'testcases-link-display' -> 'testcases' - 'testcases-edit-link-display' -> 'edit' - 'template-sandbox-preload' -> 'Template: Documentation / preload-sandbox' - 'testcases-create-link-display' -> 'create' - 'testcases-link-display' -> 'testcases' - 'testcases-edit-link-display' -> 'edit' - 'module-testcases-preload' -> 'Template: Documentation / preload-module-testcases' - 'template-testcases-preload' -> 'Template: Documentation / preload-testcases' - 'Experiment-blurb-module' -> 'Редакторы могут экспериментировать на страницах этого модуля за 1 и 2 доллара.' - 'Experiment-blurb-template' -> 'Редакторы могут экспериментировать на страницах этого шаблона за 1 и 2 доллара.' -]] локальный subjectSpace = env . subjectSpace локальный templateTitle = env . templateTitle local sandboxTitle = env . sandboxTitle local testcasesTitle = env . testcasesTitle локальный templatePage = templateTitle . prefixedText если не subjectSpace или не templateTitle, или не sandboxTitle, или not testcasesTitle, тогда вернуть ноль конец - Делайте ссылки. местные sandboxLinks , testcasesLinks если sandboxTitle . существует тогда local sandboxPage = sandboxTitle . prefixedText локальный sandboxDisplay = сообщение ( 'дисплей-ссылка-песочница' ) local sandboxLink = makeWikilink ( sandboxPage , sandboxDisplay ) local sandboxEditUrl = sandboxTitle : fullUrl { действие = 'редактировать' } локальная песочницаEditDisplay = сообщение ( 'песочница-редактирование-ссылка-дисплей' ) локальная sandboxEditLink = makeUrlLink ( sandboxEditUrl , sandboxEditDisplay ) локальный compareUrl = env . compareUrl местное сравнениеLink если compareUrl, то локальное compareDisplay = сообщение ( 'сравнение-ссылка-дисплей' ) compareLink = makeUrlLink ( compareUrl , compareDisplay ) конец sandboxLinks = sandboxLink .. '' .. makeToolbar ( sandboxEditLink , compareLink ) еще локальная песочница если subjectSpace == 828, то sandboxPreload = сообщение ( 'модуль-песочница-предварительная загрузка ' ) еще sandboxPreload = сообщение ( 'шаблон-песочница-предварительная загрузка ' ) конец локальная sandboxCreateUrl = sandboxTitle : fullUrl { действие = 'изменить' , преднагрузки = sandboxPreload } локальная песочницаCreateDisplay = сообщение ( 'песочница-создание-ссылка-дисплей' ) локальная sandboxCreateLink = makeUrlLink ( sandboxCreateUrl , sandboxCreateDisplay ) local mirrorSummary = сообщение ( 'зеркало-редактирование-сводка' , { makeWikilink ( templatePage )}) local mirrorPreload = сообщение ( 'предварительная загрузка зеркальной ссылки' ) локальная mirrorUrl = sandboxTitle : fullUrl { действие = 'изменить' , преднагрузки = mirrorPreload , резюме = mirrorSummary } если subjectSpace == 828, то mirrorUrl = sandboxTitle : fullUrl { действие = 'редактировать' , preload = templateTitle . prefixedText , краткое = mirrorSummary } конец локальное зеркалоDisplay = сообщение ( 'зеркало-ссылка-дисплей' ) local mirrorLink = makeUrlLink ( mirrorUrl , mirrorDisplay ) sandboxLinks = message ( 'sandbox-link-display' ) .. '' .. makeToolbar ( sandboxCreateLink , mirrorLink ) конец если testcasesTitle . существует тогда local testcasesPage = testcasesTitle . prefixedText локальные testcasesDisplay = сообщение ( 'testcases-link-display' ) локальная testcasesLink = makeWikilink ( testcasesPage , testcasesDisplay ) локальная testcasesEditUrl = testcasesTitle : fullUrl { действие = 'редактировать' } локальные testcasesEditDisplay = сообщение ( 'testcases-edit-link-display' ) локальная testcasesEditLink = makeUrlLink ( testcasesEditUrl , testcasesEditDisplay ) - для модулей добавьте ссылку на запуск тестов, если она существует если testcasesTitle . contentModel == "Scribunto" и testcasesTitle . talkPageTitle и testcasesTitle . talkPageTitle . существует тогда локальные testcasesRunLinkDisplay = сообщение ( 'testcases-run-link-display' ) локальная testcasesRunLink = makeWikilink ( testcasesTitle . talkPageTitle . prefixedText , testcasesRunLinkDisplay ) testcasesLinks = testcasesLink .. '' .. makeToolbar ( testcasesEditLink , testcasesRunLink ) еще testcasesLinks = testcasesLink .. '' .. makeToolbar ( testcasesEditLink ) конец еще локальные тесты если subjectSpace == 828, то testcasesPreload = сообщение ( 'модуль-тесткейсы-предварительная загрузка' ) еще testcasesPreload = сообщение ( 'шаблон-testcases-preload' ) конец локальная testcasesCreateUrl = testcasesTitle : fullUrl { действие = 'изменить' , преднагрузки = testcasesPreload } локальные testcasesCreateDisplay = сообщение ( 'testcases-create-link-display' ) локальная testcasesCreateLink = makeUrlLink ( testcasesCreateUrl , testcasesCreateDisplay ) testcasesLinks = сообщение ( 'testcases-канального дисплей' ) .. '' .. makeToolbar ( testcasesCreateLink ) конец local messageName если subjectSpace == 828, то messageName = 'экспериментальный-рекламный-модуль' еще messageName = 'эксперимент-рекламный-шаблон' конец возврат сообщения ( messageName , { sandboxLinks , testcasesLinks })конецфункция p . makeCategoriesBlurb ( аргументы , env ) - [[ - Создает текст «Добавьте категории на подстраницу / doc». - @args - таблица аргументов, переданных пользователем - @env - таблица окружения, содержащая титровальные объекты и т. д., сгенерированная с помощью p.getEnvironment -- Сообщения: - 'doc-link-display' -> '/ doc' - 'add-Categories-blurb' -> 'Пожалуйста, добавьте категории на подстраницу $ 1.' -]] локальный docTitle = env . docTitle если не docTitle, то вернуть ноль конец локальная docPathLink = makeWikilink ( docTitle . prefixedText , сообщение ( 'документ-канальный дисплей' )) ответное сообщение ( 'add- Categories-blurb ' , { docPathLink })конецфункция p . makeSubpagesBlurb ( аргументы , env ) - [[ - Создает ссылку «Подстраницы этого шаблона». - @args - таблица аргументов, переданных пользователем - @env - таблица окружения, содержащая титровальные объекты и т. д., сгенерированная с помощью p.getEnvironment -- Сообщения: - 'template-pagetype' -> 'template' - 'module-pagetype' -> 'module' - 'default-pagetype' -> 'page' - 'subpages-link-display' -> 'Подстраницы этого $ 1' -]] локальный subjectSpace = env . subjectSpace локальный templateTitle = env . templateTitle если не subjectSpace или не templateTitle, то вернуть ноль конец местный тип страницы если subjectSpace == 10, тогда pagetype = сообщение ( 'шаблон-тип страницы' ) elseif subjectSpace == 828 тогда pagetype = сообщение ( 'модуль-тип страницы' ) еще pagetype = сообщение ( 'default-pagetype' ) конец локальные подстраницыLink = makeWikilink ( 'Special: PrefixIndex /' .. templateTitle . prefixedText .. '/' , сообщение ( 'subpages-link-display' , { pagetype }) ) ответное сообщение ( 'subpages-blurb' , { subpagesLink })конецфункция p . makePrintBlurb ( аргументы , env ) знак равно - Создает рекламное объявление, отображаемое при наличии доступной печатной версии шаблона. - @args - таблица аргументов, переданных пользователем - @env - таблица окружения, содержащая титровальные объекты и т. д., сгенерированная с помощью p.getEnvironment - -- Сообщения: - 'print-link-display' -> '/ Print' - 'print-blurb' -> 'A [[Справка: Книги / для экспертов # Улучшение макета книги | версия для печати]]' - .. 'этого шаблона существует по цене 1 $.' - .. 'Если вы внесете изменения в этот шаблон, обновите также версию для печати.' - 'display-print-category' -> истина - 'print-category' -> 'Шаблоны с версиями для печати' знак равно локальный printTitle = env . printTitle если не printTitle, то вернуть ноль конец местный рет если printTitle . существует тогда локальная printLink = makeWikilink ( printTitle . prefixedText , сообщение ( 'печать канальном дисплей' )) ret = сообщение ( 'print-blurb' , { printLink }) локальный displayPrintCategory = message ( 'display-print-category' , nil , 'boolean' ) если displayPrintCategory, то ret = ret .. makeCategoryLink ( сообщение ( 'категория печати' )) конец конец возвращение в отставкеконец-------------------------------------------------- --------------------------- Категории отслеживания-------------------------------------------------- --------------------------функция p . addTrackingCategories ( env ) - [[ - Проверьте, включена ли {{documentation}} на страницу / doc или / testcases. - @env - таблица окружения, содержащая титровальные объекты и т. д., сгенерированная с помощью p.getEnvironment -- Сообщения: - 'дисплей-странное-использование-категория' -> истина - 'doc-subpage' -> 'doc' - 'testcases-subpage' -> 'testcases' - 'random-usage-category' -> 'Страницы Википедии со странным ((документацией)) использованием' - - Страницы / testcases в пространстве имен модуля не классифицируются, поскольку могут иметь - {{документация}} включается автоматически. -]] местный заголовок = env . заглавие локальный subjectSpace = env . subjectSpace если не title или not subjectSpace, то вернуть ноль конец локальная подстраница = заголовок . subpageText местное ret = '' если сообщение ( 'дисплей-странное-использование-категория' , ноль , 'логическое' ) и ( subpage == message ( 'doc-subpage' ) или subjectSpace ~ = 828 и subpage == message ( 'testcases-subpage' ) ) тогда ret = ret .. makeCategoryLink ( сообщение ( 'странная-категория-использования' )) конец возвращение в отставкеконецвернуть p