--- loncom/xml/lonxml.pm 2001/03/23 22:08:05 1.60
+++ loncom/xml/lonxml.pm 2001/03/26 17:32:14 1.62
@@ -97,9 +97,9 @@ sub xmlparse {
while ( $#pars > -1 ) {
while ($token = $pars[$#pars]->get_token) {
if (($token->[0] eq 'T') || ($token->[0] eq 'C') || ($token->[0] eq 'D') ) {
- if (!$metamode) { $result=$token->[1]; }
+ if ($metamode<1) { $result=$token->[1]; }
} elsif ($token->[0] eq 'PI') {
- if (!$metamode) { $result=$token->[2]; }
+ if ($metamode<1) { $result=$token->[2]; }
} elsif ($token->[0] eq 'S') {
# add tag to stack
push (@stack,$token->[1]);
@@ -107,9 +107,7 @@ sub xmlparse {
push (@parstack,&parstring($token));
&increasedepth($token);
if (exists $style_for_target{$token->[1]}) {
- if ($metamode) {
- $result = $style_for_target{$token->[1]};
- } elsif ($Apache::lonxml::redirection) {
+ if ($Apache::lonxml::redirection) {
$Apache::lonxml::outputstack['-1'] .=
&recurse($style_for_target{$token->[1]},$target,$safeeval,
\%style_for_target,@parstack);
@@ -129,9 +127,7 @@ sub xmlparse {
}
if (exists $style_for_target{'/'."$token->[1]"}) {
- if ($metamode) {
- $result = $style_for_target{$token->[1]};
- } elsif ($Apache::lonxml::redirection) {
+ if ($Apache::lonxml::redirection) {
$Apache::lonxml::outputstack['-1'] .=
&recurse($style_for_target{'/'."$token->[1]"},
$target,$safeeval,\%style_for_target,@parstack);
@@ -191,9 +187,9 @@ sub recurse {
while ( $#pat > -1 ) {
while ($tokenpat = $pat[$#pat]->get_token) {
if (($tokenpat->[0] eq 'T') || ($tokenpat->[0] eq 'C') || ($tokenpat->[0] eq 'D') ) {
- $partstring = $tokenpat->[1];
+ if ($metamode<1) { $partstring=$tokenpat->[1]; }
} elsif ($tokenpat->[0] eq 'PI') {
- $partstring = $tokenpat->[2];
+ if ($metamode<1) { $partstring=$tokenpat->[2]; }
} elsif ($tokenpat->[0] eq 'S') {
push (@innerstack,$tokenpat->[1]);
push (@innerparstack,&parstring($tokenpat));
@@ -253,21 +249,23 @@ sub callsub {
$safeeval,$style);
}
if (my $space=$Apache::lonxml::alltags{$token->[1]}) {
- #&Apache::lonxml::debug("Calling sub $sub in $space
\n");
+ &Apache::lonxml::debug("Calling sub $sub in $space $metamode
\n");
$sub1="$space\:\:$sub";
$Apache::lonxml::curdepth=join('_',@Apache::lonxml::depthcounter);
$currentstring .= &$sub1($target,$token,$parstack,$parser,
$safeeval,$style);
} else {
- #&Apache::lonxml::debug("NOT Calling sub $sub in $space
\n");
- if (defined($token->[4]) && !$metamode) {
- $currentstring .= $token->[4];
- } else {
- $currentstring .= $token->[2];
+ &Apache::lonxml::debug("NOT Calling sub $sub in $space $metamode
\n");
+ if ($metamode <1) {
+ if (defined($token->[4]) && ($metamode < 1)) {
+ $currentstring .= $token->[4];
+ } else {
+ $currentstring .= $token->[2];
+ }
}
}
if ($target eq 'edit' && $token->[0] eq 'E') {
- $currentstring = &Apache::edit::tag_end($target,$token,$parstack,$parser,
+ $currentstring .= &Apache::edit::tag_end($target,$token,$parstack,$parser,
$safeeval,$style);
}
use strict 'refs';