Шаблон:GetField/doc: различия между версиями
Pok (обсуждение | вклад) Новая страница: «{{docpage}} {{OnLua|GetField}} Модуль предназначен для получения данных из кэшированных JSON-страниц и их использования в шаблонах. С его помощью можно получить поле по пути, найти id по значению или сразу собрать вызов шаблона по найденным данным. Поля берутся из json с...» |
Pok (обсуждение | вклад) Нет описания правки |
||
| (не показано 11 промежуточных версий этого же участника) | |||
| Строка 11: | Строка 11: | ||
* <code>Участник:IanComradeBot/prototype/Проект/название</code> (пример: [[Участник:IanComradeBot/Goob/prototype/tag.json]]) | * <code>Участник:IanComradeBot/prototype/Проект/название</code> (пример: [[Участник:IanComradeBot/Goob/prototype/tag.json]]) | ||
__TOC__ | |||
== Основные функции == | == Основные функции == | ||
| Строка 17: | Строка 18: | ||
Использование: | Использование: | ||
* {{tji|GetField| | * {{tji|GetField|функция{{=}}get|id|pagePath|keyPath}} | ||
Простые значения возвращаются как текст, а таблицы в JSON-виде. | |||
Например, json сущности <code>MopItem</code> из [[Участник:IanComradeBot/component/meleeWeapon.json]] выглядит так: | |||
* {{tji|GetField|get|MopItem| | <pre> | ||
* {{tji|GetField|get|MopItem| | "MopItem": { | ||
* {{tji|GetField|get| | "damage": { | ||
"types": { | |||
"Blunt": 10 | |||
} | |||
}, | |||
... | |||
}, | |||
</pre> | |||
то мы можем получить значение как как: | |||
* {{tji|GetField|функция{{=}}get|MopItem|component/meleeWeapon.json|damage}} -> "types": {"Blunt": 10}} | |||
* {{tji|GetField|функция{{=}}get|MopItem|component/meleeWeapon.json|damage.types}} -> {"Blunt": 10} | |||
* {{tji|GetField|функция{{=}}get|MopItem|component/meleeWeapon.json|damage.types.Blunt}} -> 10 | |||
{{Параметры| | {{Параметры| | ||
{{Параметры/строка|1|Id записи.|Да}} | {{Параметры/строка|1|Id записи.|Да}} | ||
{{Параметры/строка|2|Путь до JSON-страницы, например <code> | {{Параметры/строка|2|Путь до JSON-страницы, например <code>component/meleeWeapon.json</code>.|Да}} | ||
{{Параметры/строка|3|Путь до поля внутри записи. Поддерживает вложенность через точку и индексы вида <code>field.1</code> | {{Параметры/строка|3|Путь до поля внутри записи. Поддерживает вложенность через точку и индексы вида <code>field.1</code>|Да}} | ||
}} | }} | ||
=== getTpl === | === getTpl === | ||
Строит вызов шаблона для одного id | Строит вызов шаблона для одного id передавая в него развёрнутые поля записи. | ||
Использование: | Использование: | ||
* {{tji|GetField|getTpl|id|pagePath|template}} | * {{tji|GetField|функция{{=}}getTpl|id|pagePath|template}} | ||
Шаблон вызывается в виде <code><nowiki>{{Имя шаблона|id=...|...поля записи...}}</nowiki></code>. Вложенные таблицы передаются как плоские параметры, а также в JSON-виде там, где это нужно для сохранения структуры. | Шаблон вызывается в виде <code><nowiki>{{Имя шаблона|id=...|...поля записи...}}</nowiki></code>. Вложенные таблицы передаются как плоские параметры, а также в JSON-виде там, где это нужно для сохранения структуры. | ||
Пример: | Пример: | ||
* {{tji|GetField|getTpl|MopItem|entity/MopItem.json|Предмет}} | * {{tji|GetField|функция{{=}}getTpl|MopItem|entity/MopItem.json|Предмет}} | ||
{{Параметры| | {{Параметры| | ||
| Строка 50: | Строка 61: | ||
}} | }} | ||
=== | === searchId / searchIdTpl === | ||
Обе функции ищут id по значению в указанном поле. Разница в результате: | Обе функции ищут id по значению в указанном поле. Разница в результате: | ||
* <code> | * <code>searchId</code> возвращает найденные id в виде JSON-массива. | ||
* <code> | * <code>searchIdTpl</code> по найденным id сразу вызывает шаблон. | ||
Использование: | Использование: | ||
* {{tji|GetField| | * {{tji|GetField|функция{{=}}searchId|searchValue|pagePath|keyPath}} | ||
* {{tji|GetField| | * {{tji|GetField|функция{{=}}searchIdTpl|searchValue|pagePath|keyPath|template}} | ||
* {{tji|GetField| | * {{tji|GetField|функция{{=}}searchIdTpl|pagePath|keyPath|template|searchType{{=}}path}} | ||
Режимы поиска: | Режимы поиска: | ||
* <code>searchType=value</code> — ищет id, у которых значение поля равно указанному значению. Это режим по умолчанию. | * <code>searchType=value</code> — ищет id, у которых значение поля равно указанному значению. Это режим по умолчанию. | ||
* <code>searchType=key</code> — ищет id, у которых в поле-таблице существует ключ с указанным именем. | * <code>searchType=key</code> — ищет id, у которых в поле-таблице существует ключ с указанным именем. | ||
* <code>searchType=path</code> — только для <code> | * <code>searchType=path</code> — только для <code>searchIdTpl</code>; выводит все id, у которых поле по указанному пути существует и не пустое. В этом режиме первым параметром передаётся <code>pagePath</code>, а не значение для поиска. | ||
<code> | <code>searchIdTpl</code> вызывает шаблон в виде <code><nowiki>{{Имя шаблона|id=...|...поля записи...}}</nowiki></code>. Если найдено несколько id, вызовы собираются подряд через пробел. | ||
Примеры: | Примеры: | ||
* {{tji|GetField| | * {{tji|GetField|функция{{=}}searchId|Elements|[[Участник:IanComradeBot/prototype/reaction.json|prototype/reaction.json]]|group}} -> {{GetField|функция=searchId|Stir|prototype/reaction.json|requiredMixerCategories}} | ||
{{Параметры| | {{Параметры| | ||
{{Параметры/строка|1| | {{Параметры/строка|1|Значение для поиска.|Да}} | ||
{{Параметры/строка|2| | {{Параметры/строка|2|Путь до JSON-страницы.|Да}} | ||
{{Параметры/строка|3| | {{Параметры/строка|3|Путь до поля внутри записи. Поддерживает вложенность через точку и индексы вида <code>field.1</code>|Да}} | ||
{{Параметры/строка|4| | {{Параметры/строка|4|Имя шаблона, который будет вызван для каждого найденного id.|Только для <code>searchIdTpl</code>}} | ||
{{Параметры/строка|searchType|Режим поиска: <code>value</code>, <code>key</code> или <code>path</code>.|Нет; value}} | {{Параметры/строка|searchType|Режим поиска: <code>value</code>, <code>key</code> или <code>path</code>.|Нет; value}} | ||
}} | }} | ||
| Строка 85: | Строка 93: | ||
Использование: | Использование: | ||
* {{tji|GetField|hasComp|entityId|componentName}} | * {{tji|GetField|функция{{=}}hasComp|entityId|componentName}} | ||
Возвращает строку <code>true</code> или <code>false</code>. | Возвращает строку <code>true</code> или <code>false</code>. | ||
Пример: | Пример: | ||
* {{tji|GetField|hasComp|MopItem|Item}} | * {{tji|GetField|функция{{=}}hasComp|MopItem|Item}} | ||
{{Параметры| | {{Параметры| | ||
| Строка 97: | Строка 105: | ||
}} | }} | ||
=== | === searchStore / searchStoreTpl === | ||
Эти функции | Эти функции находят прототипы или компоненты содержащие указанный id, используя [[Участник:IanComradeBot/prototype_store.json]] или [[Участник:IanComradeBot/component_store.json]]. | ||
Использование: | Использование: | ||
* {{tji|GetField| | * {{tji|GetField|функция{{=}}searchStore|searchId|prototype|Название}} | ||
* {{tji|GetField| | * {{tji|GetField|функция{{=}}searchStore|searchId|component|Название}} | ||
* {{tji|GetField| | * {{tji|GetField|функция{{=}}searchStoreTpl|searchId|prototype|Название|Шаблон}} | ||
<code> | <code>searchStore</code> возвращает JSON-массив id, найденных в компонентах/прототипах. <code>searchStoreTpl</code> по тем же id сразу вызывает шаблон, используя страницу вида <code>prototype/Название.json</code> или <code>component/Название.json</code>. | ||
Примеры: | Примеры: | ||
* {{tji|GetField| | * {{tji|GetField|функция{{=}}searchStore|MopItem|component|itemBorgModule}} -> {{GetField|функция=searchStore|MopItem|component|itemBorgModule}} | ||
* {{tji|GetField| | * {{tji|GetField|функция{{=}}searchStore|MopItem|prototype|latheRecipe}} -> {{GetField|функция=searchStore|MopItem|prototype|latheRecipe}} | ||
{{Параметры| | {{Параметры| | ||
{{Параметры/строка|1|Id, который ищется в хранилище | {{Параметры/строка|1|Id, который ищется в хранилище.|Да}} | ||
{{Параметры/строка|2|Тип | {{Параметры/строка|2|Тип: <code>prototype</code> или <code>component</code>.|Да}} | ||
{{Параметры/строка|3|Имя | {{Параметры/строка|3|Имя хранилищя без <code>.json</code>.|Да}} | ||
{{Параметры/строка|4|Имя шаблона для | {{Параметры/строка|4|Имя шаблона, который будет вызван для каждого найденного id.|Только для <code>searchStoreTpl</code>}} | ||
}} | }} | ||
=== | === getAll / getAllTpl === | ||
Эти функции получают все id | Эти функции получают все id прототипов или компонентов. | ||
Использование: | Использование: | ||
* {{tji|GetField| | * {{tji|GetField|функция{{=}}getAll|pagePath}} | ||
* {{tji|GetField| | * {{tji|GetField|функция{{=}}getAllTpl|pagePath|template}} | ||
<code> | <code>getAll</code> по умолчанию возвращает JSON-массив id. | ||
<code>getAllTpl</code> вызывает шаблон для каждого id в виде <code><nowiki>{{Имя шаблона|id=...|...поля записи...}}</nowiki></code>. | |||
Примеры: | Примеры: | ||
* {{tji|GetField| | * {{tji|GetField|функция{{=}}getAll|component/staticPrice.json}} -> выводит все id сущностей с этим компонентом в формате JSON | ||
* {{tji|GetField| | * {{tji|GetField|функция{{=}}getAllTpl|component/staticPrice.json|component/staticPrice/wrapper}} -> выводит все id сущностей с этим компонентом обёрнутым в шаблон {{шс|component/staticPrice/wrapper}} | ||
{{Параметры| | {{Параметры| | ||
{{Параметры/строка|1|Путь до | {{Параметры/строка|1|Путь до JSON-страницы.|Да}} | ||
{{Параметры/строка|2|Имя шаблона для <code> | {{Параметры/строка|2|Имя шаблона для <code>getAllTpl</code>.|Только для <code>getAllTpl</code>}} | ||
{{Параметры/строка|replace|Строка замены для <code> | {{Параметры/строка|replace|Строка замены для <code>getAll</code>. Если задана, результат выводится построчно вместо JSON-массива.|Нет}} | ||
}} | }} | ||
| Строка 145: | Строка 150: | ||
Использование: | Использование: | ||
* {{tji|GetField|jsonList|<nowiki>["a","b","c"]</nowiki>}} | * {{tji|GetField|функция{{=}}jsonList|<nowiki>["a","b","c"]</nowiki>}} | ||
* {{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}} | ||
Основные параметры: | Основные параметры: | ||
| Строка 153: | Строка 158: | ||
* <code>prefix</code> — префикс строки для режима списка. По умолчанию <code>* </code>. | * <code>prefix</code> — префикс строки для режима списка. По умолчанию <code>* </code>. | ||
* <code>sep</code> — разделитель между ключом и значением. По умолчанию <code>: </code>. | * <code>sep</code> — разделитель между ключом и значением. По умолчанию <code>: </code>. | ||
* <code>replace</code> — дополнительная обработка уже собранной строки. | * <code>replace</code> — дополнительная обработка регулярным выражением уже собранной строки. | ||
* <code>key_replace</code>, <code>value_replace</code> — обработка ключей и значений по отдельности. | * <code>key_replace</code>, <code>value_replace</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|key_replace{{=}}{{tag|nowiki|style=regular|content=<nowiki>[[\1]]</nowiki>}}}} | * {{tji|GetField|функция{{=}}jsonList|<nowiki>{"MopItem":"Швабра"}</nowiki>|type{{=}}none|key_replace{{=}}{{tag|nowiki|style=regular|content=<nowiki>[[\1]]</nowiki>}}}} | ||
{{Параметры| | {{Параметры| | ||
| Строка 174: | Строка 179: | ||
Использование: | Использование: | ||
* {{tji|GetField|json|<nowiki>{"MopItem":{"name":"Швабра"}}</nowiki>|Предмет}} | * {{tji|GetField|функция{{=}}json|<nowiki>{"MopItem":{"name":"Швабра"}}</nowiki>|Предмет}} | ||
Если значение по id является объектом, его поля разворачиваются в параметры шаблона. Если значение простое, оно передаётся как <code>value=...</code>. | Если значение по id является объектом, его поля разворачиваются в параметры шаблона. Если значение простое, оно передаётся как <code>value=...</code>. | ||
| Строка 194: | Строка 199: | ||
* Если запись, поле или JSON-страница не найдены, функции обычно возвращают пустую строку. | * Если запись, поле или JSON-страница не найдены, функции обычно возвращают пустую строку. | ||
* Функция <code>get</code> возвращает таблицы в JSON-виде. | * Функция <code>get</code> возвращает таблицы в JSON-виде. | ||
* В <code> | * В <code>searchId</code> и <code>searchIdTpl</code> значения сравниваются как строки. | ||
* Параметр <code>keyPath</code> поддерживает доступ к вложенным полям и индексам. | * Параметр <code>keyPath</code> поддерживает доступ к вложенным полям и индексам. | ||
* <code>getTpl</code> и <code> | * <code>getTpl</code> и <code>searchIdTpl</code> удобны, когда нужно не получить сырые данные, а сразу отрендерить карточку или другой шаблон. | ||
* Функции с <code> | * Функции с <code>searchStore</code> работают только с генераторными страницами и хранилищами, где структура данных уже подготовлена под поиск по id. | ||
* <code>json</code> и <code>jsonList</code> ожидают корректный JSON; если строка не разбирается, результат будет пустым. | * <code>json</code> и <code>jsonList</code> ожидают корректный JSON; если строка не разбирается, результат будет пустым. | ||