Diff for /loncom/xml/lonxml.pm between versions 1.71 and 1.72

version 1.71, 2001/05/04 19:18:43 version 1.72, 2001/05/04 21:17:24
Line 9 Line 9
   
 package Apache::lonxml;   package Apache::lonxml; 
 use vars   use vars 
 qw(@pwd @outputstack $redirection $import @extlinks $metamode);  qw(@pwd @outputstack $redirection $import @extlinks $metamode $evaluate);
 use strict;  use strict;
 use HTML::TokeParser;  use HTML::TokeParser;
 use Safe;  use Safe;
 use Safe::Hole;  use Safe::Hole;
 use Opcode;  use Opcode;
   
   sub register {
     my $space;
     my @taglist;
     my $temptag;
     ($space,@taglist) = @_;
     foreach $temptag (@taglist) {
       $Apache::lonxml::alltags{$temptag}=$space;
     }
   }
   
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
 use Apache::lontexconvert;  use Apache::lontexconvert;
   use Apache::style;
   use Apache::run;
   use Apache::londefdef;
   use Apache::scripttag;
   use Apache::edit;
   #==================================================   Main subroutine: xmlparse  
   #debugging control, to turn on debugging modify the correct handler
   $Apache::lonxml::debug=0;
   
   #path to the directory containing the file currently being processed
   @pwd=();
   
   #these two are used for capturing a subset of the output for later processing,
   #don't touch them directly use &startredirection and &endredirection
   @outputstack = ();
   $redirection = 0;
   
   #controls wheter the <import> tag actually does
   $import = 1;
   @extlinks=();
   
   # meta mode is a bit weird only some output is to be turned off
   #<output> tag turns metamode off (defined in londefdef.pm)
   $metamode = 0;
   
   # turns on and of run::evaluate actually derefencing var refs
   $evaluate = 1;
   
   
 sub xmlbegin {  sub xmlbegin {
Line 78  sub unloadevents() { Line 116  sub unloadevents() {
     return 'LONCAPAstale();';      return 'LONCAPAstale();';
 }  }
   
 sub register {  
   my $space;  
   my @taglist;  
   my $temptag;  
   ($space,@taglist) = @_;  
   foreach $temptag (@taglist) {  
     $Apache::lonxml::alltags{$temptag}=$space;  
   }  
 }  
   
 sub printalltags {  sub printalltags {
   my $temp;    my $temp;
   foreach $temp (sort keys %Apache::lonxml::alltags) {    foreach $temp (sort keys %Apache::lonxml::alltags) {
     &Apache::lonxml::debug("$temp -- $Apache::lonxml::alltags{$temp}");      &Apache::lonxml::debug("$temp -- $Apache::lonxml::alltags{$temp}");
   }    }
 }  }
 use Apache::style;  
 use Apache::run;  
 use Apache::londefdef;  
 use Apache::scripttag;  
 use Apache::edit;  
 #==================================================   Main subroutine: xmlparse    
 @pwd=();  
 @outputstack = ();  
 $redirection = 0;  
 $import = 1;  
 @extlinks=();  
 $metamode = 0;  
   
 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') {   if ($target eq 'meta') {
    # meta mode is a bit weird only some output is to be turned off  
    #<output> tag turns metamode off (defined in londefdef.pm)  
    $Apache::lonxml::redirection = 0;     $Apache::lonxml::redirection = 0;
    $Apache::lonxml::metamode = 1;     $Apache::lonxml::metamode = 1;
      $Apache::lonxml::evaluate = 1;
    $Apache::lonxml::import = 0;     $Apache::lonxml::import = 0;
  } elsif ($target eq 'grade') {   } elsif ($target eq 'grade') {
    &startredirection;     &startredirection;
    $Apache::lonxml::metamode = 0;     $Apache::lonxml::metamode = 0;
      $Apache::lonxml::evaluate = 1;
    $Apache::lonxml::import = 1;     $Apache::lonxml::import = 1;
  } else {   } elsif ($target eq 'modified') {
      $Apache::lonxml::redirection = 0;
    $Apache::lonxml::metamode = 0;     $Apache::lonxml::metamode = 0;
      $Apache::lonxml::evaluate = 0;
      $Apache::lonxml::import = 0;
    } else {
    $Apache::lonxml::redirection = 0;     $Apache::lonxml::redirection = 0;
      $Apache::lonxml::metamode = 0;
      $Apache::lonxml::evaluate = 1;
    $Apache::lonxml::import = 1;     $Apache::lonxml::import = 1;
  }   }
  #&printalltags();   #&printalltags();
