mirror of
https://github.com/weechat/weechat.git
synced 2026-07-06 09:43:13 +02:00
script: expose theme_register to python, perl, ruby, lua, tcl, javascript, php, guile
Add weechat.theme_register (name, overrides) to all eight script
languages. Each binding is a mechanical translation of the same
signature:
- name: string
- overrides: language-native dict / hash / associative array of
full_option_name -> value strings
- returns: pointer-as-string of the registered t_theme (empty
string on failure)
Each binding converts the dict to a struct t_hashtable using the
existing per-language helper (weechat_python_dict_to_hashtable,
weechat_perl_hash_to_hashtable, weechat_ruby_hash_to_hashtable,
weechat_lua_tohashtable, weechat_tcl_dict_to_hashtable,
weechat_js_object_to_hashtable, weechat_php_array_to_hashtable,
weechat_guile_alist_to_hashtable), calls weechat_theme_register,
frees the temporary hashtable, and returns the result. The new
function is registered right after the config_* functions so the API
listing stays grouped by topic.
PHP also receives a new arginfo entry (string, array -> string) in
both weechat-php_arginfo.h and weechat-php_legacy_arginfo.h.
This is plumbing only - the underlying theme_register function is
already covered by tests/unit/core/test-core-theme.cpp
(TEST(CoreTheme, Register)). No script-side tests are added here.
This commit is contained in:
@@ -2478,6 +2478,33 @@ weechat_ruby_api_config_unset_plugin (VALUE class, VALUE option)
|
||||
API_RETURN_INT(rc);
|
||||
}
|
||||
|
||||
static VALUE
|
||||
weechat_ruby_api_theme_register (VALUE class, VALUE name, VALUE overrides)
|
||||
{
|
||||
char *c_name;
|
||||
struct t_hashtable *c_overrides;
|
||||
const char *result;
|
||||
|
||||
API_INIT_FUNC(1, "theme_register", API_RETURN_EMPTY);
|
||||
if (NIL_P (name) || NIL_P (overrides))
|
||||
API_WRONG_ARGS(API_RETURN_EMPTY);
|
||||
|
||||
Check_Type (name, T_STRING);
|
||||
Check_Type (overrides, T_HASH);
|
||||
|
||||
c_name = StringValuePtr (name);
|
||||
c_overrides = weechat_ruby_hash_to_hashtable (overrides,
|
||||
WEECHAT_SCRIPT_HASHTABLE_DEFAULT_SIZE,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
WEECHAT_HASHTABLE_STRING);
|
||||
|
||||
result = API_PTR2STR(weechat_theme_register (c_name, c_overrides));
|
||||
|
||||
weechat_hashtable_free (c_overrides);
|
||||
|
||||
API_RETURN_STRING(result);
|
||||
}
|
||||
|
||||
static VALUE
|
||||
weechat_ruby_api_key_bind (VALUE class, VALUE context, VALUE keys)
|
||||
{
|
||||
@@ -7078,6 +7105,7 @@ weechat_ruby_api_init (VALUE ruby_mWeechat)
|
||||
API_DEF_FUNC(config_set_plugin, 2);
|
||||
API_DEF_FUNC(config_set_desc_plugin, 2);
|
||||
API_DEF_FUNC(config_unset_plugin, 1);
|
||||
API_DEF_FUNC(theme_register, 2);
|
||||
API_DEF_FUNC(key_bind, 2);
|
||||
API_DEF_FUNC(key_unbind, 2);
|
||||
API_DEF_FUNC(prefix, 1);
|
||||
|
||||
Reference in New Issue
Block a user