Модуль:WDFormat/doc
Модуль предназначен для форматирования набора данных, полученных из Викиданных посредством модуля WDBackend или заданных вручную. Форматирование может осуществляться в произвольной форме, как в строчку, так и в табличном виде.
Конечное представление информации задаётся профилем, который описывает, какими тегами оформлять данные, группы полей и отдельные поля, а также какие преобразования над данными необходимо сделать.
Использование
[править код]Модуль является библиотечным и предназначен для использования в других модулях. Данный модуль не предназначен для использования в статьях или других шаблонах напрямую через вызов #invoke
.
Требуемое форматирование описывается профилем, представляющим собой таблицу Lua. Профиль описывает представление отдельных полей, то есть то, как они должны отображаться. Недостающий функционал реализуется указанием в профиле собственных функций, принимающих определённый набор аргументов и возвращающих определённый результат.
Для форматирования профиля в совокупности с передаваемым набором данных необходимо использовать функцию format()
. В качестве результата возвращается отформатированный викитекст.
Для примера использования см. модуль Модуль:CiteGost.
Формат профиля в общем виде
[править код]{
-- Корневой тег:
tag = {
name = 'Имя тега',
classes = { 'class1', 'class2', ... },
attr = { атрибут1='значение1', атрибут2='значение2', ... },
tag = Вложенный тег,
},
-- Группы:
-- Начало 1-й группы:
{
-- Тег группы:
tag = {
name = 'Имя тега',
classes = { 'class1', 'class2', ... },
attr = { атрибут1='значение1', атрибут2='значение2', ... },
css = { свойство1='значение1', свойство2='значение2', ... },
tag = Вложенный тег
},
ensureEnds = 'Символ/текст, которым должно заканчиваться предыдущее поле',
delimiter = 'Разделитель, добавляемый по отношению к предыдущему полю',
childEnsureEnds = 'Символ/текст, которым должны заканчиваться поля группы',
childDelimiter = 'Разделитель полей в группе',
-- Дочерние элементы текущей группы по факту продолжают предыдущие элементы (влияет на повышение первой буквы до заглавной):
passthrough = true,
prefix = 'Текст до начала группы',
-- Поля группы (подгруппы):
-- 1-е поле группы:
{
-- Тег поля:
tag = {
name = 'Имя тега',
classes = { 'class1', 'class2', ... },
attr = { атрибут1='значение1', атрибут2='значение2', ... },
tag = Вложенный тег
css = { свойство1='значение1', свойство2='значение2', ... },
},
ensureEnds = 'Символ/текст, которым должен заканчиваться предшествующий текст',
delimiter = 'Разделитель, отделяющий текущий элемент от предыдущего',
-- Функция, разрешающая отображение поля:
cond = функция,
prefix = 'Текст до поля',
field = 'Название поля',
-- Менять ли первую букву поля на заглавную
capitalize = true/false
urlMaskProp = 'P-идентификатор свойства, отвечающего за маску ссылки',
-- Функции, через которые поле будет отформатировано:
format = { функция1, функция2, ... },
suffix = 'Текст после поля',
},
-- Второе поле:
{
value = 'Отображаемое значение',
},
-- Остальные группы:
...
suffix = 'Текст в конце группы',
},
-- Остальные группы:
...
ensureEnds = 'Окончение форматированных данных, например, точка.'
}
Функции форматирования полей
[править код]Форматирование поля задаётся через команду format
с указанием функции форматирования, принимающей определённый набор аргументов. Доступны следующие встроенные функции:
numericalRanges
— форматирование диапазона чисел (корректирует знак диапазона);dash
— оформление тире в тексте;unit
— получение единицы измерения у элемента Викиданных;abbr
— получить сокращённое обозначение (есть ограничения) у элемента Викиданных;short
— получить короткое название у элемента Викиданных;abbrWithHint
— получить сокращённое обозначение (есть ограничения) у элемента Викиданных с расшифровкой в подсказке;date
— форматирование даты;quantity
— форматирование количества с указанной в нём единицей измерения;entity
— получить значение идентификатора элемента Викиданных;wikilink
— оформить поле Викиссылкой, если это возможно;wikisource
— оформить поле ссылкой на Викитеку, если в элементе Викиданных указана соответствующая статья;link
— оформить поле внешней ссылкой, если это возможно;wikidata
— добавление к полю надстрочной ссылки на элемент Викиданных, если хотя бы в одном языковом разделе есть статья по теме;wikidataLink
— оформить поле ссылкой на элемент Викиданных, который с полем связан.forceWikidataLink
— оформить поле ссылкой на элемент Викиданных, который с полем связан. Формирует ссылку, даже если ранее по тексту ссылка на такой элемент была дана.
Внесение изменений
[править код]При исправлении ошибки, пожалуйста, сначала добавьте тест, который будет проваливаться из-за обнаруженной ошибки, и только затем вносите исправление. При внесении исправления проверьте, чтобы все тесты проходили. Вносить исправление можно только, если оно не ломает другие тесты.
Добавление нового функционала рекомендуется делать у себя в песочнице, скопировав в неё модуль. В правке копирования необходимо указать тот факт, что делается копирование, и сделать ссылку на оригинальный модуль в виде викитекста. При добавлении нового функционала сначала желательно добавить тест на этот функционал, затем добавить сам функционал, убедившись, что все тесты при этом проходят.
Тесты
[править код]Все тесты пройдены.
Название | Ожидается | Фактически | |
---|---|---|---|
test_format_array | |||
test_format_arrayCapitalize | |||
test_format_arrayForceCapitalize | |||
test_format_capitalize | |||
test_format_conflicts | |||
test_format_conflicts_recursive | |||
test_format_date | |||
test_format_delimiter_function | |||
test_format_depends | |||
test_format_depends_fieldPath | |||
test_format_depends_recursive | |||
test_format_ensureEndsAndDelimiter | |||
test_format_fieldPath | |||
test_format_group_childDelimiter_and_childEnsureEnds | |||
test_format_group_passthrough | |||
test_format_group_prefix_with_delimiter | |||
test_format_group_prefix_with_delimiter_inside_another_group | |||
test_format_groups_delimiter | |||
test_format_innerTags | |||
test_format_isStatic_hidden | |||
test_format_isStatic_hidden_in_array | |||
test_format_isStatic_hidden_in_array_in_additional_group | |||
test_format_isStatic_visible | |||
test_format_link | |||
test_format_linkOrder | |||
test_format_nested_array | |||
test_format_oneField | |||
test_format_person | |||
test_format_person_multipleNames | |||
test_format_prefixAndSuffix | |||
test_format_recurseGroups | |||
test_format_rootTag | |||
test_format_squareBrackets | |||
test_format_tableTag | |||
test_format_wikilink | |||
test_format_wikisource |
В качестве интеграционных тестов использованы тесты модуля, который работает на основе текущего модуля.
Книги (10/12) | ||||
---|---|---|---|---|
Тест | Ожидается | Фактически | Разница | |
❌ | Книга с указанной серией{{Источник информации|Q115189432
|заглавие тома = Животные
|ref = Красная книга РФ, т. «Животные»
}}
| Красная книга Российской Федерации. Т. «Животные». — 2-е издание. — М. : ФГБУ «ВНИИ Экология», 2021. — 1128 с. — (Красная книга Российской Федерации). — ISBN 978-5-6047425-0-1. — WD Q115189432. | Красная книга Российской Федерации. Т. «Животные». — 2-ое издание. — М. : ФГБУ «ВНИИ Экология», 2021. — 1128 с. — (Красная книга Российской Федерации). — ISBN 978-5-6047425-0-1. — WD Q115189432. | < 2- > 2-ое |
❌ | Том через qid с ручным заданием частного заглавия{{Источник информации|Q115926218
|заглавие тома = Full text
}}
| Lefever Ernest W. United Nations peacekeeping in the Congo: 1960-1964 : an analysis of political, executive and military control : [англ.]. In 4 vols. Vol. 2. Full text / Ernest W. Lefever, Wynfred Joshua. — Washington : Brookings Institution, 1966, 30 June. — 454 p. — OCLC 489825. — WD Q115926218. | Lefever Ernest W. United Nations peacekeeping in the Congo: 1960-1964 : an analysis of political, executive and military control : [англ.]. In 4 vols. Vol. 2. Full text / Ernest W. Lefever, Wynfred Joshua. — Washington : Brookings Institution, 1966, 30 June. — 454 p. — OCLC 489825. — WD Q115926218. | < [https:// > [https://search.worldcat.org/title/489825 < [https://www.worldcat.org/ > [https://search.worldcat.org/title/489825 < [https://www.worldcat.org/ocl > [https://search.worldcat.org/title/489825 |
Медиа (1/2) | ||||
---|---|---|---|---|
Тест | Ожидается | Фактически | Разница | |
❌ | Видеозапись на youtube{{Источник информации
|заглавие = Деятельность ВОЗ по научно-техническому анализу и прогнозированию в области здравоохранения
|qid издателя = Q7817
|id = 1m_4Y6pHmUw
|qid издания = Q866
|язык = ru
|дата = 2022-07-08
|дата обращения = 2022-11-22
|ref = ВОЗ
}}
| Деятельность ВОЗ по научно-техническому анализу и прогнозированию в области здравоохранения [видеозапись] // YouTube. — ВОЗ, 2022, 8 июля. — Дата обращения: 22 ноября 2022. | Деятельность ВОЗ по научно-техническому анализу и прогнозированию в области здравоохранения [видеозапись] // YouTube. — ВОЗ, 2022, 8 июля. — Дата обращения: 22 ноября 2022. | < [https://www.youtube.com/ > [https://www.youtube.com/results?&search_query=1m_4Y6pHmUw&sp=CAM%253D < [https://www.youtube.com/wa > [https://www.youtube.com/results?&search_query=1m_4Y6pHmUw&sp=CAM%253D < [https://www.youtube.com/watch > [https://www.youtube.com/results?&search_query=1m_4Y6pHmUw&sp=CAM%253D < [https://www.youtube.com/watch?v=1m_4Y6pHmUw > [https://www.youtube.com/results?&search_query=1m_4Y6pHmUw&sp=CAM%253D |
Язык (0/1) | ||||
---|---|---|---|---|
Тест | Ожидается | Фактически | Разница | |
❌ | На двух языках{{Источник информации|Q101483459}}
| Whitlam J.[d] Harper Collins Portuguese dictionary : English-Portuguese, Portuguese-English : [англ., португ.] / J. Whitlam, Vitória Davies[d], M. Harland[d]. — Glasgow : HarperCollins UK[d], 1991. — OCLC 370343862. — WD Q101483459. | Whitlam J.[d] Harper Collins Portuguese dictionary : English-Portuguese, Portuguese-English : [англ., португ.] / J. Whitlam, Vitória Davies[d], M. Harland[d]. — Glasgow : HarperCollins UK[d], 1991. — OCLC 370343862. — WD Q101483459. | < [https:// > [https://search.worldcat.org/title/370343862 < [https://www.worldcat.org/ > [https://search.worldcat.org/title/370343862 < [https://www.worldcat.org/ocl > [https://search.worldcat.org/title/370343862 |
План разработки
[править код]План работ:
|
См. также
[править код]- WDBackend — модуль получения информации из Викиданных по задаваемой схеме.
- WDSource — модуль получения информации об источнике из соответствующего элемента Викиданных.
Это страница документации Модуль:WDFormat.