--- loncom/xml/lonxml.pm 2004/08/29 08:14:41 1.338
+++ loncom/xml/lonxml.pm 2004/10/07 16:27:48 1.342
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# XML Parser Module
#
-# $Id: lonxml.pm,v 1.338 2004/08/29 08:14:41 albertel Exp $
+# $Id: lonxml.pm,v 1.342 2004/10/07 16:27:48 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -51,7 +51,7 @@ use Math::Cephes();
use Math::Random();
use Opcode();
use POSIX qw(strftime);
-
+use Time::HiRes qw( gettimeofday tv_interval );
sub register {
my ($space,@taglist) = @_;
@@ -815,6 +815,8 @@ sub initdepth {
$Apache::lonxml::olddepth=-1;
}
+my @timers;
+my $lasttime;
sub increasedepth {
my ($token) = @_;
$Apache::lonxml::depth++;
@@ -822,8 +824,15 @@ sub increasedepth {
if ($Apache::lonxml::depthcounter[$Apache::lonxml::depth]==1) {
$Apache::lonxml::olddepth=$Apache::lonxml::depth;
}
+ my $time;
+ if ($Apache::lonxml::debug eq "1") {
+ push(@timers,[&gettimeofday()]);
+ $time=&tv_interval($lasttime);
+ $lasttime=[&gettimeofday()];
+ }
+ my $spacing=' 'x($Apache::lonxml::depth-1);
my $curdepth=join('_',@Apache::lonxml::depthcounter);
- &Apache::lonxml::debug("s $Apache::lonxml::depth : $Apache::lonxml::olddepth : $curdepth : $token->[1]\n");
+ &Apache::lonxml::debug("s$spacing$Apache::lonxml::depth : $Apache::lonxml::olddepth : $curdepth : $token->[1] : $time : \n");
#print "
s $Apache::lonxml::depth : $Apache::lonxml::olddepth : $curdepth : $token->[1]\n";
}
@@ -838,8 +847,15 @@ sub decreasedepth {
&Apache::lonxml::warning(&mt("Missing tags, unable to properly run file."));
$Apache::lonxml::depth='-1';
}
+ my ($timer,$time);
+ if ($Apache::lonxml::debug eq "1") {
+ $timer=pop(@timers);
+ $time=&tv_interval($lasttime);
+ $lasttime=[&gettimeofday()];
+ }
+ my $spacing=' 'x$Apache::lonxml::depth;
my $curdepth=join('_',@Apache::lonxml::depthcounter);
- &Apache::lonxml::debug("e $Apache::lonxml::depth : $Apache::lonxml::olddepth : $token->[1] : $curdepth\n");
+ &Apache::lonxml::debug("e$spacing$Apache::lonxml::depth : $Apache::lonxml::olddepth : $curdepth : $token->[1] : $time : ".&tv_interval($timer)."\n");
#print "
e $Apache::lonxml::depth : $Apache::lonxml::olddepth : $token->[1] : $curdepth\n";
}
@@ -1012,6 +1028,7 @@ sub parstring {
unless ($_=~/\W/) {
my $val=$token->[2]->{$_};
$val =~ s/([\%\@\\\"\'])/\\$1/g;
+ $val =~ s/(\$[^{a-zA-Z_])/\\$1/g;
#if ($val =~ m/^[\%\@]/) { $val="\\".$val; }
$temp .= "my \$$_=\"$val\";";
}
@@ -1461,7 +1478,7 @@ sub get_param_var {
} elsif ( $args !~ /my \$\Q$param\E=\"/ ) { return undef; }
my $value=&Apache::run::run("{$args;".'return $'.$param.'}',$safeeval); #'
&Apache::lonxml::debug("first run is $value");
- if ($value =~ /^[\$\@\%]\w+$/) {
+ if ($value =~ /^[\$\@\%][a-zA-Z_]\w*$/) {
&Apache::lonxml::debug("doing second");
my @result=&Apache::run::run("return $value",$safeeval,1);
if (!defined($result[0])) {