File:  [LON-CAPA] / loncom / homework / structuretags.pm
Revision 1.4: download - view: text, annotated - select for diffs
Tue Aug 22 16:19:26 2000 UTC (23 years, 8 months ago) by tsai
Branches: MAIN
CVS tags: HEAD
*** empty log message ***

# The LearningOnline Network with CAPA
# <script> definiton


package Apache::structuretags; 

use strict;
use Apache::lonnet;

sub BEGIN {
  &Apache::lonxml::register('Apache::structuretags',('block','while'));
}

sub start_block {
  my ($target,$token,$parstack,$parser,$safeeval)=@_;

  my $code = @$parstack[$#$parstack];
  $code =~ s/\"//g;
  $code .=';return $condition;';
#  print "<br>$code<br>";
  my $result = &Apache::run::run($code,$safeeval);
  if ( ! $result ) { 
#    my $skip=$$parser[$#$parser]->get_text("/block");
    my $skip=&Apache::lonxml::get_all_text("block",$$parser[$#$parser]);
#    print "skipped $skip";
  }
  return "";
}

sub end_block {
}

sub start_while {
  my ($target,$token,$parstack,$parser,$safeeval)=@_;

  my $code = @$parstack[$#$parstack];
  $code =~ s/\"//g;
  $code .=';return $condition;';

  print "<H2>WHILE CONDITION = [$code]</H2>";
  my $result = &Apache::run::run($code,$safeeval);
  my $bodytext=$$parser[$#$parser]->get_text("/while");
  if ( $result ) { # condition is TRUE, bodytext is evaluated
# push the bodytext into parser stack
     my $tempparser=HTML::TokeParser->new(\$bodytext);
     push (@$parser,$tempparser);
  } else { # condition is FALSE initially, skip bodytext
  }
  return "";
}

sub end_while {
# pop parser from parser stack
# check if condition is TRUE, 
#   TRUE  then push content into parser stack
#   FALSE then continue

}

1;
__END__

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