summaryrefslogtreecommitdiff
path: root/doc/sr
diff options
context:
space:
mode:
Diffstat (limited to 'doc/sr')
-rw-r--r--doc/sr/weechat_plugin_api.sr.adoc32
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:
# ...
----