From 620a8f02cb5d0d711b90f75937a8d268750c2715 Mon Sep 17 00:00:00 2001 From: Dmitry Kim Date: Fri, 6 Apr 2007 14:05:53 +0000 Subject: + (plugins/) 'ri' plugin (the same functionality as ruby 'ri' command) --- data/rbot/plugins/ri.rb | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 data/rbot/plugins/ri.rb (limited to 'data/rbot/plugins') diff --git a/data/rbot/plugins/ri.rb b/data/rbot/plugins/ri.rb new file mode 100644 index 00000000..f55cdf4d --- /dev/null +++ b/data/rbot/plugins/ri.rb @@ -0,0 +1,39 @@ +class RiPlugin < Plugin + + BotConfig.register BotConfigIntegerValue.new('ri.max_length', + :default => 512, + :desc => "Maximum length of ri entry (in bytes) which is ok to be sent to channels") + + + RI_COMMAND = %w{ri -f simple -T} + + def help(plugin, topic="") + "ri => returns ruby documentation for " + end + def ri(m, params) + args = RI_COMMAND.dup + if a = params[:something] + if a == '-c' + args.push(a) + else + args.push('--') + args.push(a) + end + end + begin + ret = Utils.safe_exec(*args) + rescue + ret = "failed to execute ri" + end + ret = ret.gsub(/\t/, " ").split(/\n/).join(" ").gsub(/\s\s+/, ' ') + + if ret.length > @bot.config['ri.max_length'] && !m.private? + ret = 'entry is too long to send to the channel, use /msg to ask me about it' + end + m.reply(ret) + return + end +end +plugin = RiPlugin.new +plugin.map 'ri :something', + :requirements => {:something => /^((-c)|(\w\S+))$/} -- cgit v1.2.3