Author: dylan
Date: 2004-05-28 00:30:01 -0400 (Fri, 28 May 2004)
New Revision: 177

Added:
   trunk/haver-client/lib/Haver/Client/Command.pm
Removed:
   trunk/haver-client/lib/Haver/Client/Commands.pm
Log:
Renamed to Command.


Copied: trunk/haver-client/lib/Haver/Client/Command.pm (from rev 176, 
trunk/haver-client/lib/Haver/Client/Commands.pm)
===================================================================
--- trunk/haver-client/lib/Haver/Client/Commands.pm     2004-05-28 04:29:29 UTC 
(rev 176)
+++ trunk/haver-client/lib/Haver/Client/Command.pm      2004-05-28 04:30:01 UTC 
(rev 177)
@@ -0,0 +1,245 @@
+# Haver::Client::Command -- deal with /commands.
+# 
+# Copyright (C) 2004 Bryan Donlan, Dylan William Hardison.
+# 
+# This module 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 module 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 module; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+package Haver::Client::Command;
+use strict;
+use warnings;
+
+use Text::ParseWords (); # we use parse_line.
+
+use Haver::Base;
+use base 'Haver::Base';
+
+our $VERSION = '0.01';
+
+sub initialize {
+       my ($me) = @_;
+       
+       $me->{chars}        ||= '/.';
+       $me->{alias_sep}    ||= ';';
+       $me->{expando_char} ||= '$';
+       $me->{say_cmd}      ||= 'say';
+       $me->{builtin_cmd}  ||= 'builtin';
+       $me->{alias}        ||= {};
+       $me->{vars}         ||= {};
+       $me->{command}      ||= {};
+}
+
+
+sub input {
+       my ($me, $s) = @_;
+       my ($cmd, $arg) = $me->parse($s);
+
+       if ($me->is_alias($cmd) and $cmd ne $me->{builtin_cmd}) {
+               my @lines = $me->eval_text($me->{alias}{$cmd}, $arg);
+               
+               foreach my $line (@lines) {
+                       $me->input($line);
+               }
+       } else {
+               my @args;       
+               if ($cmd eq $me->{builtin_cmd}) {
+                       $arg =~ s/^\s*(\w+)\s+//;
+                       $cmd = $1;
+                       @args = $me->parse_args($cmd, $arg);
+               } else {
+                       @args = $me->parse_args($cmd, $arg);
+               }
+               $me->invoke($cmd, @args);
+       }
+}
+
+sub invoke {
+       my ($me, $cmd, @args) = @_;
+       use Data::Dumper;
+       print Dumper({$cmd, [EMAIL PROTECTED]);
+}
+
+sub parse {
+       my ($me, $s) = @_;
+       my $c = quotemeta $me->{chars};
+       my ($cmd, $arg);
+       
+       if ($s =~ /^[$c] (\w+) (?:\s*) (.*) $/x) {
+               $cmd = $1;
+               $arg = $2;
+       } else {
+               $cmd = $me->{say_cmd};
+               $arg = $s;
+       }
+
+       return ($cmd, $arg);
+}
+
+sub parse_args {
+       my ($me, $cmd, $arg) = @_;
+
+       if (my $code = $me->can("args_$cmd")) {
+               return $code->($me, $arg);
+       } else {
+               return $me->default_args($cmd, $arg);
+       }
+       
+}
+
+# This is called when there is no args_$cmd function.
+sub default_args {
+       my ($me, $cmd, $arg) = @_;
+       return ($arg);
+}
+
+sub args_msg {
+       my ($me, $arg) = @_;
+       my ($targ) = $arg =~ s/^\s*(\S+)\s+//;
+
+       return ($targ, $arg);
+}
+
+sub args_raw {
+       my ($me, $arg) = @_;
+       my @args = grep(defined, Text::ParseWords::parse_line(qr/\s+/, 0, 
$arg));
+       return (@args);
+}
+
+sub args_alias {
+       my ($me, $arg) = @_;
+       $arg =~ s/^\s*(\w+)\s+//;
+       
+       return ($1, $arg);
+}
+
+sub args_builtin {
+       my ($me, $arg) = @_;
+       
+       return ($1, $arg);
+}
+
+### Methods for manipulating aliases.
+sub aliases {
+       my ($me) = @_;
+       my @a = keys %{ $me->{alias} };
+       
+       return wantarray ? @a : [EMAIL PROTECTED];
+}
+
+sub alias {
+       my ($me, $alias, $text) = @_;
+       $me->{alias}{$alias} = $text;
+}
+
+sub unalias {
+       my ($me, $alias) = @_;
+       delete $me->{alias}{$alias};
+}
+
+sub is_alias {
+       my ($me, $alias) = @_;
+
+       exists $me->{alias}{$alias};
+}
+
+sub eval_text {
+       my ($me, $text, $arg) = @_;
+       my $c    = quotemeta $me->{expando_char};
+       my $sep  = quotemeta $me->{alias_sep};
+       my @cmds = grep(defined, Text::ParseWords::parse_line(qr/\s*$sep\s*/, 
1, $text));
+       my @lines;
+       
+
+       foreach my $s (@cmds) {
+               if ($text =~ /$c([0-9]|\*)/) {
+                       my @args = Text::ParseWords::parse_line(qr/\s+/, 0, 
$arg);
+                       $s =~ s/$c([\w\*$c]+)/$me->get_var($1, [EMAIL 
PROTECTED], $arg)/ge;
+               } else {
+                       $s .= ' ' . $arg;
+               }
+               push(@lines, $s);
+       }
+
+       return @lines;
+}
+
+
+sub get_var {
+       my ($me, $var, $args, $argstr) = @_;
+
+       if ($var =~ /^\d+$/) {
+               return $args->[$var];
+       } elsif ($var eq '*') {
+               return $argstr;
+       } elsif ($me->is_defined($var)) {
+               my $val = $me->{vars}{$var};
+               if (not ref $val) {
+                       return $val;
+               } elsif (ref($val) eq 'CODE') {
+                       return $val->($me, $var);
+               } else {
+                       return $val;
+               }
+       } elsif (exists $ENV{$var}) {
+               return $ENV{$var};
+       } elsif ($var eq $me->{expando_char}) {
+               return $var;
+       }
+}
+
+### Method stubs for defining commands
+sub commands {
+       my ($me) = @_;
+       my @cmds = keys %{ $me->{command} };
+       return wantarray ? @cmds : [EMAIL PROTECTED];
+}
+
+sub register {
+       my ($me, $cmd) = @_;
+       $me->{command}{$cmd} = 1;
+}
+
+sub unregister {
+       my ($me, $cmd) = @_;
+       delete $me->{command}{$cmd};
+}
+
+sub is_registered {
+       my ($me, $cmd) = @_;
+       exists $me->{command}{$cmd};
+}
+
+
+### Methods for defining $vars used in aliases.
+sub define {
+       my ($me, $var, $val) = @_;
+
+       $me->{vars}{$var} = $val;
+}
+
+sub undefine {
+       my ($me, $var) = @_;
+       
+       delete $me->{vars}{$var};
+}
+
+sub is_defined {
+       my ($me, $var) = @_;
+       
+       exists $me->{vars}{$var};
+}
+
+
+
+1;
+

Deleted: trunk/haver-client/lib/Haver/Client/Commands.pm
===================================================================
--- trunk/haver-client/lib/Haver/Client/Commands.pm     2004-05-28 04:29:29 UTC 
(rev 176)
+++ trunk/haver-client/lib/Haver/Client/Commands.pm     2004-05-28 04:30:01 UTC 
(rev 177)
@@ -1,245 +0,0 @@
-# Haver::Client::Commands -- deal with /commands.
-# 
-# Copyright (C) 2004 Bryan Donlan, Dylan William Hardison.
-# 
-# This module 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 module 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 module; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-package Haver::Client::Commands;
-use strict;
-use warnings;
-
-use Text::ParseWords (); # we use parse_line.
-
-use Haver::Base;
-use base 'Haver::Base';
-
-our $VERSION = '0.01';
-
-sub initialize {
-       my ($me) = @_;
-       
-       $me->{chars}        ||= '/.';
-       $me->{alias_sep}    ||= ';';
-       $me->{expando_char} ||= '$';
-       $me->{say_cmd}      ||= 'say';
-       $me->{builtin_cmd}  ||= 'builtin';
-       $me->{alias}        ||= {};
-       $me->{vars}         ||= {};
-       $me->{command}      ||= {};
-}
-
-
-sub input {
-       my ($me, $s) = @_;
-       my ($cmd, $arg) = $me->parse($s);
-
-       if ($me->is_alias($cmd) and $cmd ne $me->{builtin_cmd}) {
-               my @lines = $me->eval_text($me->{alias}{$cmd}, $arg);
-               
-               foreach my $line (@lines) {
-                       $me->input($line);
-               }
-       } else {
-               my @args;       
-               if ($cmd eq $me->{builtin_cmd}) {
-                       $arg =~ s/^\s*(\w+)\s+//;
-                       $cmd = $1;
-                       @args = $me->parse_args($cmd, $arg);
-               } else {
-                       @args = $me->parse_args($cmd, $arg);
-               }
-               $me->invoke($cmd, @args);
-       }
-}
-
-sub invoke {
-       my ($me, $cmd, @args) = @_;
-       use Data::Dumper;
-       print Dumper({$cmd, [EMAIL PROTECTED]);
-}
-
-sub parse {
-       my ($me, $s) = @_;
-       my $c = quotemeta $me->{chars};
-       my ($cmd, $arg);
-       
-       if ($s =~ /^[$c] (\w+) (?:\s*) (.*) $/x) {
-               $cmd = $1;
-               $arg = $2;
-       } else {
-               $cmd = $me->{say_cmd};
-               $arg = $s;
-       }
-
-       return ($cmd, $arg);
-}
-
-sub parse_args {
-       my ($me, $cmd, $arg) = @_;
-
-       if (my $code = $me->can("args_$cmd")) {
-               return $code->($me, $arg);
-       } else {
-               return $me->default_args($cmd, $arg);
-       }
-       
-}
-
-# This is called when there is no args_$cmd function.
-sub default_args {
-       my ($me, $cmd, $arg) = @_;
-       return ($arg);
-}
-
-sub args_msg {
-       my ($me, $arg) = @_;
-       my ($targ) = $arg =~ s/^\s*(\S+)\s+//;
-
-       return ($targ, $arg);
-}
-
-sub args_raw {
-       my ($me, $arg) = @_;
-       my @args = grep(defined, Text::ParseWords::parse_line(qr/\s+/, 0, 
$arg));
-       return (@args);
-}
-
-sub args_alias {
-       my ($me, $arg) = @_;
-       $arg =~ s/^\s*(\w+)\s+//;
-       
-       return ($1, $arg);
-}
-
-sub args_builtin {
-       my ($me, $arg) = @_;
-       
-       return ($1, $arg);
-}
-
-### Methods for manipulating aliases.
-sub aliases {
-       my ($me) = @_;
-       my @a = keys %{ $me->{alias} };
-       
-       return wantarray ? @a : [EMAIL PROTECTED];
-}
-
-sub alias {
-       my ($me, $alias, $text) = @_;
-       $me->{alias}{$alias} = $text;
-}
-
-sub unalias {
-       my ($me, $alias) = @_;
-       delete $me->{alias}{$alias};
-}
-
-sub is_alias {
-       my ($me, $alias) = @_;
-
-       exists $me->{alias}{$alias};
-}
-
-sub eval_text {
-       my ($me, $text, $arg) = @_;
-       my $c    = quotemeta $me->{expando_char};
-       my $sep  = quotemeta $me->{alias_sep};
-       my @cmds = grep(defined, Text::ParseWords::parse_line(qr/\s*$sep\s*/, 
1, $text));
-       my @lines;
-       
-
-       foreach my $s (@cmds) {
-               if ($text =~ /$c([0-9]|\*)/) {
-                       my @args = Text::ParseWords::parse_line(qr/\s+/, 0, 
$arg);
-                       $s =~ s/$c([\w\*$c]+)/$me->get_var($1, [EMAIL 
PROTECTED], $arg)/ge;
-               } else {
-                       $s .= ' ' . $arg;
-               }
-               push(@lines, $s);
-       }
-
-       return @lines;
-}
-
-
-sub get_var {
-       my ($me, $var, $args, $argstr) = @_;
-
-       if ($var =~ /^\d+$/) {
-               return $args->[$var];
-       } elsif ($var eq '*') {
-               return $argstr;
-       } elsif ($me->is_defined($var)) {
-               my $val = $me->{vars}{$var};
-               if (not ref $val) {
-                       return $val;
-               } elsif (ref($val) eq 'CODE') {
-                       return $val->($me, $var);
-               } else {
-                       return $val;
-               }
-       } elsif (exists $ENV{$var}) {
-               return $ENV{$var};
-       } elsif ($var eq $me->{expando_char}) {
-               return $var;
-       }
-}
-
-### Method stubs for defining commands
-sub commands {
-       my ($me) = @_;
-       my @cmds = keys %{ $me->{command} };
-       return wantarray ? @cmds : [EMAIL PROTECTED];
-}
-
-sub register {
-       my ($me, $cmd) = @_;
-       $me->{command}{$cmd} = 1;
-}
-
-sub unregister {
-       my ($me, $cmd) = @_;
-       delete $me->{command}{$cmd};
-}
-
-sub is_registered {
-       my ($me, $cmd) = @_;
-       exists $me->{command}{$cmd};
-}
-
-
-### Methods for defining $vars used in aliases.
-sub define {
-       my ($me, $var, $val) = @_;
-
-       $me->{vars}{$var} = $val;
-}
-
-sub undefine {
-       my ($me, $var) = @_;
-       
-       delete $me->{vars}{$var};
-}
-
-sub is_defined {
-       my ($me, $var) = @_;
-       
-       exists $me->{vars}{$var};
-}
-
-
-
-1;
-


Reply via email to