quotesite: move supported command list into hash
[quotesite.git] / quotesite.pl
index 94859d7..6e4728b 100644 (file)
@@ -58,6 +58,54 @@ sub pop_output {
     @outputstack = (undef) unless (@outputstack);
 }
 
+my $quotesite_commands = {
+    'save' => sub {
+        cmd_save();
+    },
+
+
+    'set' => sub {
+        cmd_set(@_);
+    },
+
+    'show' => sub {
+        cmd_show(@_);
+    },
+
+    'help' => sub {
+        cmd_help(@_);
+    }.
+
+    'enable' => sub {
+        cmd_enable(@_);
+    },
+
+    'disable' => sub {
+        cmd_disable(@_);
+    },
+
+    'reload' => sub {
+        init_quotesite(0);
+    },
+
+    'debug' => sub {
+        $debug = 1;
+        foreach (@grabbers) {
+            $_->setdebug(1);
+        }
+        write_irssi('Enabled debugging');
+    },
+
+    'nodebug' => sub {
+        $debug = 0;
+        foreach (@grabbers) {
+            $_->setdebug(0);
+        }
+        write_irssi('Disabled debugging');
+    },
+};
+
+
 sub write_irssi {
     my @text = @_;
     my $output = $outputstack[0];
@@ -340,41 +388,12 @@ sub init_quotesite {
 
 sub cmdhandler {
     my $event = shift;
-    my @params = split(/\s+/, $event->message());
+    my ($cmd, @params) = split(/\s+/, $event->message());
 
     push_output($event->ewpf);
 
-    if ($params[0] eq 'save') {
-        cmd_save();
-    } elsif ($params[0] eq 'set') {
-        shift(@params);
-        cmd_set(@params);
-    } elsif ($params[0] eq 'show') {
-        shift(@params);
-        cmd_show(@params);
-    } elsif ($params[0] eq 'help') {
-        shift(@params);
-        cmd_help(@params);
-    } elsif ($params[0] eq 'enable') {
-        shift(@params);
-        cmd_enable(@params);
-    } elsif ($params[0] eq 'disable') {
-        shift(@params);
-        cmd_disable(@params);
-    } elsif ($params[0] eq 'reload') {
-        init_quotesite(0);
-    } elsif ($params[0] eq 'debug') {
-        $debug = 1;
-        foreach (@grabbers) {
-            $_->setdebug(1);
-        }
-        write_irssi('Enabled debugging');
-    } elsif ($params[0] eq 'nodebug') {
-        $debug = 0;
-        foreach (@grabbers) {
-            $_->setdebug(0);
-        }
-        write_irssi('Disabled debugging');
+    if (exists($quotesite_commands->{$cmd})) {
+        $quotesite_commands->{$cmd}->(@params);
     }
 
     pop_output();