Модуль: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


В качестве интеграционных тестов использованы тесты модуля, который работает на основе текущего модуля.

Пройдено тестов: 29 из 33. Неудачных: 4.
Книги (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://www.worldcat.org/oclc/489825
> [https://search.worldcat.org/title/489825
< [https://www.worldcat.org/oclc/489825
> [https://search.worldcat.org/title/489825
< [https://www.worldcat.org/oclc/489825
> [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/watch?v=1m_4Y6pHmUw
> [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
< [https://www.youtube.com/watch?v=1m_4Y6pHmUw
> [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://www.worldcat.org/oclc/370343862
> [https://search.worldcat.org/title/370343862
< [https://www.worldcat.org/oclc/370343862
> [https://search.worldcat.org/title/370343862
< [https://www.worldcat.org/oclc/370343862
> [https://search.worldcat.org/title/370343862

План разработки

[править код]

См. также

[править код]
  • WDBackend — модуль получения информации из Викиданных по задаваемой схеме.
  • WDSource — модуль получения информации об источнике из соответствующего элемента Викиданных.


Это страница документации Модуль:WDFormat.