Шаблон:GetField/doc: различия между версиями

Новая страница: «{{docpage}} {{OnLua|GetField}} Модуль предназначен для получения данных из кэшированных JSON-страниц и их использования в шаблонах. С его помощью можно получить поле по пути, найти id по значению или сразу собрать вызов шаблона по найденным данным. Поля берутся из json с...»
 
Нет описания правки
Строка 17: Строка 17:


Использование:
Использование:
* {{tji|GetField|get|id|pagePath}}
* {{tji|GetField|функция{{=}}get|id|pagePath}}
* {{tji|GetField|get|id|pagePath|keyPath}}
* {{tji|GetField|функция{{=}}get|id|pagePath|keyPath}}


Если <code>keyPath</code> не указан, функция вернёт всю запись. Простые значения возвращаются как текст, а таблицы в JSON-виде.
Простые значения возвращаются как текст, а таблицы в JSON-виде.


Примеры:
Например, json сущности <code>MopItem</code> из [[Участник:IanComradeBot/component/meleeWeapon.json]] выглядит так:
* {{tji|GetField|get|MopItem|entity/MopItem.json}}
<pre>
* {{tji|GetField|get|MopItem|entity/MopItem.json|name}}
"MopItem": {
* {{tji|GetField|get|SomeId|prototype/someGenerator.json|components.1}}
    "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>entity/MopItem.json</code>.|Да}}
{{Параметры/строка|2|Путь до JSON-страницы, например <code>component/meleeWeapon.json</code>.|Да}}
{{Параметры/строка|3|Путь до поля внутри записи. Поддерживает вложенность через точку и индексы вида <code>field.1</code> или <code>field[1]</code>.|Нет; вся запись}}
{{Параметры/строка|3|Путь до поля внутри записи. Поддерживает вложенность через точку и индексы вида <code>field.1</code>|Да}}
}}
}}


Строка 37: Строка 48:


Использование:
Использование:
* {{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|Предмет}}


