--- loncom/xml/lonxml.pm 2001/05/26 17:27:28 1.79 +++ loncom/xml/lonxml.pm 2001/05/28 18:27:46 1.80 @@ -8,6 +8,7 @@ # 3/29,5/4 Gerd Kortemeyer # 5/10 Scott Harrison # 5/26 Gerd Kortemeyer +# 5/27 H. K. Ng package Apache::lonxml; use vars @@ -16,6 +17,8 @@ use strict; use HTML::TokeParser; use Safe; use Safe::Hole; +use Math::Trig; +use Math::Cephes qw(j0 j1 jn jv y0 y1 yn yv); use Opcode; sub register { @@ -174,7 +177,53 @@ sub xmlparse { $safeeval->permit(":base_math"); $safeeval->permit("sort"); $safeeval->deny(":base_io"); +# $safe->share_from('Math::Trig',['acsc','asin','acos','atan']); $safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT'); + $safehole->wrap(\&Math::Trig::acsc,$safeeval,'&acsc'); + $safehole->wrap(\&Math::Trig::acosec,$safeeval,'&acosec'); + $safehole->wrap(\&Math::Trig::asec,$safeeval,'&asec'); + $safehole->wrap(\&Math::Trig::acot,$safeeval,'&acot'); + $safehole->wrap(\&Math::Trig::acotan,$safeeval,'&acotan'); + $safehole->wrap(\&Math::Trig::acsch,$safeeval,'&acsch'); + $safehole->wrap(\&Math::Trig::acosech,$safeeval,'&acosech'); + $safehole->wrap(\&Math::Trig::asech,$safeeval,'&asech'); + $safehole->wrap(\&Math::Trig::acoth,$safeeval,'&acoth'); + $safehole->wrap(\&Math::Trig::acotanh,$safeeval,'&acotanh'); + $safehole->wrap(\&Math::Trig::asin,$safeeval,'&asin'); + $safehole->wrap(\&Math::Trig::acos,$safeeval,'&acos'); + $safehole->wrap(\&Math::Trig::atan,$safeeval,'&atan'); + $safehole->wrap(\&Math::Trig::asinh,$safeeval,'&asinh'); + $safehole->wrap(\&Math::Trig::acosh,$safeeval,'&acosh'); + $safehole->wrap(\&Math::Trig::atanh,$safeeval,'&atanh'); + $safehole->wrap(\&Math::Trig::atan2,$safeeval,'&atan2'); + $safehole->wrap(\&Math::Trig::csc,$safeeval,'&csc'); + $safehole->wrap(\&Math::Trig::cosec,$safeeval,'&cosec'); + $safehole->wrap(\&Math::Trig::sec,$safeeval,'&sec'); + $safehole->wrap(\&Math::Trig::cot,$safeeval,'&cot'); + $safehole->wrap(\&Math::Trig::cotan,$safeeval,'&cotan'); + $safehole->wrap(\&Math::Trig::csch,$safeeval,'&csch'); + $safehole->wrap(\&Math::Trig::cosech,$safeeval,'&cosech'); + $safehole->wrap(\&Math::Trig::sech,$safeeval,'&sech'); + $safehole->wrap(\&Math::Trig::coth,$safeeval,'&coth'); + $safehole->wrap(\&Math::Trig::cotanh,$safeeval,'&cptanh'); + $safehole->wrap(\&Math::Trig::deg2rad,$safeeval,'°2rad'); + $safehole->wrap(\&Math::Trig::deg2grad,$safeeval,'°2grad'); + $safehole->wrap(\&Math::Trig::grad2deg,$safeeval,'&grad2deg'); + $safehole->wrap(\&Math::Trig::grad2rad,$safeeval,'&grad2rad'); + $safehole->wrap(\&Math::Trig::rad2deg,$safeeval,'&rad2deg'); + $safehole->wrap(\&Math::Trig::rad2grad,$safeeval,'&rad2grad'); + $safehole->wrap(\&Math::Trig::pi,$safeeval,'&pi'); + $safehole->wrap(\&Math::Cephes::erf,$safeeval,'&erf'); + $safehole->wrap(\&Math::Cephes::erfc,$safeeval,'&erfc'); + $safehole->wrap(\&Math::Cephes::j0,$safeeval,'&j0'); + $safehole->wrap(\&Math::Cephes::j1,$safeeval,'&j1'); + $safehole->wrap(\&Math::Cephes::jn,$safeeval,'&jn'); + $safehole->wrap(\&Math::Cephes::jv,$safeeval,'&jv'); + $safehole->wrap(\&Math::Cephes::y0,$safeeval,'&y0'); + $safehole->wrap(\&Math::Cephes::y1,$safeeval,'&y1'); + $safehole->wrap(\&Math::Cephes::yn,$safeeval,'&yn'); + $safehole->wrap(\&Math::Cephes::yv,$safeeval,'&yv'); + #need to inspect this class of ops # $safeeval->deny(":base_orig"); $safeinit .= ';$external::target='.$target.';';