Author: dylan
Date: 2004-05-30 22:01:10 -0400 (Sun, 30 May 2004)
New Revision: 208

Modified:
   trunk/haver-client/lib/Haver/Client/Command.pm
   trunk/haver-gtk/bin/haver-gtk.pl
Log:
input() got renamed to process().



Modified: trunk/haver-client/lib/Haver/Client/Command.pm
===================================================================
--- trunk/haver-client/lib/Haver/Client/Command.pm      2004-05-31 01:56:06 UTC 
(rev 207)
+++ trunk/haver-client/lib/Haver/Client/Command.pm      2004-05-31 02:01:10 UTC 
(rev 208)
@@ -41,7 +41,7 @@
 }
 
 
-sub input {
+sub process {
        my ($me, $s) = @_;
        my ($cmd, $arg) = $me->parse($s);
 
@@ -53,7 +53,7 @@
                my @lines = $me->eval_text($me->{alias}{$cmd}, $arg);
                
                foreach my $line (@lines) {
-                       $me->input($line);
+                       $me->process($line);
                }
        } else {
                my @args;       
@@ -194,7 +194,7 @@
        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;
+                       $s =~ s/$c([\w\*:$c-]+)/$me->expand($1, [EMAIL 
PROTECTED], $arg)/ge;
                } else {
                        $s .= ' ' . $arg;
                }
@@ -205,29 +205,44 @@
 }
 
 
-sub get_var {
+sub expand {
        my ($me, $var, $args, $argstr) = @_;
 
-       if ($var =~ /^\d+$/) {
+       if ($var =~ /^-?\d+$/) {
                return $args->[$var];
+       } elsif ($var =~ /^(\d+)-(\d+)$/) {
+               return join(' ', @$args[$1 .. $2]);
+       } elsif ($var =~ /^(\d+)-$/) {
+               return join(' ', @$args[$1 .. $#$args]);
        } elsif ($var eq '*') {
-               return $argstr;
+               return $argstr || join(' ', @$args);
        } 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;
-               }
+               return $me->_value($var, $me->{vars}{$var});
        } elsif (exists $ENV{$var}) {
                return $ENV{$var};
        } elsif ($var eq $me->{expando_char}) {
                return $var;
+       } else {
+               return undef;
        }
 }
 
+sub _value {
+       my ($me, $var, $val) = @_;
+
+       if (ref $val) {
+               if (ref($val) eq 'CODE') {
+                       $me->_value($var, $val->($me, $var));
+               } elsif (ref ($val) eq 'ARRAY') {
+                       return join(' ', @$val);
+               } else {
+                       return $val;
+               }
+       } else {
+               return $val;
+       }
+}
+
 ### Method stubs for defining commands
 sub commands {
        my ($me) = @_;

Modified: trunk/haver-gtk/bin/haver-gtk.pl
===================================================================
--- trunk/haver-gtk/bin/haver-gtk.pl    2004-05-31 01:56:06 UTC (rev 207)
+++ trunk/haver-gtk/bin/haver-gtk.pl    2004-05-31 02:01:10 UTC (rev 208)
@@ -247,7 +247,7 @@
        my $text = $gui{entry}->get_text;
        $gui{entry}->set_text('');
        eval {
-               $cmd->input($text);
+               $cmd->process($text);
        };
        if($@) {
                # XXX: proper error handling


Reply via email to