Line 308  sub recurse { Line 330  sub recurse {
 sub callsub {  sub callsub {
   my ($sub,$target,$token,$parstack,$parser,$safeeval,$style)=@_;    my ($sub,$target,$token,$parstack,$parser,$safeeval,$style)=@_;
   my $currentstring='';    my $currentstring='';
     my $nodefault;
   {    {
     my $sub1;      my $sub1;
     no strict 'refs';      no strict 'refs';
Line 323  sub callsub { Line 346  sub callsub {
  $space=$Apache::lonxml::alltags{$tag}   $space=$Apache::lonxml::alltags{$tag}
     }      }
     if ($space) {      if ($space) {
       &Apache::lonxml::debug("Calling sub $sub in $space $metamode<br />\n");        #&Apache::lonxml::debug("Calling sub $sub in $space $metamode<br />\n");
       $sub1="$space\:\:$sub";        $sub1="$space\:\:$sub";
       $Apache::lonxml::curdepth=join('_',@Apache::lonxml::depthcounter);        $Apache::lonxml::curdepth=join('_',@Apache::lonxml::depthcounter);
       $currentstring .= &$sub1($target,$token,$parstack,$parser,        ($currentstring,$nodefault) = &$sub1($target,$token,$parstack,$parser,
      $safeeval,$style);     $safeeval,$style);
     } else {      } else {
       &Apache::lonxml::debug("NOT Calling sub $sub in $space $metamode<br />\n");        #&Apache::lonxml::debug("NOT Calling sub $sub in $space $metamode<br />\n");
       if ($metamode <1) {        if ($metamode <1) {
  if (defined($token->[4]) && ($metamode < 1)) {   if (defined($token->[4]) && ($metamode < 1)) {
   $currentstring .= $token->[4];    $currentstring = $token->[4];
  } else {   } else {
   $currentstring .= $token->[2];    $currentstring = $token->[2];
  }   }
       }        }
     }      }
     if ($target eq 'edit' && $token->[0] eq 'E') {      &Apache::lonxml::debug("nodefalt:$nodefault:");
       $currentstring .= &Apache::edit::tag_end($target,$token,$parstack,$parser,      if ($currentstring eq '' && $nodefault eq '') {
  $safeeval,$style);        if ($target eq 'edit') {
    if ($token->[0] eq 'S') {
     $currentstring = &Apache::edit::tag_start($token,$target);
    } elsif ($token->[0] eq 'E') {
     $currentstring = &Apache::edit::tag_end($token,$target);
    }
         } elsif ($target eq 'modified') {
    if ($token->[0] eq 'S') {
     $currentstring = $token->[4];
    } else {
     $currentstring = $token->[2];
    }
         }
     }      }
     use strict 'refs';      use strict 'refs';
   }    }
Line 354  sub startredirection { Line 389  sub startredirection {
   
 sub endredirection {  sub endredirection {
   if (!$Apache::lonxml::redirection) {    if (!$Apache::lonxml::redirection) {
     &Apache::lonxml::error("Endredirection was called, before a startredirection, perhaps you have unbalanced tags. Some debuggin information:".join ":",caller);      &Apache::lonxml::error("Endredirection was called, before a startredirection, perhaps you have unbalanced tags. Some debuging information:".join ":",caller);
     return '';      return '';
   }    }
   $Apache::lonxml::redirection--;    $Apache::lonxml::redirection--;
Line 484  sub writeallows { Line 519  sub writeallows {
 #  #
 # Afterburner handles anchors, highlights and links  # Afterburner handles anchors, highlights and links
 #  #
   
 sub afterburn {  sub afterburn {
     my $result=shift;      my $result=shift;
     map {      map {
Line 599  sub error { Line 633  sub error {
 }  }
   
 sub warning {  sub warning {
   if ($Apache::lonxml::debug eq 1) {    #if ($Apache::lonxml::debug eq 1) {
     print "<b>W</b>ARNING<b>:</b>".$_[0]."<br />\n";      print "<b>W</b>ARNING<b>:</b>".$_[0]."<br />\n";
   }   # }
 }  }
   
 1;  1;

Removed from v.1.71  
changed lines
  Added in v.1.72


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