Модуль:Hatnote/doc: различия между версиями
Mansur700 (обсуждение | вклад) (Новая страница: «{{docpage}} {{Module rating|release}} Модуль предназначен для реализации hatnote-шаблонов (например, {{t|основ...») |
Mansur700 (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
{{docpage}} | {{docpage}}{{Module rating|protected}} | ||
{{Module rating| | {{используйте песочницу|testcases-other=Шаблон:Основная статья/тесты}} | ||
Модуль предназначен для реализации hatnote-шаблонов (например, {{t|основная статья}}, {{t|см. также}}). Также он содержит несколько функций для работы со ссылками и отслеживания ошибок. | Модуль предназначен для реализации hatnote-шаблонов (например, {{t|основная статья}}, {{t|см. также}}). Также он содержит несколько функций для работы со ссылками и отслеживания ошибок. См. тесты на странице [[Шаблон:Основная статья/тесты]]. | ||
== Основные функции == | == Основные функции == | ||
Основные функции содержатся в таблице {{code|p}}, все функции можно вызывать как из других модулей, так и через {{mwmw|invoke}}. При вызове из модуля функции принимают первым параметром таблицу с аргументами. Все описанные ниже параметры являются аргументами этой таблицы. Некоторые параметры принимают булевоподобные значения: их перечисление можно найти [[Модуль:Yesno|здесь]]. | Основные функции содержатся в таблице {{code|p}}, все функции можно вызывать как из других модулей, так и через {{mwmw|invoke}}. При вызове из модуля функции принимают первым параметром таблицу с аргументами. Все описанные ниже параметры являются аргументами этой таблицы. Некоторые параметры принимают булевоподобные значения: их перечисление можно найти [[Модуль:Yesno|здесь]]. | ||
=== <code>parse_link</code> === | |||
Принимает на вход ссылку, возвращает два значения: целевую страницу и видимую часть ссылки. Если ссылку не удалось разобрать, возвращает {{code|nil}}. Наличие квадратных скобок не обязательно. | |||
=== <code>format_link</code> === | === <code>format_link</code> === | ||
Формирует вики-ссылку. Превращает {{code|#}} в ссылках на разделы в знак параграфа, отбитый пробелами, делая их более читабельными (см. {{t|ссылка на раздел}}). | |||
Параметры: | |||
* первый параметр: название целевой страницы или вики-ссылка. | |||
* второй параметр: название раздела. Параметр будет проигнорирован, если раздел уже задан в первом параметре через {{code|#}}. | |||
* третий параметр: видимый текст ссылки. | |||
=== <code>remove_precision</code> === | === <code>remove_precision</code> === | ||
Убирает уточнение из первого параметра (см. {{t|без уточнения}}). | |||
=== <code>is_disambig</code> === | === <code>is_disambig</code> === | ||
Строка 26: | Строка 34: | ||
* {{para|bold_links}} или {{para|ссылки болдом}}: при непустом и неложном значении каждая ссылка выделяется полужирным. | * {{para|bold_links}} или {{para|ссылки болдом}}: при непустом и неложном значении каждая ссылка выделяется полужирным. | ||
Возвращает таблицу, для неё предусмотрен метод {{code|tostring()}} и конкатенация. Именованные параметры этой таблицы — булевы переменные, истинные при обнаружении проблем. Отслеживаемые проблемы: | Возвращает таблицу, для неё предусмотрен метод {{code|tostring()}} и конкатенация. Именованные параметры этой таблицы — булевы переменные, истинные при обнаружении проблем. Отслеживаемые проблемы: {{code|red_link}}, {{code|bad_format}}, {{code|formatted}}, {{code|unparsable_link}}. Их описание [[#Отслеживаемые случаи|см. ниже]]. | ||
=== <code>hatnote</code> === | === <code>hatnote</code> === | ||
Строка 35: | Строка 41: | ||
Параметры: | Параметры: | ||
* первый параметр — текст заметки. | * первый параметр — текст заметки. | ||
* {{para|id}}: id заметки. | |||
* {{para|extraclasses}}: дополнительные классы заметки. | * {{para|extraclasses}}: дополнительные классы заметки. | ||
* {{para|hide_disambig}}: при непустом и неложном значении к тексту добавляется класс {{code|dabhide}}, скрывающий подсветку для пользователей [[Тептар:Гаджеты/Выделение неоднозначностей|гаджета подсветки неоднозначностей]]. | * {{para|hide_disambig}}: при непустом и неложном значении к тексту добавляется класс {{code|dabhide}}, скрывающий подсветку для пользователей [[Тептар:Гаджеты/Выделение неоднозначностей|гаджета подсветки неоднозначностей]]. | ||
Строка 70: | Строка 77: | ||
</source> | </source> | ||
Параметры: | {{видимый якорь|Параметры:|main-Параметры}} | ||
* {{para|prefix}} или {{para|префикс}}: обязательный параметр, текст перед списком ссылок. | * {{para|prefix}} или {{para|префикс}}: обязательный параметр, текст перед списком ссылок. | ||
* {{para|prefix_plural}} или {{para|префикс мн. ч.}}: если ссылок несколько, для префикса вместо предыдущего параметра будет использован этот. | * {{para|prefix_plural}} или {{para|префикс мн. ч.}}: если ссылок несколько, для префикса вместо предыдущего параметра будет использован этот. | ||
Строка 76: | Строка 83: | ||
* {{para|dot}} или {{para|точка}}: при непустом и неложном значении выводится точка в конце. | * {{para|dot}} или {{para|точка}}: при непустом и неложном значении выводится точка в конце. | ||
* {{para|nocat}}: при непустом и неложном значении отключается категоризация. | * {{para|nocat}}: при непустом и неложном значении отключается категоризация. | ||
* {{para|preview_error}}: при непустом и неложном значении ошибка выводится только во время предпросмотра. | * {{para|empty_list_message}}: сообщение об ошибке, выводящееся при пустом списке ссылок. По умолчанию — «Не указано ни одной страницы». | ||
* {{para|preview_error}}: при непустом и неложном значении ошибка при пустом списке ссылок выводится только во время предпросмотра. | |||
Функция также принимает все параметры функций {{code|list}} и {{code|hatnote}} и передает их без изменения в эти функции. | Функция также принимает все параметры функций {{code|list}} и {{code|hatnote}} и передает их без изменения в эти функции. | ||
Вторым параметром (при вызове через другой модуль) функция принимает таблицу с переназначенными категориями. | Вторым параметром (при вызове через другой модуль) функция принимает таблицу с переназначенными категориями. Их идентификаторы [[#Отслеживаемые случаи|см. ниже]]: | ||
== Служебные функции == | == Служебные функции == | ||
Находятся в таблице {{code|tr}}, предназначены для отслеживания проблем и вывода сообщений об ошибках. Все функции можно вызывать только из других модулей. | Находятся в таблице {{code|tr}}, предназначены для отслеживания проблем и вывода сообщений об ошибках. Все функции можно вызывать только из других модулей. | ||
=== <code> | === <code>define_categories</code> === | ||
<source lang="lua">tr. | <source lang="lua">tr.define_categories(tracking_categories)</source> | ||
Создает объект, представляющий собой таблицу с категориями и функцией для их добавления. Первым параметром передается ассоциированный массив с идентификаторами отслеживающих категорий. | Создает объект, представляющий собой таблицу с категориями и функцией для их добавления. Первым параметром передается ассоциированный массив с идентификаторами отслеживающих категорий. | ||
==== <code>add</code> ==== | ==== <code>add</code> ==== | ||
<source lang="lua">categories:add(type, nocat)</source> | <source lang="lua">categories:add(type, nocat)</source> | ||
Добавляет в таблицу категории. Первый параметр — идентификатор, | или | ||
<source lang="lua">categories:add(category_name, nocat)</source> | |||
Добавляет в таблицу категории. Первый параметр — либо идентификатор, объявленный в {{code|define_categories()}}, либо название категории. Второй параметр — отключение категоризации. | |||
=== <code>error</code> === | === <code>error</code> === | ||
Строка 102: | Строка 108: | ||
Параметры: | Параметры: | ||
* {{code|msg}}: текст сообщения. | * {{code|msg}}: текст сообщения. | ||
* {{code|categories}}: либо [[# | * {{code|categories}}: либо [[#define_categories|объект]], возвращаемый {{code|define_categories()}}, либо строка с категориями. | ||
* {{code|preview_only}}: при непустом и неложном значении ошибка выводится только во время предпросмотра. | * {{code|preview_only}}: при непустом и неложном значении ошибка выводится только во время предпросмотра. | ||
== Отслеживаемые случаи == | |||
* {{code|no_prefix}} — не задан префикс. Также выводится сообщение об ошибке. | |||
*: Категория: {{cl|Тептар:Страницы с модулем Hatnote без указания префикса}} | |||
* {{code|no_links}} — не задано ни одной ссылки. Также выводится сообщение об ошибке (либо в тексте статьи, либо только во время предварительного просмотра, подробнее см. [[#main-Параметры]]). | |||
*: Категория: {{cl|Тептар:Страницы с модулем Hatnote без ссылок}} | |||
* {{code|red_link}} — параметр содержит ссылку на несуществующую статью. | |||
*: Категория: {{cl|Тептар:Страницы с модулем Hatnote с красной ссылкой}} | |||
* {{code|bad_format}} — параметр содержит разделитель {{tc|!}} вместо параметра {{para|l''x''}} или лишние квадратные скобки. | |||
*: Категория: {{cl|Тептар:Страницы с модулем Hatnote с некорректно заполненными параметрами}} | |||
* {{code|formatted}} — параметр содержит {{code|<nowiki><span</nowiki>}} (в таком случае он не парсится, а выдаётся в готовом виде). Нужно для поддержки шаблонов {{t|не переведено}} в качестве параметров. | |||
*: Категория: {{cl|Тептар:Страницы с модулем Hatnote с готовым форматированием}} | |||
* {{code|unparsable_link}} — параметр содержит нестандартное оформление, которое не может быть разобрано модулем (например, {{tc|см. также|<nowiki>[https://example.com внешние ссылки]</nowiki>}} или {{tc|см. также|<nowiki>посторонний текст помимо [[ссылка|ссылки]]</nowiki>}}). | |||
*: Категория: {{cl|Тептар:Страницы с модулем Hatnote с нечитаемой ссылкой}} | |||
== Использование в других модулях == | |||
Некоторые функции используются в следующих модулях ({{plain link|url= https://massarn.com/w/index.php?search=insource%3A%2Frequire+%2A%5C%28%3F+%2A%5B%27%22%5D+%2A%28%5BMm%5Dodule%7C%5B%D0%9C%D0%BC%5D%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%29+%2A%3A+%2A%5BHh%5Datnote+%2A%5B%27%22%5D%2F&title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&profile=advanced&fulltext=1&ns828=1|name= проверить}}): | |||
* [[Модуль:ФИО]] | |||
* [[Модуль:Другие значения]] | |||
* [[Модуль:Основная статья]] |
Текущая версия от 11:30, 31 января 2022
Этот модуль относится к критическим. У него очень много включений или он используется с подстановкой. Из-за опасности вандализма или ошибочного редактирования он был защищён. |
Прежде чем вносить какие-либо изменения в данный модуль, просьба оттестировать их в /песочнице и проверить результат на странице с /контрольными примерами. Изменения могут быть внесены после этого в данный модуль всего одной правкой. |
Модуль предназначен для реализации hatnote-шаблонов (например, {{основная статья}}, {{см. также}}). Также он содержит несколько функций для работы со ссылками и отслеживания ошибок. См. тесты на странице Шаблон:Основная статья/тесты.
Основные функции[править код]
Основные функции содержатся в таблице p
, все функции можно вызывать как из других модулей, так и через {{#invoke}}. При вызове из модуля функции принимают первым параметром таблицу с аргументами. Все описанные ниже параметры являются аргументами этой таблицы. Некоторые параметры принимают булевоподобные значения: их перечисление можно найти здесь.
parse_link
[править код]
Принимает на вход ссылку, возвращает два значения: целевую страницу и видимую часть ссылки. Если ссылку не удалось разобрать, возвращает nil
. Наличие квадратных скобок не обязательно.
format_link
[править код]
Формирует вики-ссылку. Превращает #
в ссылках на разделы в знак параграфа, отбитый пробелами, делая их более читабельными (см. {{ссылка на раздел}}).
Параметры:
- первый параметр: название целевой страницы или вики-ссылка.
- второй параметр: название раздела. Параметр будет проигнорирован, если раздел уже задан в первом параметре через
#
. - третий параметр: видимый текст ссылки.
remove_precision
[править код]
Убирает уточнение из первого параметра (см. {{без уточнения}}).
is_disambig
[править код]
Функция, определяющая, является ли первый параметр страницей разрешения неоднозначности. Список шаблонов неоднозначностей берется со страницы MediaWiki:Disambiguationspage.
list
[править код]
Формирует список из вики-ссылок.
Параметры:
- нумерованные параметры — ссылки на страницы.
|l1=
,|l2=
и т. д. — текст ссылок.|list_sep=
или|разделитель списка=
: разделитель списка, по умолчанию — «, ».|natural_join=
: при неложном значении вместо последнего разделителя выводится союз «и».|links_ns=
или|ПИ ссылок=
: ко всем ссылкам добавляется префикс указанного пространства имен.|bold_links=
или|ссылки болдом=
: при непустом и неложном значении каждая ссылка выделяется полужирным.
Возвращает таблицу, для неё предусмотрен метод tostring()
и конкатенация. Именованные параметры этой таблицы — булевы переменные, истинные при обнаружении проблем. Отслеживаемые проблемы: red_link
, bad_format
, formatted
, unparsable_link
. Их описание см. ниже.
hatnote
[править код]
Формирует код <div class="hatnote">...</div>
.
Параметры:
- первый параметр — текст заметки.
|id=
: id заметки.|extraclasses=
: дополнительные классы заметки.|hide_disambig=
: при непустом и неложном значении к тексту добавляется классdabhide
, скрывающий подсветку для пользователей гаджета подсветки неоднозначностей.
main
[править код]
Генерирует текст-заметку. Позволяет ссылаться на неограниченное число страниц. Синтаксис:
- вызов из вики-текста:
{{#invoke:Hatnote|main|префикс= префикс |префикс мн. ч.= префикс для нескольких ссылок |разделитель списка= разделитель списка |ПИ ссылок= пространство имен |extraclasses = дополнительные классы |точка= true / false |hide_disambig= true / false}}
- вызов из другого модуля:
-- подключение модуля local hatnote = require('Модуль:Hatnote').main -- пример использования без изменения категорий по умолчанию local res1 = hatnote{ 'Какая-то статья', l1 = 'Какой-нибудь текст ссылки', prefix = 'Основная статья:', prefix_plural = 'Основные статьи:', dot = true, nocat = args.nocat -- следует всегда передавать nocat, если он предусмотрен } -- и с изменением local res2 = hatnote({ 'Еще какая-то статья', prefix = 'См. также:', list_sep = '; ', natural_join = false, nocat = args.nocat }, { red_link = 'Тептар:Статьи с шаблоном «См. также» с красными ссылками' })
Параметры:
|prefix=
или|префикс=
: обязательный параметр, текст перед списком ссылок.|prefix_plural=
или|префикс мн. ч.=
: если ссылок несколько, для префикса вместо предыдущего параметра будет использован этот.|sep=
или|разделитель=
: разделитель между префиксом и списком ссылок.|dot=
или|точка=
: при непустом и неложном значении выводится точка в конце.|nocat=
: при непустом и неложном значении отключается категоризация.|empty_list_message=
: сообщение об ошибке, выводящееся при пустом списке ссылок. По умолчанию — «Не указано ни одной страницы».|preview_error=
: при непустом и неложном значении ошибка при пустом списке ссылок выводится только во время предпросмотра.
Функция также принимает все параметры функций list
и hatnote
и передает их без изменения в эти функции.
Вторым параметром (при вызове через другой модуль) функция принимает таблицу с переназначенными категориями. Их идентификаторы см. ниже:
Служебные функции[править код]
Находятся в таблице tr
, предназначены для отслеживания проблем и вывода сообщений об ошибках. Все функции можно вызывать только из других модулей.
define_categories
[править код]
tr.define_categories(tracking_categories)
Создает объект, представляющий собой таблицу с категориями и функцией для их добавления. Первым параметром передается ассоциированный массив с идентификаторами отслеживающих категорий.
add
[править код]
categories:add(type, nocat)
или
categories:add(category_name, nocat)
Добавляет в таблицу категории. Первый параметр — либо идентификатор, объявленный в define_categories()
, либо название категории. Второй параметр — отключение категоризации.
error
[править код]
tr.error(msg, categories, preview_only)
Выводит сообщение об ошибке. Если ошибка генерируется шаблоном, то отображается название этого шаблона; если прямым вызовом через {{#invoke}}, то название вызываемого модуля.
Параметры:
msg
: текст сообщения.categories
: либо объект, возвращаемыйdefine_categories()
, либо строка с категориями.preview_only
: при непустом и неложном значении ошибка выводится только во время предпросмотра.
Отслеживаемые случаи[править код]
no_prefix
— не задан префикс. Также выводится сообщение об ошибке.no_links
— не задано ни одной ссылки. Также выводится сообщение об ошибке (либо в тексте статьи, либо только во время предварительного просмотра, подробнее см. #main-Параметры).- Категория: Тептар:Страницы с модулем Hatnote без ссылок
red_link
— параметр содержит ссылку на несуществующую статью.bad_format
— параметр содержит разделитель{{!}}
вместо параметра|lx=
или лишние квадратные скобки.formatted
— параметр содержит<span
(в таком случае он не парсится, а выдаётся в готовом виде). Нужно для поддержки шаблонов {{не переведено}} в качестве параметров.unparsable_link
— параметр содержит нестандартное оформление, которое не может быть разобрано модулем (например,{{см. также|[https://example.com внешние ссылки]}}
или{{см. также|посторонний текст помимо [[ссылка|ссылки]]}}
).
Использование в других модулях[править код]
Некоторые функции используются в следующих модулях (проверить):