Diff for /loncom/xml/lonxml.pm between versions 1.226 and 1.231

version 1.226, 2003/01/30 22:19:09 version 1.231, 2003/02/12 22:45:01
Line 41 Line 41
 # 6/1/1 Gerd Kortemeyer  # 6/1/1 Gerd Kortemeyer
 # 2/21,3/13 Guy  # 2/21,3/13 Guy
 # 3/29,5/4 Gerd Kortemeyer  # 3/29,5/4 Gerd Kortemeyer
 # 5/10 Scott Harrison  
 # 5/26 Gerd Kortemeyer  # 5/26 Gerd Kortemeyer
 # 5/27 H. K. Ng  # 5/27 H. K. Ng
 # 6/2,6/3,6/8,6/9 Gerd Kortemeyer  # 6/2,6/3,6/8,6/9 Gerd Kortemeyer
Line 146  $Apache::lonxml::registered=0; Line 145  $Apache::lonxml::registered=0;
 $Apache::lonxml::request='';  $Apache::lonxml::request='';
   
 # a problem number counter, and check on ether it is used  # a problem number counter, and check on ether it is used
 $Apache::lonxml::counter=1;  $Apache::lonxml::counter=4;
 $Apache::lonxml::counter_changed=0;  $Apache::lonxml::counter_changed=0;
   
 #internal check on whether to look at style defs  #internal check on whether to look at style defs
Line 669  sub htmlclean { Line 668  sub htmlclean {
 }  }
   
 sub latex_special_symbols {  sub latex_special_symbols {
     my ($current_token,$stack,$parstack)=@_;      my ($current_token,$stack,$parstack,$where)=@_;
     $current_token=~s/\\ /\\char92 /g;      if ($where=='header') {
     $current_token=~s/\^/\\char94 /g;        $current_token =~ s/_/ /g;
     $current_token=~s/\~/\\char126 /g;        $current_token =~ s/\^/ /g;
     $current_token=~s/(&[^a-z\#])/\\$1/g;        $current_token =~ s/&/\\&/g;
     $current_token=~s/([^&])\#/$1\\#/g;      } else {
     $current_token=~s/(\$|_|{|})/\\$1/g;       $current_token=~s/\\ /\\char92 /g;
     $current_token=~s/\\char92 /\\texttt{\\char92}/g;       $current_token=~s/\^/\\char94 /g;
     $current_token=~s/>/\$>\$/g; #more       $current_token=~s/\~/\\char126 /g;
     $current_token=~s/</\$<\$/g; #less       $current_token=~s/(&[^a-z\#])/\\$1/g;
     if ($current_token=~m/\d%/) {$current_token =~ s/(\d)%/$1\\%/g;} #percent after digit       $current_token=~s/([^&])\#/$1\\#/g;
     if ($current_token=~m/\s%/) {$current_token =~ s/(\s)%/$1\\%/g;} #persent after space       $current_token=~s/(\$|_|{|})/\\$1/g;
        $current_token=~s/\\char92 /\\texttt{\\char92}/g;
        $current_token=~s/>/\$>\$/g; #more
        $current_token=~s/</\$<\$/g; #less
        if ($current_token=~m/\d%/) {$current_token =~ s/(\d)%/$1\\%/g;} #percent after digit
        if ($current_token=~m/\s%/) {$current_token =~ s/(\s)%/$1\\%/g;} #persent after space
       }
     return $current_token;      return $current_token;
 }  }
   
Line 1145  sub get_all_text { Line 1150  sub get_all_text {
  }   }
        }         }
      }       }
        if (($depth >=0) && ($#$pars == 0) ) { $top_empty=1; }
      if (($depth >=0) && ($#$pars > 0) ) {       if (($depth >=0) && ($#$pars > 0) ) {
        pop(@$pars);         pop(@$pars);
        pop(@Apache::lonxml::pwd);         pop(@Apache::lonxml::pwd);
      }       }
      if (($depth >=0) && ($#$pars == 0) ) {        &debug("here4");$top_empty=1; }  
    }     }
    if ($top_empty && $depth >= 0) {     if ($top_empty && $depth >= 0) {
        #never found the end tag ran out of text, throw error send back blank         #never found the end tag ran out of text, throw error send back blank
Line 1211  sub parstring { Line 1216  sub parstring {
   foreach (@{$token->[3]}) {    foreach (@{$token->[3]}) {
     unless ($_=~/\W/) {      unless ($_=~/\W/) {
       my $val=$token->[2]->{$_};        my $val=$token->[2]->{$_};
       $val =~ s/([\%\@\\\"])/\\$1/g;        $val =~ s/([\%\@\\\"\'])/\\$1/g;
       #if ($val =~ m/^[\%\@]/) { $val="\\".$val; }        #if ($val =~ m/^[\%\@]/) { $val="\\".$val; }
       $temp .= "my \$$_=\"$val\";"        $temp .= "my \$$_=\"$val\";"
     }      }
Line 1501  sub get_param_var { Line 1506  sub get_param_var {
   if ( ! $context ) { $context = -1; }    if ( ! $context ) { $context = -1; }
   my $args ='';    my $args ='';
   if ( $#$parstack > (-2-$context) ) { $args=$$parstack[$context]; }    if ( $#$parstack > (-2-$context) ) { $args=$$parstack[$context]; }
     &Apache::lonxml::debug("Args are $args param is $param");
   if ($case_insensitive) {    if ($case_insensitive) {
       if (! ($args=~s/(my \$)(\Q$param\E)(=\")/$1.lc($2).$3/ei)) {        if (! ($args=~s/(my \$)(\Q$param\E)(=\")/$1.lc($2).$3/ei)) {
   return undef;    return undef;
       }        }
   } elsif ( $args !~ /my \$\Q$param\E=\"/ ) { return undef; }    } elsif ( $args !~ /my \$\Q$param\E=\"/ ) { return undef; }
   my $value=&Apache::run::run("{$args;".'return $'.$param.'}',$safeeval); #'    my $value=&Apache::run::run("{$args;".'return $'.$param.'}',$safeeval); #'
   if ($value =~ /^[\$\@\%]/) {    &Apache::lonxml::debug("first run is $value");
     return &Apache::run::run("return $value",$safeeval,1);    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 {    } else {
     return $value;      return $value;
   }    }

Removed from v.1.226  
changed lines
  Added in v.1.231


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