--- loncom/xml/lonxml.pm 2004/03/12 17:26:29 1.310 +++ loncom/xml/lonxml.pm 2004/03/30 07:16:24 1.314 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # XML Parser Module # -# $Id: lonxml.pm,v 1.310 2004/03/12 17:26:29 sakharuk Exp $ +# $Id: lonxml.pm,v 1.314 2004/03/30 07:16:24 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -401,17 +401,24 @@ sub latex_special_symbols { my ($string,$where)=@_; if ($where eq 'header') { $string =~ s/(\\|_|\^)/ /g; - $string =~ s/(\$|%|\#|&|\{|\})/\\$1/g; + $string =~ s/(\$|%|\{|\})/\\$1/g; $string =~ s/_/ /g; - } else { - $string=~s/([^\\])\%/$1\\\%/g; - $string=~s/([^\\])(\$|_)/$1\\$2/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 { + $string=~s/\\/\\ensuremath{\\backslash}/g; + $string=~s/([^\\]|^)\%/$1\\\%/g; + $string=~s/([^\\]|^)(\$|_)/$1\\$2/g; + $string=~s/\$\$/\$\\\$/g; $string=~s/\#\#/\#\\\#/g; - $string=~s/([^\\])(\~|\^)/$1\\$2\\strut /g; + $string=~s/([^\\]|^)(\~|\^)/$1\\$2\\strut /g; $string=~s/(>|<)/\\ensuremath\{$1\}/g; #more or less + $string=&Apache::lonprintout::character_chart($string); + # any & or # leftover should be safe to just escape + $string=~s/([^\\]|^)\&/$1\\\&/g; + $string=~s/([^\\]|^)\#/$1\\\#/g; #single { or } How to escape? } return $string; @@ -506,7 +513,7 @@ sub inner_xmlparse { if (($token->[0] eq 'T') || ($token->[0] eq 'C') || ($token->[0] eq 'D') ) { #Style file definitions should be correct if ($target eq 'tex' && ($Apache::lonxml::usestyle)) { - $result=&latex_special_symbols(&Apache::lonprintout::character_chart($result)); + $result=&latex_special_symbols($result); } } @@ -746,6 +753,7 @@ sub init_safespace { $safehole->wrap(\&Math::Random::random_get_seed,$safeeval,'&random_get_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::debug,$safeeval,'&LONCAPA_INTERNAL_DEBUG'); #need to inspect this class of ops # $safeeval->deny(":base_orig"); @@ -959,7 +967,7 @@ sub get_all_text { #never found the end tag ran out of text, throw error send back blank &error('Never found end tag for <'.$tag. '> current string
'.
-		   &HTML::Entities::encode($result).
+		   &HTML::Entities::encode($result,'<>&"').
 		   '
'); if ($gotfullstack) { my $newstring=''.$result; @@ -1136,7 +1144,7 @@ SIMPLECONTENT sub inserteditinfo { my ($result,$filecontents,$filetype)=@_; - $filecontents = &HTML::Entities::encode($filecontents); + $filecontents = &HTML::Entities::encode($filecontents,'<>&"'); # my $editheader='Edit below
'; my $xml_help = ''; if ($filetype eq 'html') { @@ -1321,7 +1329,7 @@ sub debug { $|=1; my $request=$Apache::lonxml::request; if (!$request) { $request=Apache->request; } - $request->print('
DEBUG:'.&HTML::Entities::encode($_[0])."
\n"); + $request->print('
DEBUG:'.&HTML::Entities::encode($_[0],'<>&"')."
\n"); } }