{{Параметры|
{{Параметры|
Строка 56: Строка 67:


Использование:
Использование:
* {{tji|GetField|getId|searchValue|pagePath|keyPath|searchType{{=}}value}}
* {{tji|GetField|функция{{=}}getId|searchValue|pagePath|keyPath}}
* {{tji|GetField|getTplId|searchValue|pagePath|keyPath|template|searchType{{=}}value}}
* {{tji|GetField|функция{{=}}getTplId|searchValue|pagePath|keyPath|template}}
* {{tji|GetField|getTplId|pagePath|keyPath|template|searchType{{=}}path}}
* {{tji|GetField|функция{{=}}getTplId|pagePath|keyPath|template|searchType{{=}}path}}


Режимы поиска:
Режимы поиска:
Строка 68: Строка 79:


Примеры:
Примеры:
* {{tji|GetField|getId|MopItem|prototype/itemGenerator.json|parent}}
* {{tji|GetField|функция{{=}}getId|Elements|[[Участник:IanComradeBot/prototype/reaction.json|prototype/reaction.json]]|group}} -> {{GetField|функция=getId|Stir|prototype/reaction.json|requiredMixerCategories}}
* {{tji|GetField|getId|Anchorable|entity/someEntity.json|components|searchType{{=}}key}}
* {{tji|GetField|getTplId|MopItem|prototype/itemGenerator.json|parent|Предмет}}
* {{tji|GetField|getTplId|prototype/itemGenerator.json|sprite|Предмет|searchType{{=}}path}}


{{Параметры|
{{Параметры|
{{Параметры/строка|1|Для <code>getId</code> и обычного режима <code>getTplId</code> — значение для поиска. Для <code><nowiki>searchType=path</nowiki></code> у <code>getTplId</code> — путь до JSON-страницы.|Да}}
{{Параметры/строка|1|Значение для поиска.|Да}}
{{Параметры/строка|2|Для <code>getId</code> и обычного режима <code>getTplId</code> — путь до JSON-страницы. Для <code><nowiki>searchType=path</nowiki></code> у <code>getTplId</code> — путь до поля.|Да}}
{{Параметры/строка|2|Путь до JSON-страницы.|Да}}
{{Параметры/строка|3|Для <code>getId</code> — путь до поля. Для <code>getTplId</code> — путь до поля, либо имя шаблона в режиме <code><nowiki>searchType=path</nowiki></code>.|Да}}
{{Параметры/строка|3|Путь до поля внутри записи. Поддерживает вложенность через точку и индексы вида <code>field.1</code>|Да}}
{{Параметры/строка|4|Для <code>getTplId</code> — имя шаблона, который будет вызван для каждого найденного id.|Только для <code>getTplId</code>}}
{{Параметры/строка|4|Имя шаблона, который будет вызван для каждого найденного id.|Только для <code>getTplId</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}}


{{Параметры|
{{Параметры|
Строка 98: Строка 106:


=== getGenerator / getTplGenerator ===
=== getGenerator / getTplGenerator ===
Эти функции работают с генераторами, описанными в общих хранилищах <code>prototype_store.json</code> и <code>component_store.json</code>.
Эти функции находят прототипы или компоненты содержащие указанный id, используя [[Участник:IanComradeBot/prototype_store.json]] и [[Участник:IanComradeBot/component_store.json]].


Использование:
Использование:
* {{tji|GetField|getGenerator|searchId|prototype|generatorId}}
* {{tji|GetField|функция{{=}}getGenerator|searchId|prototype|Название}}
* {{tji|GetField|getGenerator|searchId|component|generatorId}}
* {{tji|GetField|функция{{=}}getGenerator|searchId|component|Название}}
* {{tji|GetField|getTplGenerator|searchId|prototype|generatorId|template}}
* {{tji|GetField|функция{{=}}getTplGenerator|searchId|prototype|Название|Шаблон}}


<code>getGenerator</code> возвращает JSON-массив id, найденных в генераторе. <code>getTplGenerator</code> по тем же id сразу вызывает шаблон, используя страницу вида <code>prototype/generatorId.json</code> или <code>component/generatorId.json</code>.
<code>getGenerator</code> возвращает JSON-массив id, найденных в компонентах/прототипах. <code>getTplGenerator</code> по тем же id сразу вызывает шаблон, используя страницу вида <code>prototype/Название.json</code> или <code>component/Название.json</code>.


Примеры:
Примеры:
* {{tji|GetField|getGenerator|MopItem|prototype|itemGenerator}}
* {{tji|GetField|функция{{=}}getGenerator|MopItem|component|itemBorgModule}} -> {{GetField|функция=getGenerator|MopItem|component|itemBorgModule}}
* {{tji|GetField|getTplGenerator|MopItem|prototype|itemGenerator|Предмет}}
* {{tji|GetField|функция{{=}}getGenerator|MopItem|prototype|latheRecipe}} -> {{GetField|функция=getGenerator|MopItem|prototype|latheRecipe}}


{{Параметры|
{{Параметры|
{{Параметры/строка|1|Id, который ищется в хранилище генераторов.|Да}}
{{Параметры/строка|1|Id, который ищется в хранилище.|Да}}
{{Параметры/строка|2|Тип генератора: <code>prototype</code> или <code>component</code>.|Да}}
{{Параметры/строка|2|Тип: <code>prototype</code> или <code>component</code>.|Да}}
{{Параметры/строка|3|Имя генератора без <code>.json</code>.|Да}}
{{Параметры/строка|3|Имя хранилищя без <code>.json</code>.|Да}}
{{Параметры/строка|4|Имя шаблона для <code>getTplGenerator</code>.|Только для <code>getTplGenerator</code>}}
{{Параметры/строка|4|Имя шаблона, который будет вызван для каждого найденного id.|Только для <code>getTplGenerator</code>}}
}}
}}


=== GeneratorId / GeneratorTplId ===
=== GeneratorId / GeneratorTplId ===
Эти функции получают все id из генераторной JSON-страницы, где данные лежат в таблице <code>id</code>.
Эти функции получают все id прототипов или компонентов.


Использование:
Использование:
* {{tji|GetField|GeneratorId|pagePath}}
* {{tji|GetField|функция{{=}}GeneratorId|pagePath}}
* {{tji|GetField|GeneratorId|pagePath|replace{{=}}{{tag|nowiki|style=regular|content=<nowiki>* \1</nowiki>}}}}
* {{tji|GetField|функция{{=}}GeneratorTplId|pagePath|template}}
* {{tji|GetField|GeneratorTplId|pagePath|template}}
 
<code>GeneratorId</code> по умолчанию возвращает JSON-массив id. Если указан <code>replace</code>, каждый id сначала прогоняется через <code>replace</code>, а затем строки собираются через перенос строки.


<code>GeneratorTplId</code> вызывает шаблон для каждого id из генератора в виде <code><nowiki>{{Имя шаблона|id=...|...поля записи...}}</nowiki></code>.
<code>GeneratorId</code> по умолчанию возвращает JSON-массив id.
<code>GeneratorTplId</code> вызывает шаблон для каждого id в виде <code><nowiki>{{Имя шаблона|id=...|...поля записи...}}</nowiki></code>.


Примеры:
Примеры:
* {{tji|GetField|GeneratorId|prototype/itemGenerator.json}}
* {{tji|GetField|функция{{=}}GeneratorId|component/staticPrice.json}} -> выводит все id сущностей с этим компонентом в формате JSON
* {{tji|GetField|GeneratorId|prototype/itemGenerator.json|replace{{=}}{{tag|nowiki|style=regular|content=<nowiki>* \1</nowiki>}}}}
* {{tji|GetField|функция{{=}}GeneratorTplId|component/staticPrice.json|component/staticPrice/wrapper}} -> выводит все id сущностей с этим компонентом обёрнутым в шаблон {{шс|component/staticPrice/wrapper}}
* {{tji|GetField|GeneratorTplId|prototype/itemGenerator.json|Предмет}}


{{Параметры|
{{Параметры|
{{Параметры/строка|1|Путь до генераторной JSON-страницы.|Да}}
{{Параметры/строка|1|Путь до JSON-страницы.|Да}}
{{Параметры/строка|2|Имя шаблона для <code>GeneratorTplId</code>.|Только для <code>GeneratorTplId</code>}}
{{Параметры/строка|2|Имя шаблона для <code>GeneratorTplId</code>.|Только для <code>GeneratorTplId</code>}}
{{Параметры/строка|replace|Строка замены для <code>GeneratorId</code>. Если задана, результат выводится построчно вместо JSON-массива.|Нет}}
{{Параметры/строка|replace|Строка замены для <code>GeneratorId</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>.