trigger: add a function to set variables common to all triggers (issue #1567)

This commit is contained in:
Sébastien Helleu 2020-10-10 13:31:03 +02:00
parent fd72226a71
commit 2384dbe193

View File

@ -122,6 +122,21 @@ trigger_callback_get_irc_server_channel (const char *irc_server_name,
}
}
/*
* Sets variables common to all triggers in a hashtable:
* - tg_trigger_name
*/
void
trigger_callback_set_common_vars (struct t_trigger *trigger,
struct t_hashtable *hashtable)
{
if (!trigger || !hashtable)
return;
weechat_hashtable_set (hashtable, "tg_trigger_name", trigger->name);
}
/*
* Sets variables in "extra_vars" hashtable using tags from message.
*
@ -514,7 +529,7 @@ trigger_callback_signal_cb (const void *pointer, void *data,
}
/* add data in hashtable used for conditions/replace/command */
weechat_hashtable_set (extra_vars, "tg_trigger_name", trigger->name);
trigger_callback_set_common_vars (trigger, extra_vars);
weechat_hashtable_set (extra_vars, "tg_signal", signal);
ptr_signal_data = NULL;
if (strcmp (type_data, WEECHAT_HOOK_SIGNAL_STRING) == 0)
@ -590,7 +605,7 @@ trigger_callback_hsignal_cb (const void *pointer, void *data,
}
/* add data in hashtable used for conditions/replace/command */
weechat_hashtable_set (extra_vars, "tg_trigger_name", trigger->name);
trigger_callback_set_common_vars (trigger, extra_vars);
weechat_hashtable_set (extra_vars, "tg_signal", signal);
/* execute the trigger (conditions, regex, command) */
@ -654,7 +669,7 @@ trigger_callback_modifier_cb (const void *pointer, void *data,
}
/* add data in hashtable used for conditions/replace/command */
weechat_hashtable_set (extra_vars, "tg_trigger_name", trigger->name);
trigger_callback_set_common_vars (trigger, extra_vars);
weechat_hashtable_set (extra_vars, "tg_modifier", modifier);
weechat_hashtable_set (extra_vars, "tg_modifier_data", modifier_data);
weechat_hashtable_set (extra_vars, "tg_string", string);
@ -827,7 +842,7 @@ trigger_callback_line_cb (const void *pointer, void *data,
weechat_hashtable_remove (extra_vars, "tags");
/* add data in hashtables used for conditions/replace/command */
weechat_hashtable_set (extra_vars, "tg_trigger_name", trigger->name);
trigger_callback_set_common_vars (trigger, extra_vars);
ptr_value = weechat_hashtable_get (line, "buffer");
if (!ptr_value || (ptr_value[0] != '0') || (ptr_value[1] != 'x'))
goto end;
@ -964,7 +979,7 @@ trigger_callback_print_cb (const void *pointer, void *data,
TRIGGER_CALLBACK_CB_NEW_EXTRA_VARS;
/* add data in hashtables used for conditions/replace/command */
weechat_hashtable_set (extra_vars, "tg_trigger_name", trigger->name);
trigger_callback_set_common_vars (trigger, extra_vars);
weechat_hashtable_set (pointers, "buffer", buffer);
date_tmp = localtime (&date);
if (date_tmp)
@ -1036,7 +1051,7 @@ trigger_callback_command_cb (const void *pointer, void *data,
TRIGGER_CALLBACK_CB_NEW_EXTRA_VARS;
/* add data in hashtables used for conditions/replace/command */
weechat_hashtable_set (extra_vars, "tg_trigger_name", trigger->name);
trigger_callback_set_common_vars (trigger, extra_vars);
weechat_hashtable_set (pointers, "buffer", buffer);
for (i = 0; i < argc; i++)
{
@ -1069,7 +1084,7 @@ trigger_callback_command_run_cb (const void *pointer, void *data,
TRIGGER_CALLBACK_CB_NEW_EXTRA_VARS;
/* add data in hashtables used for conditions/replace/command */
weechat_hashtable_set (extra_vars, "tg_trigger_name", trigger->name);
trigger_callback_set_common_vars (trigger, extra_vars);
weechat_hashtable_set (pointers, "buffer", buffer);
weechat_hashtable_set (extra_vars, "tg_command", command);
@ -1112,7 +1127,7 @@ trigger_callback_timer_cb (const void *pointer, void *data,
TRIGGER_CALLBACK_CB_NEW_EXTRA_VARS;
/* add data in hashtable used for conditions/replace/command */
weechat_hashtable_set (extra_vars, "tg_trigger_name", trigger->name);
trigger_callback_set_common_vars (trigger, extra_vars);
snprintf (str_temp, sizeof (str_temp), "%d", remaining_calls);
weechat_hashtable_set (extra_vars, "tg_remaining_calls", str_temp);
date = time (NULL);
@ -1146,7 +1161,7 @@ trigger_callback_config_cb (const void *pointer, void *data,
TRIGGER_CALLBACK_CB_NEW_EXTRA_VARS;
/* add data in hashtable used for conditions/replace/command */
weechat_hashtable_set (extra_vars, "tg_trigger_name", trigger->name);
trigger_callback_set_common_vars (trigger, extra_vars);
weechat_hashtable_set (extra_vars, "tg_option", option);
weechat_hashtable_set (extra_vars, "tg_value", value);
@ -1175,7 +1190,7 @@ trigger_callback_focus_cb (const void *pointer, void *data,
TRIGGER_CALLBACK_CB_NEW_POINTERS;
/* add data in hashtables used for conditions/replace/command */
weechat_hashtable_set (info, "tg_trigger_name", trigger->name);
trigger_callback_set_common_vars (trigger, info);
ptr_value = weechat_hashtable_get (info, "_window");
if (ptr_value && ptr_value[0] && (strncmp (ptr_value, "0x", 2) == 0))
{
@ -1214,7 +1229,7 @@ trigger_callback_info_cb (const void *pointer, void *data,
TRIGGER_CALLBACK_CB_NEW_EXTRA_VARS;
/* add data in hashtable used for conditions/replace/command */
weechat_hashtable_set (extra_vars, "tg_trigger_name", trigger->name);
trigger_callback_set_common_vars (trigger, extra_vars);
weechat_hashtable_set (extra_vars, "tg_info_name", info_name);
weechat_hashtable_set (extra_vars, "tg_arguments", arguments);
weechat_hashtable_set (extra_vars, "tg_info", "");
@ -1253,7 +1268,7 @@ trigger_callback_info_hashtable_cb (const void *pointer, void *data,
extra_vars = weechat_hashtable_dup (hashtable);
/* add data in hashtable used for conditions/replace/command */
weechat_hashtable_set (extra_vars, "tg_trigger_name", trigger->name);
trigger_callback_set_common_vars (trigger, extra_vars);
weechat_hashtable_set (extra_vars, "tg_info_name", info_name);
/* execute the trigger (conditions, regex, command) */