Diff for /loncom/xml/lonxml.pm between versions 1.309 and 1.315

version 1.309, 2004/03/09 20:37:58 version 1.315, 2004/03/31 05:24:00
Line 59 Line 59
   
 package Apache::lonxml;   package Apache::lonxml; 
 use vars   use vars 
 qw(@pwd @outputstack $redirection $import @extlinks $metamode $evaluate %insertlist @namespace $prevent_entity_encode $errorcount $warningcount);  qw(@pwd @outputstack $redirection $import @extlinks $metamode $evaluate %insertlist @namespace $errorcount $warningcount);
 use strict;  use strict;
 use HTML::LCParser();  use HTML::LCParser();
 use HTML::TreeBuilder();  use HTML::TreeBuilder();
Line 141  $evaluate = 1; Line 141  $evaluate = 1;
 # stores the list of active tag namespaces  # stores the list of active tag namespaces
 @namespace=();  @namespace=();
   
 # if 0 all high ASCII characters will be encoded into HTML Entities  
 $prevent_entity_encode=0;  
   
 # has the dynamic menu been updated to know about this resource  # has the dynamic menu been updated to know about this resource
 $Apache::lonxml::registered=0;  $Apache::lonxml::registered=0;
   
Line 401  sub latex_special_symbols { Line 398  sub latex_special_symbols {
     my ($string,$where)=@_;      my ($string,$where)=@_;
     if ($where eq 'header') {      if ($where eq 'header') {
  $string =~ s/(\\|_|\^)/ /g;   $string =~ s/(\\|_|\^)/ /g;
  $string =~ s/(\$|%|\#|&|\{|\})/\\$1/g;   $string =~ s/(\$|%|\{|\})/\\$1/g;
  $string =~ s/_/ /g;   $string =~ s/_/ /g;
    $string=&Apache::lonprintout::character_chart($string);
    # any & or # leftover should be safe to just escape
           $string=~s/([^\\])\&/$1\\\&/g;
           $string=~s/([^\\])\#/$1\\\#/g;
     } else {      } else {
  $string=~s/\\ /\\char92 /g;   $string=~s/\\/\\ensuremath{\\backslash}/g;
  $string=~s/\^/\\\^\\strut /g;   $string=~s/([^\\]|^)\%/$1\\\%/g;
  $string=~s/\~/\\char126 /g;   $string=~s/([^\\]|^)(\$|_)/$1\\$2/g;
  #fixup & if it doesn't look like   $string=~s/\$\$/\$\\\$/g;
         # { or α   $string=~s/\#\#/\#\\\#/g;
  $string=~s/(&(?!((\#[0-9]+)|([a-z][a-z0-9]*));))/\\$1/gi;          $string=~s/([^\\]|^)(\~|\^)/$1\\$2\\strut /g;
         $string=~s/([^&\\])\#/$1\\#/g;   $string=~s/(>|<)/\\ensuremath\{$1\}/g; #more or less
  $string=~s/\#\#/\#\\#/g;   $string=&Apache::lonprintout::character_chart($string);
  $string=~s/(\$|_|{|})/\\$1/g;   # any & or # leftover should be safe to just escape
  $string=~s/\\char92 /\\texttt{\\char92}/g;          $string=~s/([^\\]|^)\&/$1\\\&/g;
  $string=~s/(>|<)/\$$1\$/g; #more or less          $string=~s/([^\\]|^)\#/$1\\\#/g;
  if ($string=~m/\d%/) {$string =~ s/(\d)%/$1\\%/g;} #percent after digit  #single { or } How to escape?
  if ($string=~m/\s%/) {$string =~ s/(\s)%/$1\\%/g;} #percent after space  
  if ($string eq '%.') {$string = '\%.';} #percent at the end of statement  
     }      }
     return $string;      return $string;
 }  }
Line 515  sub inner_xmlparse { Line 514  sub inner_xmlparse {
   }    }
       }        }
   
       # Encode any high ASCII characters  
 #      if (!$Apache::lonxml::prevent_entity_encode) {  
 # $result=&HTML::Entities::encode($result,"\200-\377");  
 #      }  
       if ($Apache::lonxml::redirection) {        if ($Apache::lonxml::redirection) {
  $Apache::lonxml::outputstack['-1'] .= $result;   $Apache::lonxml::outputstack['-1'] .= $result;
       } else {        } else {
Line 751  sub init_safespace { Line 746  sub init_safespace {
   $safehole->wrap(\&Math::Random::random_get_seed,$safeeval,'&random_get_seed');    $safehole->wrap(\&Math::Random::random_get_seed,$safeeval,'&random_get_seed');
   $safehole->wrap(\&Math::Random::random_set_seed,$safeeval,'&random_set_seed');    $safehole->wrap(\&Math::Random::random_set_seed,$safeeval,'&random_set_seed');
   $safehole->wrap(\&Apache::lonxml::error,$safeeval,'&LONCAPA_INTERNAL_ERROR');    $safehole->wrap(\&Apache::lonxml::error,$safeeval,'&LONCAPA_INTERNAL_ERROR');
     $safehole->wrap(\&Apache::lonxml::debug,$safeeval,'&LONCAPA_INTERNAL_DEBUG');
   
 #need to inspect this class of ops  #need to inspect this class of ops
 # $safeeval->deny(":base_orig");  # $safeeval->deny(":base_orig");
Line 964  sub get_all_text { Line 960  sub get_all_text {
     #never found the end tag ran out of text, throw error send back blank      #never found the end tag ran out of text, throw error send back blank
     &error('Never found end tag for &lt;'.$tag.      &error('Never found end tag for &lt;'.$tag.
    '&gt; current string <pre>'.     '&gt; current string <pre>'.
    &HTML::Entities::encode($result).     &HTML::Entities::encode($result,'<>&"').
    '</pre>');     '</pre>');
     if ($gotfullstack) {      if ($gotfullstack) {
  my $newstring='</'.$tag.'>'.$result;   my $newstring='</'.$tag.'>'.$result;
Line 1141  SIMPLECONTENT Line 1137  SIMPLECONTENT
   
 sub inserteditinfo {  sub inserteditinfo {
       my ($result,$filecontents,$filetype)=@_;        my ($result,$filecontents,$filetype)=@_;
       $filecontents = &HTML::Entities::encode($filecontents);        $filecontents = &HTML::Entities::encode($filecontents,'<>&"');
 #      my $editheader='<a href="#editsection">Edit below</a><hr />';  #      my $editheader='<a href="#editsection">Edit below</a><hr />';
       my $xml_help = '';        my $xml_help = '';
       if ($filetype eq 'html') {        if ($filetype eq 'html') {
Line 1326  sub debug { Line 1322  sub debug {
  $|=1;   $|=1;
  my $request=$Apache::lonxml::request;   my $request=$Apache::lonxml::request;
  if (!$request) { $request=Apache->request; }   if (!$request) { $request=Apache->request; }
  $request->print('<font size="-2"><pre>DEBUG:'.&HTML::Entities::encode($_[0])."</pre></font>\n");   $request->print('<font size="-2"><pre>DEBUG:'.&HTML::Entities::encode($_[0],'<>&"')."</pre></font>\n");
     }      }
 }  }
   

Removed from v.1.309  
changed lines
  Added in v.1.315


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