Extension:TemplateData/uk

Розширення TemplateData виводить тег та API, які разом дозволяють редакторам вказувати, як слід викликати шаблони. Ця інформація доступна як гарно відформатована таблиця для кінцевих користувачів, і як JSON API, який дозволяє іншим системам (наприклад, VisualEditor) будувати інтерфейси для роботи зі шаблонами та їхніми параметрами. Поглиблену довідку див. на.

Редагування даних
Розширення TemplateData працює через визначення тегу у вікі-тексті сторінки шаблону (необов'язково його можна включити і з іншої сторінки). Його розроблено для сумісності зі спільним компонуванням багатьох вікіпедій включення документації шаблонів з окремих сторінок (але не вимагається). Цей вміст тегу повинен бути дійсним JSON, використовуючи нижчеописаний формат; зауважте, що всі описи повинні бути у простому тексті (вікі-текст неприйнятний усередині даних шаблонів).

При включенні блоку на сторінку розширення TemplateData виконує наступні перевірки при збереженні сторінки.


 * 1) Вміст повинен бути дійсним JSON;
 * 2) Кожен елемент структури JSON повинен бути очікуваного типу, як зазначено нижче (наприклад, об'єкт, масив або примітив); і
 * 3) Для елементів із визначеним списком можливих значень (наприклад,  ) значення в об'єкті JSON повинно відповідати одному з тих значень.

Якщо будь-яка з перевірок не вдається, серверу не дозволяється збереження, а над сторінкою редагування показується повідомлення про помилку.

Для елементів із автоматичним значенням помилка 2700 запобігає спрацюванню  у будь-якому шаблоні, доданому всередині, включаючи теги  і. Блок TemplateData коректно зберігатиметься, але результатний вікі-текст не аналізуватиметься коректно при використанні шаблону.

Зауважте, що не можна використовувати  замість.

Формат
Нижче подано візуалізовану версію даних JSON, як вони подаються на сторінці шаблону в тегах . Формалізований опис доступний в репозиторії TemplateData. Зверніться до Specification.md за найновішою версією.

Об'єкт TemplateData
Об'єкт TemplateData є кореневим елементом JSON, охопленим елементом на сторінці шаблону чи його документації.

InterfaceText (рядок чи об'єкт)
Рядок простого тексту (без вікі- та HTML розмітки) вільної форми основною мовою даної вікі, або ж об'єкт із такими рядками як значеннями ключей мовного коду.

Значенням за замовчуванням для всіх полів InterfaceText є.

Рядковий тип
Якщо це рядок, він має містити нелокалізований щодо поточної вікі текст.

Тип Object
Якщо це об'єкт, він має відтворювати таке зіставлення:

Приклад
Приклад структури TemplateData, записаний в коді сторінки шаблону чи його опису:

Цей код відображуватиме на сторінці шаблону ось таке:

{   "description": "Label unsigned comments in a conversation.", "params": { "user": { "label": "User's name", "type": "wiki-user-name", "required": true, "description": "User name of person who forgot to sign their comment.", "aliases": ["1"] },       "date": { "label": "Date", "suggested": true, "description": { "en": "Timestamp of when the comment was posted, in YYYY-MM-DD format." },           "aliases": ["2"], "autovalue": "" },       "year": { "label": "Year", "type": "number" },       "month": { "label": "Month", "inherits": "year" },       "day": { "label": "Day", "inherits": "year" },       "comment": { "required": false }   },    "sets": [ {           "label": "Date", "params": ["year", "month", "day"] }   ],    "maps": { "ExampleConsumer": { "foo": "user", "bar": ["year", "month", "day"], "quux": [ "date", ["day", "month"], ["month", "year"], "year" ]       }    } }

API
Див. згенеровану довідку на Special:ApiHelp/templatedata. Приклад виклику (форматований задля кращого розуміння людиною):

Повертає дані шаблону для Template:Cite web. Блок  цього шаблону знаходиться на сторінці його документації, en:Template:Cite web/doc, і включається трансклюзією.

Додатки та зміни структури JSON, отриманого від API
Структура JSON, отримуваного у відповідь на API HTTP запит get, суттєво відрізняється від тієї, що притаманна блоку . У відповіді на запит API розширення TemplateData вносить такі зміни до об'єкта JSON:


 * Додає два охоплюючі об'єкти:
 * Загальний об'єкт Pages, який містить один чи більше об'єктів Page.
 * Об'єкт із числовим ключем: об'єкт Page
 * Доповнення/зміни до самого об'єкта TemplateData
 * Додано ключ  з назвою сторінки, звідки було запитано дані шаблону (приміром, "Template:Cite web").
 * Додано ключ  із масивом значень, в якому назви параметрів зустрічаються в тому самому порядку, як і в об'єкті   всередині об'єкта TemplateData на сторінці шаблону.
 * Додано ключ
 * Змінено всі зустрінуті TemplateText, які були рядковими параметрами, на об'єкти з єдиним ключем для основної мови вікі
 * Прибрано всі ключі.
 * Додано всі атрибути параметрів, для яких визначено наслідування і значення яких не перевизначено безпосередньо атрибутом параметра-спадкоємця в його об'єкті Parameter.
 * Додано значення за замовчуванням для всіх ключей в об'єктах Parameter, які не було визначено безпосередньо чи успадковано.

Приклад об'єкту JSON, отриманого через API
Відповідь на запит API структури TemplateData із попереднього розділу Приклад буде така:
 * У форматі HTML: https://www.mediawiki.org/w/api.php?action=templatedata&titles=Extension:TemplateData&format=jsonfm
 * Отримана через API: https://www.mediawiki.org/w/api.php?action=templatedata&titles=Extension:TemplateData

Див. також

 * – користувацький інтерфейс для обирання та вставлення вікітексту шаблону на ґрунті його TemplateData.
 * GitHub: jeblad/TemplateData – альтернативна версія із певною функціональністю Lua.
 * Translatable template.