version 1.70, 2001/10/13 05:59:18
|
version 1.71, 2001/10/30 19:18:15
|
Line 379 sub end_while {
|
Line 379 sub end_while {
|
# </randomlist> |
# </randomlist> |
sub start_randomlist { |
sub start_randomlist { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my $body= &Apache::lonxml::get_all_text("/randomlist",$$parser[$#$parser]); |
if ($target eq 'answer' || $target eq 'grade' || $target eq 'web') { |
my $b_parser= HTML::TokeParser->new(\$body); |
my $body= &Apache::lonxml::get_all_text("/randomlist",$$parser[$#$parser]); |
my $b_tok; |
my $b_parser= HTML::TokeParser->new(\$body); |
my @randomlist; |
my $b_tok; |
my $list_item; |
my @randomlist; |
|
my $list_item; |
while($b_tok = $b_parser->get_token() ) { |
while($b_tok = $b_parser->get_token() ) { |
if($b_tok->[0] eq 'S') { # start tag |
if($b_tok->[0] eq 'S') { # start tag |
# get content of the tag until matching end tag |
# get content of the tag until matching end tag |
# get all text upto the matching tag |
# get all text upto the matching tag |
# and push the content into @randomlist |
# and push the content into @randomlist |
$list_item = &Apache::lonxml::get_all_text('/'.$b_tok->[1],$b_parser); |
$list_item = &Apache::lonxml::get_all_text('/'.$b_tok->[1],$b_parser); |
$list_item = "$b_tok->[4]"."$list_item"."</$b_tok->[1]>"; |
$list_item = "$b_tok->[4]"."$list_item"."</$b_tok->[1]>"; |
push(@randomlist,$list_item); |
push(@randomlist,$list_item); |
# print "<br /><b>START-TAG $b_tok->[1], $b_tok->[4], $list_item</b>"; |
# print "<br /><b>START-TAG $b_tok->[1], $b_tok->[4], $list_item</b>"; |
|
} |
|
if($b_tok->[0] eq 'T') { # text |
|
# what to do with text in between tags? |
|
# print "<b>TEXT $b_tok->[1]</b><br />"; |
|
} |
|
# if($b_tok->[0] eq 'E') { # end tag, should not happen |
|
# print "<b>END-TAG $b_tok->[1]</b><br />"; |
|
# } |
} |
} |
if($b_tok->[0] eq 'T') { # text |
|
# what to do with text in between tags? |
my @idx_arr = (0 .. $#randomlist); |
# print "<b>TEXT $b_tok->[1]</b><br />"; |
&Apache::structuretags::shuffle(\@idx_arr); |
|
my $bodytext = ''; |
|
for(0 .. $#randomlist) { |
|
$bodytext .= "$randomlist[ $idx_arr[$_] ]"; |
} |
} |
# if($b_tok->[0] eq 'E') { # end tag, should not happen |
&Apache::lonxml::newparser($parser,\$bodytext); |
# print "<b>END-TAG $b_tok->[1]</b><br />"; |
|
# } |
|
} |
|
my @idx_arr = (0 .. $#randomlist); |
|
&Apache::structuretags::shuffle(\@idx_arr); |
|
my $bodytext = ''; |
|
for(0 .. $#randomlist) { |
|
$bodytext .= "$randomlist[ $idx_arr[$_] ]"; |
|
} |
} |
|
|
&Apache::lonxml::newparser($parser,\$bodytext); |
|
return ""; |
return ""; |
} |
} |
|
|