X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Ffiglet.rb;h=eb218edff066e0dddfc8643e9e1cd5b33cabf9ed;hb=27ee4fabaebdb1f78b1eb6cfb31c43f1dc5a7f49;hp=f82288eb65356cb06dd9ec7cb57d073d713781e6;hpb=e8cc263c8aff27f3fb2849655cabdda412e89170;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/data/rbot/plugins/figlet.rb b/data/rbot/plugins/figlet.rb index f82288eb..eb218edf 100644 --- a/data/rbot/plugins/figlet.rb +++ b/data/rbot/plugins/figlet.rb @@ -1,24 +1,55 @@ -#DEFAULT_FONT="smslant" -DEFAULT_FONT="rectangles" -MAX_WIDTH=68 - class FigletPlugin < Plugin + DEFAULT_FONTS = ['rectangles', 'smslant'] + MAX_WIDTH=68 + + Config.register Config::StringValue.new('figlet.path', + :default => '/usr/bin/figlet', + :desc => _('Path to the figlet program')) + + def initialize + super + + # check that figlet actually has the font installed + @figlet_font = nil + for fontname in DEFAULT_FONTS + # check if figlet can render this font properly + if system("#{figlet_path} -f #{fontname} test test test") + @figlet_font = fontname + break + end + end + + # set the commandline params + @figlet_params = ['-k', '-w', MAX_WIDTH.to_s] + + # add the font from DEFAULT_FONTS to the cmdline (if figlet has that font) + @figlet_params += ['-f', @figlet_font] if @figlet_font + + end + + def figlet_path + @bot.config['figlet.path'] + end + def help(plugin, topic="") - "figlet [] => print using figlet" + "figlet => print using figlet" end - def privmsg(m) - case m.params - when nil - m.reply "incorrect usage: " + help(m.plugin) - return - when (/^-/) - m.reply "incorrect usage: " + help(m.plugin) - return - else - m.reply Utils.safe_exec("/usr/bin/figlet", "-k", "-w", "#{MAX_WIDTH}", "-f", DEFAULT_FONT, m.params) - return - end + + def figlet(m, params) + message = params[:message].to_s + if message =~ /^-/ + m.reply "the message can't start with a - sign" + return + end + + # collect the parameters to pass to safe_exec + exec_params = [figlet_path] + @figlet_params + [message] + + # run figlet + m.reply Utils.safe_exec(*exec_params) end + end + plugin = FigletPlugin.new -plugin.register("figlet") +plugin.map "figlet *message"