# # Copyright (c) 2006-2007 by FlashCode # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # # WeeChat ruby script sample # This script uses whole WeeChat API functions, it may be used for # testing purposes. def weechat_init Weechat.register("wrbsample", "0.3", "wrbend", "WeeChat ruby script sample") # some command handlers Weechat.add_command_handler("wrbnothing", "wrbnothing") Weechat.add_command_handler("wrbtest", "wrbtest", "test command", "channel", "a channel name", "%C") Weechat.add_command_handler("wrbinfo", "wrbinfo", "display info with get_info()", "version | nick | channel | server | away | weechat_dir | weechat_libdir | weechat_sharedir", "info to read", "version|nick|channel|server|away|weechat_dir|weechat_libdir|weechat_sharedir") Weechat.add_command_handler("wrbcommand", "wrbcommand", "execute a WeeChat comand", "weechat_cmd | text") Weechat.add_command_handler("wrbdcc", "wrbdcc", "display DCC", "", "", "") Weechat.add_command_handler("wrbserver", "wrbserver", "display server list", "", "", "") Weechat.add_command_handler("wrbchannel", "wrbchannel", "display channel list", "", "", "") Weechat.add_command_handler("wrbnick", "wrbnick", "display nick list", "", "", "") Weechat.add_command_handler("wrbwindow", "wrbwindow", "display window list", "", "", "") Weechat.add_command_handler("wrbbuffer", "wrbbuffer", "display buffer list", "", "", "") Weechat.add_command_handler("wrbbufferdata", "wrbbufferdata", "display current buffer content", "", "", "") Weechat.add_command_handler("wrbgetconfig", "wrbgetconfig", "get a config option value", "option", "", "") Weechat.add_command_handler("wrbsetconfig", "wrbsetconfig", "set a config option value", "option value", "", "") Weechat.add_command_handler("wrbgetplugin", "wrbgetplugin", "get a plugin config option value", "option", "", "") Weechat.add_command_handler("wrbsetplugin", "wrbsetplugin", "set a plugin config option value", "option value", "", "") # timer handler Weechat.add_timer_handler(60*5, "wrbtimer"); # keyboard handler Weechat.add_keyboard_handler("wrbkeyboard"); # message handler Weechat.add_message_handler("privmsg", "wrbprivmsg") # modifiers Weechat.add_modifier("irc_in", "privmsg", "wrbmodin") Weechat.add_modifier("irc_user", "", "wrbmoduser") Weechat.add_modifier("irc_out", "privmsg", "wrbmodout") # command handlers for removing some handlers Weechat.add_command_handler("wrbdelmsg", "wrbdelmsg", "delete privmsg message handler", "", "", "") Weechat.add_command_handler("wrbdelcmd", "wrbdelcmd", "delete wrbnothing command handler", "", "", "") Weechat.add_command_handler("wrbdeltimer", "wrbdeltimer", "delete wrbtimer timer handler", "", "", "") Weechat.add_command_handler("wrbdelkeyboard", "wrbdelkeyboard", "delete wrbkeyboard keyboard handler", "", "", "") Weechat.add_command_handler("wrbdelmod", "wrbdelmod", "delete all modifiers", "", "", "") # command handler for clearing infobar Weechat.add_command_handler("wrbdelinfo", "wrbdelinfo", "remove infobar message(s)", "", "", ""); return Weechat::PLUGIN_RC_OK end def wrbnothing(server, args) Weechat.print("wrbnothing: nothing done there!") return Weechat::PLUGIN_RC_OK end def wrbtest(server, args) Weechat.print("wrbtest: server = '#{server}', args = '#{args}'") Weechat.print_infobar(10, "wrbtest: test infobar") Weechat.log("wrbtest: test log on photon/#abc", "#abc", "photon") Weechat.log("wrbtest: test log on photon", "", "photon") return Weechat::PLUGIN_RC_OK end def wrbinfo(server, args) if args != "" value = Weechat.get_info(args) Weechat.print("get_info(#{args}) = #{value}") else Weechat.print("wrbinfo: missing info argument") end return Weechat::PLUGIN_RC_OK end def wrbcommand(server, args) if args != "" Weechat.command(args) else Weechat.print("wrbcommand: missing command argument") end return Weechat::PLUGIN_RC_OK end def wrbdcc(server, args) dccs = Weechat.get_dcc_info() if dccs != nil if dccs == [] Weechat.print("wrbdcc: no DCC") else dccs.each do |m| m.each do |key, value| Weechat.print("#{key} = '#{value}'") end end end else Weechat.print("wrbdcc: error reading DCC") end return Weechat::PLUGIN_RC_OK end def wrbserver(server, args) servers = Weechat.get_server_info() if servers != nil if servers == [] Weechat.print("wrbserver: no server") else servers.each do |n, s| s.each do |key, value| Weechat.print("#{n} -> #{key} = '#{value}'") end end end else Weechat.print("wrbserver: error reading servers") end return Weechat::PLUGIN_RC_OK end def wrbchannel(server, args) channels = Weechat.get_channel_info(Weechat.get_info("server")) if channels != nil if channels == {} Weechat.print("wrbchannel: no channel") else channels.each do |n, c| c.each do |key, value| Weechat.print("#{n} -> #{key} = '#{value}'") end end end else Weechat.print("wrbchannel: error reading channels") end return Weechat::PLUGIN_RC_OK end def wrbnick(server, args) channels = Weechat.get_channel_info(Weechat.get_info("server")) if channels != nil if channels == {} Weechat.print("wrbnick: no channel") else channels.each do |n, c| nicks = Weechat.get_nick_info(Weechat.get_info("server"), n) if nicks != nil if nicks == {} Weechat.print("wrbnick: no nick") else nicks.each do |nk, nattr| nattr.each do |key, value| Weechat.print("#{n} -> #{nk} -> #{key} = '#{value}'") end end end else Weechat.print("wrbnick: error reading nicks") end end end else Weechat.print("wrbnick: error reading channels") end return Weechat::PLUGIN_RC_OK end def wrbwindow(server, args) wf = Weechat.get_window_info() if wf != nil and wf != [] Weechat.print("**** windows infos ****") wf.each do |w| w.each do |key, value| Weechat.print(" > #{key} => #{value}") end Weechat.print("----------------------") end else Weechat.print("wrbwindow: no window info") end return Weechat::PLUGIN_RC_OK end def wrbbuffer(server, args) bf = Weechat.get_buffer_info() if bf != nil and bf != {} bf.each do |n, c| Weechat.print("**** info for buffer no #{n} ****") c.each do |key, value| Weechat.print(" > #{key} => #{value}") end Weechat.print("----------------------") end else Weechat.print("wrbbuffer: no buffer info") end return Weechat::PLUGIN_RC_OK end def wrbbufferdata(server, args) server = Weechat.get_info("server") channel = Weechat.get_info("channel") bc = Weechat.get_buffer_data(server, channel) if bc != nil and bc != [] Weechat.print("**** buffer data for '#{channel}'@'#{server}' ****") bc.each do |l| l.each do |key, value| Weechat.print(" > #{key} => #{value}") end Weechat.print("----------------------") end else Weechat.print("wrbbufferdata: no buffer data") end return Weechat::PLUGIN_RC_OK end def wrbgetconfig(server, option) if option != "" value = Weechat.get_config(option) Weechat.print("#{option} = #{value}") else Weechat.print("wrbgetconfig: missing option") end return Weechat::PLUGIN_RC_OK end def wrbsetconfig(server, args) if args != "" option = args[0,args.index(" ")] value = args[args.index(" ")+1,args.length()] Weechat.set_config(option, value) else Weechat.print("wrbsetconfig: missing option/value") end return Weechat::PLUGIN_RC_OK end def wrbgetplugin(server, option) if option != "" value = Weechat.get_plugin_config(option) Weechat.print("#{option} = #{value}") else Weechat.print("wrbgetconfig: missing option") end return Weechat::PLUGIN_RC_OK end def wrbsetplugin(server, args) if args != "" option = args[0,args.index(" ")] value = args[args.index(" ")+1,args.length()] Weechat.set_plugin_config(option, value) else Weechat.print("wrbsetplugin: missing option/value") end return Weechat::PLUGIN_RC_OK end def wrbtimer() Weechat.print("wrbtimer: this is the timer handler") return Weechat::PLUGIN_RC_OK end def wrbkeyboard(server, input_before, input_after) # nothing here return Weechat::PLUGIN_RC_OK end def wrbprivmsg(server, args) Weechat.print("wrbprivmsg: privmsg received: server = '#{server}', args = '#{args}'") return Weechat::PLUGIN_RC_OK end def wrbmodin(server, args) return args + " [modifier IN]" end def wrbmoduser(server, args) # return message as-is return args end def wrbmodout(server, args) return args + " [modifier OUT]" end def wrbdelmsg(server, args) Weechat.remove_handler("privmsg", "wrbprivmsg") Weechat.print("wrbdelmsg: privmsg handler removed") return Weechat::PLUGIN_RC_OK end def wrbdelcmd(server, args) Weechat.remove_handler("wrbnothing", "wrbnothing") Weechat.print("wrbdelcmd: wrbnothing command handler removed") return Weechat::PLUGIN_RC_OK end def wrbdeltimer(server, args) Weechat.remove_timer_handler("wrbtimer") Weechat.print("wrbdeltimer: wrbtimer timer handler removed") return Weechat::PLUGIN_RC_OK end def wrbdelkeyboard(server, args) Weechat.remove_keyboard_handler("wrbkeyboard") Weechat.print("wrbdelkeyboard: wrbkeyboard keyboard handler removed") return Weechat::PLUGIN_RC_OK end def wrbdelmod(server, args) Weechat.remove_modifier("irc_in", "privmsg", "wrbmodin") Weechat.remove_modifier("irc_user", "", "wrbmoduser") Weechat.remove_modifier("irc_out", "privmsg", "wrbmodout") Weechat.print("wrmdelmod: modifiers removed") return Weechat::PLUGIN_RC_OK end def wrbdelinfo(server, args) if args != "" Weechat.remove_infobar(args) else Weechat.remove_infobar() end Weechat.print("wrbdelinfo: infobar message(s) removed") return Weechat::PLUGIN_RC_OK end def wrbend(server, args) Weechat.print("wrbsample: ending...") return Weechat::PLUGIN_RC_OK end