Модуль:GetField/doc: различия между версиями
Pok (обсуждение | вклад) Нет описания правки |
Pok (обсуждение | вклад) Нет описания правки |
||
| (не показаны 2 промежуточные версии этого же участника) | |||
| Строка 78: | Строка 78: | ||
Примеры: | Примеры: | ||
* {{tji|Модуль:GetField|searchId|Elements|[[Участник:IanComradeBot/prototype/reaction.json|prototype/reaction.json]]|group}} -> {{GetField| | * {{tji|Модуль:GetField|searchId|Elements|[[Участник:IanComradeBot/prototype/reaction.json|prototype/reaction.json]]|group}} -> {{#invoke:GetField|searchId|Stir|prototype/reaction.json|requiredMixerCategories}} | ||
{{Параметры| | {{Параметры| | ||
| Строка 88: | Строка 88: | ||
}} | }} | ||
=== | === search === | ||
Ищет сущности, у которых есть указанные компоненты или теги. Поддерживается поиск по нескольким значениям через запятую: сущность попадёт в результат только если содержит все перечисленные элементы. | |||
Использование: | Использование: | ||
* {{tji|Модуль:GetField| | * {{tji|Модуль:GetField|search|component|componentName}} | ||
* {{tji|Модуль:GetField|search|tag|tagName}} | |||
Режимы: | |||
* <code>component</code> — ищет сущности по списку компонентов. | |||
* <code>tag</code> — ищет сущности по списку тегов. | |||
Результат: | |||
* возвращается JSON-массив id найденных сущностей; | |||
* в режиме <code>component</code> результат также JSON-массив, без дополнительного форматирования. | |||
Примеры: | |||
* {{tji|Модуль:GetField| | * {{tji|Модуль:GetField|search|component|Emag}} -> {{#invoke:GetField|search|component|Emag}} | ||
* {{tji|Модуль:GetField|search|tag|Crayon}} -> {{#invoke:GetField|search|tag|Crayon}} | |||
{{Параметры| | {{Параметры| | ||
{{Параметры/строка|1| | {{Параметры/строка|1|Режим поиска: <code>component</code> или <code>tag</code>.|Да}} | ||
{{Параметры/строка|2| | {{Параметры/строка|2|Список компонентов или тегов через запятую. Все указанные значения должны присутствовать у сущности.|Да}} | ||
}} | }} | ||
| Строка 115: | Строка 123: | ||
Примеры: | Примеры: | ||
* {{tji|Модуль:GetField|searchStore|MopItem|component|itemBorgModule}} -> {{GetField| | * {{tji|Модуль:GetField|searchStore|MopItem|component|itemBorgModule}} -> {{#invoke:GetField|searchStore|MopItem|component|itemBorgModule}} | ||
* {{tji|Модуль:GetField|searchStore|MopItem|prototype|latheRecipe}} -> {{GetField| | * {{tji|Модуль:GetField|searchStore|MopItem|prototype|latheRecipe}} -> {{#invoke:GetField|searchStore|MopItem|prototype|latheRecipe}} | ||
{{Параметры| | {{Параметры| | ||
| Строка 143: | Строка 151: | ||
{{Параметры/строка|2|Имя шаблона для <code>getAllTpl</code>.|Только для <code>getAllTpl</code>}} | {{Параметры/строка|2|Имя шаблона для <code>getAllTpl</code>.|Только для <code>getAllTpl</code>}} | ||
{{Параметры/строка|replace|Строка замены для <code>getAll</code>. Если задана, результат выводится построчно вместо JSON-массива.|Нет}} | {{Параметры/строка|replace|Строка замены для <code>getAll</code>. Если задана, результат выводится построчно вместо JSON-массива.|Нет}} | ||
}} | |||
=== hasComp === | |||
Проверяет, есть ли у сущности указанный компонент. | |||
Использование: | |||
* {{tji|Модуль:GetField|hasComp|entityId|componentName}} | |||
Возвращает строку <code>true</code> или <code>false</code>. | |||
Пример: | |||
* {{tji|Модуль:GetField|hasComp|MopItem|Item}} | |||
{{Параметры| | |||
{{Параметры/строка|1|Id сущности.|Да}} | |||
{{Параметры/строка|2|Имя компонента для проверки.|Да}} | |||
}} | |||
=== getComp === | |||
Возвращает список всех компонентов сущности в виде JSON-массива. | |||
Использование: | |||
* {{tji|Модуль:GetField|getComp|entityId}} | |||
Пример: | |||
* {{tji|Модуль:GetField|getComp|MopItem}} -> ["Item","Sprite","MeleeWeapon","SolutionContainerManager"...] | |||
{{Параметры| | |||
{{Параметры/строка|1|Id сущности.|Да}} | |||
}} | }} | ||
| Строка 152: | Строка 189: | ||
* {{tji|Модуль:GetField|jsonList|<nowiki>{"MopItem":"Швабра"}</nowiki>}} | * {{tji|Модуль:GetField|jsonList|<nowiki>{"MopItem":"Швабра"}</nowiki>}} | ||
* {{tji|Модуль:GetField|jsonList|<nowiki>{"MopItem":"Швабра"}</nowiki>|type{{=}}enum}} | * {{tji|Модуль:GetField|jsonList|<nowiki>{"MopItem":"Швабра"}</nowiki>|type{{=}}enum}} | ||
* {{tji|Модуль:GetField|jsonList|<nowiki>["a","b","c"]</nowiki>|max{{=}}1}} | |||
Основные параметры: | Основные параметры: | ||
| Строка 159: | Строка 197: | ||
* <code>replace</code> — дополнительная обработка регулярным выражением уже собранной строки. | * <code>replace</code> — дополнительная обработка регулярным выражением уже собранной строки. | ||
* <code>key_replace</code>, <code>value_replace</code> — обработка ключей и значений регулярным выражением по отдельности. | * <code>key_replace</code>, <code>value_replace</code> — обработка ключей и значений регулярным выражением по отдельности. | ||
* <code>max</code> — максимальное количество элементов, которые нужно обработать. Если не задан, обрабатывается весь список. | |||
Примеры: | Примеры: | ||
* {{tji|Модуль:GetField|jsonList|<nowiki>["a","b","c"]</nowiki>}} | * {{tji|Модуль:GetField|jsonList|<nowiki>["a","b","c"]</nowiki>}} | ||
* {{tji|Модуль:GetField|jsonList|<nowiki>{"MopItem":"Швабра"}</nowiki>|type{{=}}list}} | * {{tji|Модуль:GetField|jsonList|<nowiki>{"MopItem":"Швабра"}</nowiki>|type{{=}}list}} | ||
* {{tji|Модуль:GetField|jsonList|<nowiki>{"MopItem":"Швабра"}</nowiki>|type{{=}}none| | * {{tji|Модуль:GetField|jsonList|<nowiki>{"MopItem":"Швабра"}</nowiki>|type{{=}}none|value_replace{{=}}{{tag|nowiki|style=regular|content=<nowiki>[[\1]]</nowiki>}}}} | ||
* {{tji|Модуль:GetField|jsonList|<nowiki>["a","b","c"]</nowiki>|max{{=}}1}} | |||
{{Параметры| | {{Параметры| | ||
| Строка 173: | Строка 213: | ||
{{Параметры/строка|value_replace|Строка замены для значений.|Нет; <code>\1</code>}} | {{Параметры/строка|value_replace|Строка замены для значений.|Нет; <code>\1</code>}} | ||
{{Параметры/строка|replace|Строка замены для всего вывода.|Нет; <code>\1</code>}} | {{Параметры/строка|replace|Строка замены для всего вывода.|Нет; <code>\1</code>}} | ||
{{Параметры/строка|max|Максимальное количество элементов для обработки.|Нет; весь список}} | |||
}} | }} | ||
Текущая версия от 19:11, 20 июня 2026
Модуль предназначен для получения данных из кэшированных JSON-страниц и их использования в шаблонах. С его помощью можно получить поле по пути, найти id по значению или сразу собрать вызов шаблона по найденным данным.
Поля берутся из json страниц
Участник:IanComradeBot/component/название(пример: Участник:IanComradeBot/component/access.json)Участник:IanComradeBot/prototype/название(пример: Участник:IanComradeBot/prototype/tag.json)
Для подпроектов
Участник:IanComradeBot/component/Проект/название(пример: Участник:IanComradeBot/Goob/component/access.json)Участник:IanComradeBot/prototype/Проект/название(пример: Участник:IanComradeBot/Goob/prototype/tag.json)
Основные функции
get
Возвращает запись целиком или отдельное поле по её id.
Использование:
- {{#invoke:GetField
|get |id |pagePath |keyPath}}
Простые значения возвращаются как текст, а таблицы в JSON-виде.
Например, json сущности MopItem из Участник:IanComradeBot/component/meleeWeapon.json выглядит так:
"MopItem": {
"damage": {
"types": {
"Blunt": 10
}
},
...
},
то мы можем получить значение как как:
- {{#invoke:GetField
|get |MopItem |component/meleeWeapon.json |damage}} -> "types": {"Blunt": 10}} - {{#invoke:GetField
|get |MopItem |component/meleeWeapon.json |damage.types}} -> {"Blunt": 10} - {{#invoke:GetField
|get |MopItem |component/meleeWeapon.json |damage.types.Blunt}} -> 10
| Параметр | Описание | Обязателен? |
|---|---|---|
|1 = | Id записи. | Да |
|2 = | Путь до JSON-страницы, например component/meleeWeapon.json. | Да |
|3 = | Путь до поля внутри записи. Поддерживает вложенность через точку и индексы вида field.1 | Да |
getTpl
Строит вызов шаблона для одного id передавая в него развёрнутые поля записи.
Использование:
- {{#invoke:GetField
|getTpl |id |pagePath |template}}
Шаблон вызывается в виде {{Имя шаблона|id=...|...поля записи...}}. Вложенные таблицы передаются как плоские параметры, а также в JSON-виде там, где это нужно для сохранения структуры.
Пример:
- {{#invoke:GetField
|getTpl |MopItem |сomponent/spillable.json |сomponent/spillable}}
| Параметр | Описание | Обязателен? |
|---|---|---|
|1 = | Id записи. | Да |
|2 = | Путь до JSON-страницы. | Да |
|3 = | Имя шаблона, который будет вызван как {{Имя шаблона|id=...|...}}. | Да |
searchId / searchIdTpl
Обе функции ищут id по значению в указанном поле. Разница в результате:
searchIdвозвращает найденные id в виде JSON-массива.searchIdTplпо найденным id сразу вызывает шаблон.
Использование:
- {{#invoke:GetField
|searchId |searchValue |pagePath |keyPath}} - {{#invoke:GetField
|searchIdTpl |searchValue |pagePath |keyPath |template}} - {{#invoke:GetField
|searchIdTpl |pagePath |keyPath |template |searchType=path}}
Режимы поиска:
searchType=value— ищет id, у которых значение поля равно указанному значению. Это режим по умолчанию.searchType=key— ищет id, у которых в поле-таблице существует ключ с указанным именем.searchType=path— только дляsearchIdTpl; выводит все id, у которых поле по указанному пути существует и не пустое. В этом режиме первым параметром передаётсяpagePath, а не значение для поиска.
searchIdTpl вызывает шаблон в виде {{Имя шаблона|id=...|...поля записи...}}. Если найдено несколько id, вызовы собираются подряд через пробел.
Примеры:
- {{#invoke:GetField
|searchId |Elements |prototype/reaction.json |group}} -> ["LemonLime","IrishCoffee","DemonsBlood","SapBoiling","DevilsKiss","MoscowMule","OrangeLimeSoda","RedMead","Vodka","Tortuga","Daiquiri","Andalusia","DoctorsDelight","LongIslandIcedTea","BloodyMary","Lemonade","SpaceGlue","AmmoniaFromBlood"]
| Параметр | Описание | Обязателен? |
|---|---|---|
|1 = | Значение для поиска. | Да |
|2 = | Путь до JSON-страницы. | Да |
|3 = | Путь до поля внутри записи. Поддерживает вложенность через точку и индексы вида field.1 | Да |
|4 = | Имя шаблона, который будет вызван для каждого найденного id. | Только для searchIdTpl |
|searchType = | Режим поиска: value, key или path. | Нет; value |
search
Ищет сущности, у которых есть указанные компоненты или теги. Поддерживается поиск по нескольким значениям через запятую: сущность попадёт в результат только если содержит все перечисленные элементы.
Использование:
Режимы:
component— ищет сущности по списку компонентов.tag— ищет сущности по списку тегов.
Результат:
- возвращается JSON-массив id найденных сущностей;
- в режиме
componentрезультат также JSON-массив, без дополнительного форматирования.
Примеры:
- {{#invoke:GetField
|search |component |Emag}} -> ["AccessBreaker","AccessBreakerUnlimited","Emag","EmagUnlimited","MobRevenant"] - {{#invoke:GetField
|search |tag |Crayon}} -> ["CrayonBlack","CrayonBlue","CrayonBorg","CrayonGreen","CrayonInfinite","CrayonMime","CrayonOrange","CrayonPurple","CrayonRainbow","CrayonRed","CrayonWhite","CrayonYellow"]
| Параметр | Описание | Обязателен? |
|---|---|---|
|1 = | Режим поиска: component или tag. | Да |
|2 = | Список компонентов или тегов через запятую. Все указанные значения должны присутствовать у сущности. | Да |
searchStore / searchStoreTpl
Эти функции находят прототипы или компоненты содержащие указанный id, используя Участник:IanComradeBot/prototype_store.json или Участник:IanComradeBot/component_store.json.
Использование:
- {{#invoke:GetField
|searchStore |searchId |prototype |Название}} - {{#invoke:GetField
|searchStore |searchId |component |Название}} - {{#invoke:GetField
|searchStoreTpl |searchId |prototype |Название |Шаблон}}
searchStore возвращает JSON-массив id, найденных в компонентах/прототипах. searchStoreTpl по тем же id сразу вызывает шаблон, используя страницу вида prototype/Название.json или component/Название.json.
Примеры:
- {{#invoke:GetField
|searchStore |MopItem |component |itemBorgModule}} -> ["BorgModuleCleaning"] - {{#invoke:GetField
|searchStore |MopItem |prototype |latheRecipe}} -> ["MopItem"]
| Параметр | Описание | Обязателен? |
|---|---|---|
|1 = | Id, который ищется в хранилище. | Да |
|2 = | Тип: prototype или component. | Да |
|3 = | Имя хранилищя без .json. | Да |
|4 = | Имя шаблона, который будет вызван для каждого найденного id. | Только для searchStoreTpl |
getAll / getAllTpl
Эти функции получают все id прототипов или компонентов.
Использование:
getAll по умолчанию возвращает JSON-массив id.
getAllTpl вызывает шаблон для каждого id в виде {{Имя шаблона|id=...|...поля записи...}}.
Примеры:
- {{#invoke:GetField
|getAll |component/staticPrice.json}} -> выводит все id сущностей с этим компонентом в формате JSON - {{#invoke:GetField
|getAllTpl |component/staticPrice.json |component/staticPrice/wrapper}} -> выводит все id сущностей с этим компонентом обёрнутым в шаблон {{component/staticPrice/wrapper}}
| Параметр | Описание | Обязателен? |
|---|---|---|
|1 = | Путь до JSON-страницы. | Да |
|2 = | Имя шаблона для getAllTpl. | Только для getAllTpl |
|replace = | Строка замены для getAll. Если задана, результат выводится построчно вместо JSON-массива. | Нет |
hasComp
Проверяет, есть ли у сущности указанный компонент.
Использование:
- {{#invoke:GetField
|hasComp |entityId |componentName}}
Возвращает строку true или false.
Пример:
- {{#invoke:GetField
|hasComp |MopItem |Item}}
| Параметр | Описание | Обязателен? |
|---|---|---|
|1 = | Id сущности. | Да |
|2 = | Имя компонента для проверки. | Да |
getComp
Возвращает список всех компонентов сущности в виде JSON-массива.
Использование:
- {{#invoke:GetField
|getComp |entityId}}
Пример:
- {{#invoke:GetField
|getComp |MopItem}} -> ["Item","Sprite","MeleeWeapon","SolutionContainerManager"...]
| Параметр | Описание | Обязателен? |
|---|---|---|
|1 = | Id сущности. | Да |
jsonList
Преобразует JSON в список, перечисление или простой текст. Подходит для быстрого вывода данных без отдельного шаблона.
Использование:
- {{#invoke:GetField
|jsonList |["a","b","c"]}} - {{#invoke:GetField
|jsonList |{"MopItem":"Швабра"}}} - {{#invoke:GetField
|jsonList |{"MopItem":"Швабра"} |type=enum}} - {{#invoke:GetField
|jsonList |["a","b","c"] |max=1}}
Основные параметры:
type— формат вывода:list,enumилиnone.prefix— префикс строки для режима списка. По умолчанию*.sep— разделитель между ключом и значением. По умолчанию:.replace— дополнительная обработка регулярным выражением уже собранной строки.key_replace,value_replace— обработка ключей и значений регулярным выражением по отдельности.max— максимальное количество элементов, которые нужно обработать. Если не задан, обрабатывается весь список.
Примеры:
- {{#invoke:GetField
|jsonList |["a","b","c"]}} - {{#invoke:GetField
|jsonList |{"MopItem":"Швабра"} |type=list}} - {{#invoke:GetField
|jsonList |{"MopItem":"Швабра"} |type=none |value_replace=<nowiki>[[\1]]</nowiki>}} - {{#invoke:GetField
|jsonList |["a","b","c"] |max=1}}
| Параметр | Описание | Обязателен? |
|---|---|---|
|1 = | JSON-строка. Можно также передать именованным параметром json. | Да |
|type = | Формат вывода: list, enum или none. | Нет; list |
|prefix = | Префикс строки для режима list. | Нет; * |
|sep = | Разделитель между ключом и значением. | Нет; : |
|key_replace = | Строка замены для ключей. | Нет; \1 |
|value_replace = | Строка замены для значений. | Нет; \1 |
|replace = | Строка замены для всего вывода. | Нет; \1 |
|max = | Максимальное количество элементов для обработки. | Нет; весь список |
json
Преобразует JSON-объект или JSON-массив объектов в набор вызовов шаблона и сразу обрабатывает их.
Использование:
- {{#invoke:GetField
|json |{"MopItem":{"name":"Швабра"}} |Предмет}}
Если значение по id является объектом, его поля разворачиваются в параметры шаблона. Если значение простое, оно передаётся как value=....
Пример вызова, который будет собран функцией:
{{Предмет|id=MopItem|name=Швабра}}
| Параметр | Описание | Обязателен? |
|---|---|---|
|1 = | JSON-строка. | Да |
|2 = | Имя шаблона. | Да |
См. также
Примечания
- Если запись, поле или JSON-страница не найдены, функции обычно возвращают пустую строку.
- Функция
getвозвращает таблицы в JSON-виде. - В
searchIdиsearchIdTplзначения сравниваются как строки. - Параметр
keyPathподдерживает доступ к вложенным полям и индексам. getTplиsearchIdTplудобны, когда нужно не получить сырые данные, а сразу отрендерить карточку или другой шаблон.- Функции с
searchStoreработают только с генераторными страницами и хранилищами, где структура данных уже подготовлена под поиск по id. jsonиjsonListожидают корректный JSON; если строка не разбирается, результат будет пустым.