Diff for /loncom/xml/lonxml.pm between versions 1.95 and 1.97

version 1.95, 2001/06/16 16:09:09 version 1.97, 2001/06/26 21:45:28
Line 225  sub printalltags { Line 225  sub printalltags {
   
 sub xmlparse {  sub xmlparse {
  my ($target,$content_file_string,$safeinit,%style_for_target) = @_;   my ($target,$content_file_string,$safeinit,%style_for_target) = @_;
  if ($target eq 'meta') {  
    $Apache::lonxml::redirection = 0;   &setup_globals($target);
    $Apache::lonxml::metamode = 1;  
    $Apache::lonxml::evaluate = 1;  
    $Apache::lonxml::import = 0;  
  } elsif ($target eq 'grade') {  
    &startredirection;  
    $Apache::lonxml::metamode = 0;  
    $Apache::lonxml::evaluate = 1;  
    $Apache::lonxml::import = 1;  
  } elsif ($target eq 'modified') {  
    $Apache::lonxml::redirection = 0;  
    $Apache::lonxml::metamode = 0;  
    $Apache::lonxml::evaluate = 0;  
    $Apache::lonxml::import = 0;  
  } else {  
    $Apache::lonxml::redirection = 0;  
    $Apache::lonxml::metamode = 0;  
    $Apache::lonxml::evaluate = 1;  
    $Apache::lonxml::import = 1;  
  }  
  #&printalltags();   #&printalltags();
  my @pars = ();   my @pars = ();
  @Apache::lonxml::pwd=();   @Apache::lonxml::pwd=();
Line 297  sub xmlparse { Line 278  sub xmlparse {
        #clear out any tags that didn't end         #clear out any tags that didn't end
        while ($token->[1] ne $stack[$#stack] && ($#stack > -1)) {         while ($token->[1] ne $stack[$#stack] && ($#stack > -1)) {
  &Apache::lonxml::warning("Unbalanced tags in resource $stack['-1']");   &Apache::lonxml::warning("Unbalanced tags in resource $stack['-1']");
  pop @stack;pop @parstack;&decreasedepth($token);   &end_tag(\@stack,\@parstack,$token);
        }         }
                 
        if (exists $style_for_target{'/'."$token->[1]"}) {         if (exists $style_for_target{'/'."$token->[1]"}) {
Line 334  sub xmlparse { Line 315  sub xmlparse {
        $result = '';         $result = '';
      }        } 
      if ($token->[0] eq 'E') {        if ($token->[0] eq 'E') { 
        pop @stack;pop @parstack;&decreasedepth($token);         &end_tag(\@stack,\@parstack,$token);
      }       }
    }     }
    pop @pars;     pop @pars;
Line 382  sub recurse { Line 363  sub recurse {
  while ($tokenpat->[1] ne $innerstack[$#innerstack]    while ($tokenpat->[1] ne $innerstack[$#innerstack] 
        && ($#innerstack > -1)) {         && ($#innerstack > -1)) {
   &Apache::lonxml::warning("Unbalanced tags in resource $innerstack['-1']");    &Apache::lonxml::warning("Unbalanced tags in resource $innerstack['-1']");
   pop @innerstack;pop @innerparstack;&decreasedepth($tokenpat);    &end_tag(\@innerstack,\@innerparstack,$tokenpat);
  }   }
  $partstring = &callsub("end_$tokenpat->[1]", $target, $tokenpat,   $partstring = &callsub("end_$tokenpat->[1]", $target, $tokenpat,
        \@innerstack, \@innerparstack, \@pat,         \@innerstack, \@innerparstack, \@pat,
Line 432  sub callsub { Line 413  sub callsub {
  $sub=~tr/A-Z/a-z/;   $sub=~tr/A-Z/a-z/;
  $space=$Apache::lonxml::alltags{$tag}   $space=$Apache::lonxml::alltags{$tag}
     }      }
     if ($space) {  
       #&Apache::lonxml::debug("Calling sub $sub in $space $metamode<br />\n");      my $deleted=0;
       $sub1="$space\:\:$sub";      $Apache::lonxml::curdepth=join('_',@Apache::lonxml::depthcounter);
       $Apache::lonxml::curdepth=join('_',@Apache::lonxml::depthcounter);      if (($token->[0] eq 'S') && ($target eq 'modified')) {
       ($currentstring,$nodefault) = &$sub1($target,$token,$tagstack,        $deleted=&Apache::edit::handle_delete($space,$target,$token,$tagstack,
    $parstack,$parser,$safeeval,       $parstack,$parser,$safeeval,
    $style);       $style);
     } else {  
       #&Apache::lonxml::debug("NOT Calling sub $sub in $space $metamode<br />\n");  
       if ($metamode <1) {  
  if (defined($token->[4]) && ($metamode < 1)) {  
   $currentstring = $token->[4];  
  } else {  
   $currentstring = $token->[2];  
  }  
       }  
     }      }
 #    &Apache::lonxml::debug("nodefalt:$nodefault:");      if (!$deleted) {
     if ($currentstring eq '' && $nodefault eq '') {        if ($space) {
       if ($target eq 'edit') {   #&Apache::lonxml::debug("Calling sub $sub in $space $metamode<br />\n");
  &Apache::lonxml::debug("doing default edit for $token->[1]");   $sub1="$space\:\:$sub";
  if ($token->[0] eq 'S') {   ($currentstring,$nodefault) = &$sub1($target,$token,$tagstack,
   $currentstring = &Apache::edit::tag_start($target,$token);       $parstack,$parser,$safeeval,
  } elsif ($token->[0] eq 'E') {       $style);
   $currentstring = &Apache::edit::tag_end($target,$token);        } else {
    #&Apache::lonxml::debug("NOT Calling sub $sub in $space $metamode<br />\n");
    if ($metamode <1) {
     if (defined($token->[4]) && ($metamode < 1)) {
       $currentstring = $token->[4];
     } else {
       $currentstring = $token->[2];
     }
  }   }
       } elsif ($target eq 'modified') {        }
  if ($token->[0] eq 'S') {        #    &Apache::lonxml::debug("nodefalt:$nodefault:");
   $currentstring = $token->[4];        if ($currentstring eq '' && $nodefault eq '') {
   $currentstring.=&Apache::edit::handle_insert();   if ($target eq 'edit') {
  } else {    &Apache::lonxml::debug("doing default edit for $token->[1]");
   $currentstring = $token->[2];    if ($token->[0] eq 'S') {
       $currentstring = &Apache::edit::tag_start($target,$token);
     } elsif ($token->[0] eq 'E') {
       $currentstring = &Apache::edit::tag_end($target,$token);
     }
    } elsif ($target eq 'modified') {
     if ($token->[0] eq 'S') {
       $currentstring = $token->[4];
       $currentstring.=&Apache::edit::handle_insert();
     } else {
       $currentstring = $token->[2];
     }
  }   }
       }        }
     }      }
Line 472  sub callsub { Line 462  sub callsub {
   return $currentstring;    return $currentstring;
 }  }
   
   sub setup_globals {
     my ($target)=@_;
     if ($target eq 'meta') {
       $Apache::lonxml::redirection = 0;
       $Apache::lonxml::metamode = 1;
       $Apache::lonxml::evaluate = 1;
       $Apache::lonxml::import = 0;
     } elsif ($target eq 'grade') {
       &startredirection;
       $Apache::lonxml::metamode = 0;
       $Apache::lonxml::evaluate = 1;
       $Apache::lonxml::import = 1;
     } elsif ($target eq 'modified') {
       $Apache::lonxml::redirection = 0;
       $Apache::lonxml::metamode = 0;
       $Apache::lonxml::evaluate = 0;
       $Apache::lonxml::import = 0;
     } elsif ($target eq 'edit') {
       $Apache::lonxml::redirection = 0;
       $Apache::lonxml::metamode = 0;
       $Apache::lonxml::evaluate = 0;
       $Apache::lonxml::import = 0;
     } else {
       $Apache::lonxml::redirection = 0;
       $Apache::lonxml::metamode = 0;
       $Apache::lonxml::evaluate = 1;
       $Apache::lonxml::import = 1;
     }
   }
   
 sub init_safespace {  sub init_safespace {
   my ($target,$safeeval,$safehole,$safeinit) = @_;    my ($target,$safeeval,$safehole,$safeinit) = @_;
   $safeeval->permit("entereval");    $safeeval->permit("entereval");
Line 542  sub endredirection { Line 562  sub endredirection {
   pop @Apache::lonxml::outputstack;    pop @Apache::lonxml::outputstack;
 }  }
   
   sub end_tag {
     my ($tagstack,$parstack,$token)=@_;
     pop(@$tagstack);
     pop(@$parstack);
     &decreasedepth($token);
   }
   
 sub initdepth {  sub initdepth {
   @Apache::lonxml::depthcounter=();    @Apache::lonxml::depthcounter=();
   $Apache::lonxml::depth=-1;    $Apache::lonxml::depth=-1;
Line 809  ENDNOTFOUND Line 836  ENDNOTFOUND
     
 sub debug {  sub debug {
   if ($Apache::lonxml::debug eq 1) {    if ($Apache::lonxml::debug eq 1) {
     print "DEBUG:".$_[0]."<br />\n";      print("DEBUG:".$_[0]."<br />\n");
   }    }
 }  }
   

Removed from v.1.95  
changed lines
  Added in v.1.97


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