Annotation of loncom/xml/run.pm, revision 1.7

1.2       albertel    1: package Apache::run;
1.1       sakharuk    2: 
1.2       albertel    3: sub evaluate {
1.4       albertel    4:   my ($expression,$safeeval,$decls) = @_;
1.6       albertel    5: # print "inside2 evaluate $decls with $expression<br>\n";
1.3       albertel    6: # gerd's old method interpolates unset vars
1.5       albertel    7: # $safeeval->reval('return qq('.$expression.');');
                      8:   unless (defined $expression) { return ''; }
1.7     ! albertel    9:   my $result = '';
        !            10:   $@='';
1.3       albertel   11:   $safeeval->reval('$_=\''.$expression.'\';');
1.7     ! albertel   12:   if ($@ eq '') {
        !            13:     $safeeval->reval('{'.$decls.'$_=~s/(\$\{?[A-Za-z]\w*\}?)/(defined(eval($1))?eval($1):$1)/ge;}');
        !            14:     if ($@ eq '') {
        !            15:       $result = $safeeval->reval('return $_;');
        !            16:     } else {
        !            17:       &Apache::lonxml::error("substituion on:$expression:with:$decls:caused");
        !            18:     }
        !            19:   } else {
        !            20:     &Apache::lonxml::error("defining:$expression:caused");
        !            21:   }
        !            22:   if ($@ ne '') {&Apache::lonxml::error($@);}
        !            23:   return $result
1.2       albertel   24: }
                     25: 
                     26: sub run {
                     27:   my ($code,$safeeval) = @_;
1.3       albertel   28: #  print "inside run\n";
1.7     ! albertel   29:   $@='';
        !            30:   my $result=$safeeval->reval($code);
        !            31:   if ($@ ne '') { 
        !            32:     &Apache::lonxml::error(":$code:caused"); 
        !            33:     &Apache::lonxml::error($@); 
        !            34:   }
        !            35:   return $result;
1.2       albertel   36: }
                     37: 
                     38: 1;
                     39: __END__;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>