--- loncom/xml/lonxml.pm 2001/03/23 22:08:05 1.60
+++ loncom/xml/lonxml.pm 2001/03/27 17:47:43 1.64
@@ -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';
@@ -413,13 +411,13 @@ sub handler {
my $request=shift;
my $target='web';
- $Apache::lonxml::debug=0;
+ $Apache::lonxml::debug=1;
if ($ENV{'browser.mathml'}) {
$request->content_type('text/xml');
} else {
$request->content_type('text/html');
}
-
+
# $request->print(<
#
@@ -429,12 +427,13 @@ sub handler {
#ENDHEADER
# &Apache::lonhomework::send_header($request);
$request->send_http_header;
-
+
return OK if $request->header_only;
- $request->print(&Apache::lontexconvert::header());
-
- $request->print(''."\n");
+ if ($target eq 'web') {
+ $request->print(&Apache::lontexconvert::header());
+ $request->print(''."\n");
+ }
my $file=&Apache::lonnet::filelocation("",$request->uri);
my %mystyle;
@@ -449,8 +448,13 @@ sub handler {
$request->print($result);
- $request->print('');
- $request->print(&Apache::lontexconvert::footer());
+ if ($target eq 'tex') {
+# $request->print('\end{document}'."\n");
+ } elsif ($target eq 'web') {
+ $request->print('');
+ $request->print(&Apache::lontexconvert::footer());
+ }
+
writeallows($request->uri);
return OK;
}