--- loncom/xml/lonxml.pm 2003/02/07 21:55:57 1.228 +++ loncom/xml/lonxml.pm 2003/02/13 21:14:35 1.232 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # XML Parser Module # -# $Id: lonxml.pm,v 1.228 2003/02/07 21:55:57 albertel Exp $ +# $Id: lonxml.pm,v 1.232 2003/02/13 21:14:35 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -145,7 +145,7 @@ $Apache::lonxml::registered=0; $Apache::lonxml::request=''; # a problem number counter, and check on ether it is used -$Apache::lonxml::counter=1; +$Apache::lonxml::counter=4; $Apache::lonxml::counter_changed=0; #internal check on whether to look at style defs @@ -603,6 +603,9 @@ sub xmlparse { my ($request,$target,$content_file_string,$safeinit,%style_for_target) = @_; &setup_globals($request,$target); + &Apache::inputtags::initialize_inputtags(); + &Apache::outputtags::initialize_outputtags(); + &Apache::edit::initialize_edit(); # # do we have a course style file? # @@ -668,18 +671,24 @@ sub htmlclean { } sub latex_special_symbols { - my ($current_token,$stack,$parstack)=@_; - $current_token=~s/\\ /\\char92 /g; - $current_token=~s/\^/\\char94 /g; - $current_token=~s/\~/\\char126 /g; - $current_token=~s/(&[^a-z\#])/\\$1/g; - $current_token=~s/([^&])\#/$1\\#/g; - $current_token=~s/(\$|_|{|})/\\$1/g; - $current_token=~s/\\char92 /\\texttt{\\char92}/g; - $current_token=~s/>/\$>\$/g; #more - $current_token=~s//\$>\$/g; #more + $current_token=~s/[3]}) { unless ($_=~/\W/) { my $val=$token->[2]->{$_}; - $val =~ s/([\%\@\\\"])/\\$1/g; + $val =~ s/([\%\@\\\"\'])/\\$1/g; #if ($val =~ m/^[\%\@]/) { $val="\\".$val; } $temp .= "my \$$_=\"$val\";" } @@ -1500,14 +1509,22 @@ sub get_param_var { if ( ! $context ) { $context = -1; } my $args =''; if ( $#$parstack > (-2-$context) ) { $args=$$parstack[$context]; } + &Apache::lonxml::debug("Args are $args param is $param"); if ($case_insensitive) { if (! ($args=~s/(my \$)(\Q$param\E)(=\")/$1.lc($2).$3/ei)) { return undef; } } elsif ( $args !~ /my \$\Q$param\E=\"/ ) { return undef; } my $value=&Apache::run::run("{$args;".'return $'.$param.'}',$safeeval); #' - if ($value =~ /^[\$\@\%]/) { - return &Apache::run::run("return $value",$safeeval,1); + &Apache::lonxml::debug("first run is $value"); + if ($value =~ /^[\$\@\%]\w+$/) { + &Apache::lonxml::debug("doing second"); + my @result=&Apache::run::run("return $value",$safeeval,1); + if (!defined($result[0])) { + return $value + } else { + if (wantarray) { return @result; } else { return $result[0]; } + } } else { return $value; }