diff options
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/scripts/lua/weechat-lua.c | 43 | ||||
-rw-r--r-- | src/plugins/scripts/perl/weechat-perl.c | 46 | ||||
-rw-r--r-- | src/plugins/scripts/python/weechat-python.c | 38 | ||||
-rw-r--r-- | src/plugins/scripts/ruby/weechat-ruby.c | 39 |
4 files changed, 165 insertions, 1 deletions
diff --git a/src/plugins/scripts/lua/weechat-lua.c b/src/plugins/scripts/lua/weechat-lua.c index 550b32179..281350349 100644 --- a/src/plugins/scripts/lua/weechat-lua.c +++ b/src/plugins/scripts/lua/weechat-lua.c @@ -1504,6 +1504,48 @@ weechat_lua_get_nick_info (lua_State *L) return 1; } +/* + * weechat_lua_get_irc_color: + * get the numeric value which identify an irc color by its name + */ + +static int +weechat_lua_get_irc_color (lua_State *L) +{ + const char *color; + int n; + + /* make gcc happy */ + (void) L; + + if (!lua_current_script) + { + lua_plugin->print_server (lua_plugin, + "Lua error: unable to get irc color, " + "script not initialized"); + lua_pushnumber (lua_current_interpreter, -1); + return 1; + } + + color = NULL; + + n = lua_gettop (lua_current_interpreter); + + if (n != 1) + { + lua_plugin->print_server (lua_plugin, + "Lua error: wrong parameters for " + "\"get_irc_color\" function"); + lua_pushnumber (lua_current_interpreter, -1); + return 1; + } + + color = lua_tostring (lua_current_interpreter, -1); + + lua_pushnumber (lua_current_interpreter, + lua_plugin->get_irc_color (lua_plugin, (char *) color)); + return 1; +} /* * Lua constant as functions @@ -1587,6 +1629,7 @@ const struct luaL_reg weechat_lua_funcs[] = { { "get_server_info", weechat_lua_get_server_info}, { "get_channel_info", weechat_lua_get_channel_info}, { "get_nick_info", weechat_lua_get_nick_info}, + { "get_irc_color", weechat_lua_get_irc_color}, /* define constants as function which returns values */ { "PLUGIN_RC_OK", weechat_lua_constant_plugin_rc_ok}, { "PLUGIN_RC_KO", weechat_lua_constant_plugin_rc_ko}, diff --git a/src/plugins/scripts/perl/weechat-perl.c b/src/plugins/scripts/perl/weechat-perl.c index 0b717b9ec..69e783510 100644 --- a/src/plugins/scripts/perl/weechat-perl.c +++ b/src/plugins/scripts/perl/weechat-perl.c @@ -1333,6 +1333,49 @@ static XS (XS_weechat_input_color) } /* + * weechat::get_irc_color: + * get the numeric value which identify an irc color by its name + */ + +static XS (XS_weechat_get_irc_color) +{ + char *color; + unsigned int integer; + dXSARGS; + + /* make gcc happy */ + (void) cv; + + if (!perl_current_script) + { + perl_plugin->print_server (perl_plugin, + "Perl error: unable to get irc color, " + "script not initialized"); + XST_mIV (0, -1); + XSRETURN (1); + } + + if (items != 1) + { + perl_plugin->print_server (perl_plugin, + "Perl error: wrong parameters for " + "\"get_irc_info\" function"); + XST_mIV (0, -1); + XSRETURN (1); + } + + color = SvPV (ST (0), integer); + if (color) + { + XST_mIV (0, perl_plugin->get_irc_color (perl_plugin, color)); + XSRETURN (1); + } + + XST_mIV (0, -1); + XSRETURN (-1); +} + +/* * weechat_perl_xs_init: initialize subroutines */ @@ -1367,7 +1410,8 @@ weechat_perl_xs_init (pTHX) newXS ("weechat::get_channel_info", XS_weechat_get_channel_info, "weechat"); newXS ("weechat::get_nick_info", XS_weechat_get_nick_info, "weechat"); newXS ("weechat::input_color", XS_weechat_input_color, "weechat"); - + newXS ("weechat::get_irc_color", XS_weechat_get_irc_color, "weechat"); + /* interface constants */ stash = gv_stashpv ("weechat", TRUE); newCONSTSUB (stash, "weechat::PLUGIN_RC_KO", newSViv (PLUGIN_RC_KO)); diff --git a/src/plugins/scripts/python/weechat-python.c b/src/plugins/scripts/python/weechat-python.c index 36c699778..0ccb43611 100644 --- a/src/plugins/scripts/python/weechat-python.c +++ b/src/plugins/scripts/python/weechat-python.c @@ -1251,6 +1251,43 @@ weechat_python_get_nick_info (PyObject *self, PyObject *args) } /* + * weechat_python_get_irc_color: + * get the numeric value which identify an irc color by its name + */ + +static PyObject * +weechat_python_get_irc_color (PyObject *self, PyObject *args) +{ + char *color; + + /* make gcc happy */ + (void) self; + + if (!python_current_script) + { + python_plugin->print_server (python_plugin, + "Python error: unable to get irc color, " + "script not initialized"); + return Py_BuildValue ("i", -1); + } + + color = NULL; + + if (!PyArg_ParseTuple (args, "s", &color)) + { + python_plugin->print_server (python_plugin, + "Python error: wrong parameters for " + "\"get_irc_color\" function"); + return Py_BuildValue ("i", -1); + } + + if (color) + return Py_BuildValue ("i", python_plugin->get_irc_color (python_plugin, color)); + + return Py_BuildValue ("i", -1); +} + +/* * Python subroutines */ @@ -1278,6 +1315,7 @@ PyMethodDef weechat_python_funcs[] = { { "get_server_info", weechat_python_get_server_info, METH_VARARGS, "" }, { "get_channel_info", weechat_python_get_channel_info, METH_VARARGS, "" }, { "get_nick_info", weechat_python_get_nick_info, METH_VARARGS, "" }, + { "get_irc_color", weechat_python_get_irc_color, METH_VARARGS, "" }, { NULL, NULL, 0, NULL } }; diff --git a/src/plugins/scripts/ruby/weechat-ruby.c b/src/plugins/scripts/ruby/weechat-ruby.c index f748b5548..249e0d675 100644 --- a/src/plugins/scripts/ruby/weechat-ruby.c +++ b/src/plugins/scripts/ruby/weechat-ruby.c @@ -1491,6 +1491,44 @@ weechat_ruby_get_nick_info (VALUE class, VALUE server, VALUE channel) } /* + * weechat_ruby_get_irc_color: + * get the numeric value which identify an irc color by its name + */ + +static VALUE +weechat_ruby_get_irc_color (VALUE class, VALUE color) +{ + char *c_color; + + /* make gcc happy */ + (void) class; + + if (!ruby_current_script) + { + ruby_plugin->print_server (ruby_plugin, + "Ruby error: unable to get irc color, " + "script not initialized"); + return INT2FIX (-1); + } + + c_color = NULL; + + if (NIL_P (color)) + { + ruby_plugin->print_server (ruby_plugin, + "Ruby error: wrong parameters for " + "\"get_irc_color\" function"); + return INT2FIX (-1); + } + + Check_Type (color, T_STRING); + + c_color = STR2CSTR (color); + + return INT2FIX (ruby_plugin->get_irc_color (ruby_plugin, c_color)); +} + +/* * weechat_ruby_output : redirection for stdout and stderr */ @@ -1952,6 +1990,7 @@ weechat_plugin_init (t_weechat_plugin *plugin) rb_define_module_function (mWeechat, "get_server_info", weechat_ruby_get_server_info, 0); rb_define_module_function (mWeechat, "get_channel_info", weechat_ruby_get_channel_info, 1); rb_define_module_function (mWeechat, "get_nick_info", weechat_ruby_get_nick_info, 2); + rb_define_module_function (mWeechat, "get_irc_color", weechat_ruby_get_irc_color, 1); /* redirect stdin and stdout */ mWeechatOutputs = rb_define_module("WeechatOutputs"); |