diff options
Diffstat (limited to 'doc/sr/weechat_plugin_api.sr.adoc')
-rw-r--r-- | doc/sr/weechat_plugin_api.sr.adoc | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/doc/sr/weechat_plugin_api.sr.adoc b/doc/sr/weechat_plugin_api.sr.adoc index 85b5ceba2..e430584ce 100644 --- a/doc/sr/weechat_plugin_api.sr.adoc +++ b/doc/sr/weechat_plugin_api.sr.adoc @@ -16575,7 +16575,7 @@ if buffer: ==== hdata_search -_WeeChat ≥ 0.4.1._ +_WeeChat ≥ 0.4.1, ажурирано у верзији 3.4._ Тражи елемент у листи: израз _search_ се тражи за сваки елемент у листи, све док се елемент не пронађе (или наиђе на крај листе). @@ -16583,7 +16583,9 @@ _WeeChat ≥ 0.4.1._ [source, C] ---- -void *weechat_hdata_search (struct t_hdata *hdata, void *pointer, const char *search, int move); +void *weechat_hdata_search (struct t_hdata *hdata, void *pointer, const char *search, + struct t_hashtable *pointers, struct t_hashtable *extra_vars, + struct t_hashtable *options, int move); ---- Аргументи: @@ -16591,8 +16593,17 @@ void *weechat_hdata_search (struct t_hdata *hdata, void *pointer, const char *se * _hdata_: показивач на hdata * _pointer_: показивач на објекат програма WeeChat/додатка * _search_: израз који се израчунава, подразумевани показивач у изразу је име hdata (и овај показивач се мења за сваки елемент у листи); за помоћ у вези израза, погледајте link:weechat_user.sr.html#command_weechat_eval[WeeChat корисничко упутство / Команда /eval] +* _pointers_: хеш табела за позив функције <<_string_eval_expression,string_eval_expression>> +* _extra_vars_: хеш табела за позив функције <<_string_eval_expression,string_eval_expression>> +* _options_: хеш табела за позив функције <<_string_eval_expression,string_eval_expression>> * _move_: број скок(а/ова) који треба да се изврши након неуспешне претраге (негативни или позитивни цео број, различит од 0) +// TRANSLATION MISSING +[IMPORTANT] +You must ensure the _search_ expression is safe and does not include any +user data. Such unsafe data must be given in the hashtable _extra_vars_ and +referenced by `${xxx}` in the _search_ expression (see the example below). + Повратна вредност: * показивач на пронађени елемент, NULL у случају да се не пронађе @@ -16603,13 +16614,21 @@ C пример: ---- struct t_hdata *hdata = weechat_hdata_get ("irc_server"); void *servers = weechat_hdata_get_list (hdata, "irc_servers"); +struct t_hashtable *extra_vars = weechat_hashtable_new (8, + WEECHAT_HASHTABLE_STRING, + WEECHAT_HASHTABLE_STRING, + NULL, + NULL); /* тражи irc сервер под именом „libera” */ -void *server = weechat_hdata_search (hdata, servers, "${irc_server.name} == libera", 1); +weechat_hashtable_set (extra_vars, "name", "libera"); +void *server = weechat_hdata_search (hdata, servers, "${irc_server.name} == ${name}", + NULL, extra_vars, NULL, 1); if (server) { /* ... */ } +weechat_hashtable_free (extra_vars); ---- Скрипта (Python): @@ -16617,14 +16636,17 @@ if (server) [source, python] ---- # прототип -def hdata_search(hdata: str, pointer: str, search: str, count: int) -> str: ... +def hdata_search(hdata: str, pointer: str, search: str, + pointers: Dict[str, str], extra_vars: Dict[str, str], options: Dict[str, str], + count: int) -> str: ... # пример hdata = weechat.hdata_get("irc_server") servers = weechat.hdata_get_list(hdata, "irc_servers") # тражи irc сервер под именом „libera” -server = weechat.hdata_search(hdata, servers, "${irc_server.name} == libera", 1) +server = weechat.hdata_search(hdata, servers, "${irc_server.name} == ${name}", + {}, {"name": "libera"}, {}, 1) if server: # ... ---- |