Модуль:Hatnote/doc: различия между версиями

Материал из Тептар — свободной энциклопедии
Перейти к навигации Перейти к поиску
(Новая страница: «{{docpage}} {{Module rating|release}} Модуль предназначен для реализации hatnote-шаблонов (например, {{t|основ...»)
 
Нет описания правки
 
Строка 1: Строка 1:
{{docpage}}
{{docpage}}{{Module rating|protected}}
{{Module rating|release}}
{{используйте песочницу|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> ===
Реализация шаблона {{t|ссылка на раздел}}.
Формирует вики-ссылку. Превращает {{code|#}} в ссылках на разделы в знак параграфа, отбитый пробелами, делая их более читабельными (см. {{t|ссылка на раздел}}).
 
Параметры:
* первый параметр: название целевой страницы или вики-ссылка.
* второй параметр: название раздела. Параметр будет проигнорирован, если раздел уже задан в первом параметре через {{code|#}}.
* третий параметр: видимый текст ссылки.


=== <code>remove_precision</code> ===
=== <code>remove_precision</code> ===
Реализация шаблона {{t|без уточнения}}.
Убирает уточнение из первого параметра (см. {{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|red_link}} — ссылка на несуществующую статью.
* {{code|bad_format}} — параметр содержит разделитель {{tc|!}} вместо параметра {{para|l''x''}} или лишние квадратные скобки.


=== <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|no_prefix}}: {{cl|Тептар:Страницы с модулем Hatnote без ссылок}}
* {{code|no_links}}: {{cl|Тептар:Страницы с модулем Hatnote без указания префикса}}
* {{code|red_link}}: {{cl|Тептар:Страницы с модулем Hatnote с красной ссылкой}}
* {{code|bad_format}}: {{cl|Тептар:Страницы с модулем Hatnote с некорректно заполненными параметрами}}


== Служебные функции ==
== Служебные функции ==
Находятся в таблице {{code|tr}}, предназначены для отслеживания проблем и вывода сообщений об ошибках. Все функции можно вызывать только из других модулей.
Находятся в таблице {{code|tr}}, предназначены для отслеживания проблем и вывода сообщений об ошибках. Все функции можно вызывать только из других модулей.


=== <code>make_categories</code> ===
=== <code>define_categories</code> ===
<source lang="lua">tr.make_categories(tracking_categories)</source>
<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}}: либо [[#make_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= проверить}}):
* [[Модуль:ФИО]]
* [[Модуль:Другие значения]]
* [[Модуль:Основная статья]]

Текущая версия от 12: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: при непустом и неложном значении ошибка выводится только во время предпросмотра.

Отслеживаемые случаи[править код]

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

Некоторые функции используются в следующих модулях (проверить):