/usr/lib/perl5/Template/Plugin/Math.pm is in libtemplate-perl 2.22-0.1build2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 | #============================================================= -*-Perl-*-
#
# Template::Plugin::Math
#
# DESCRIPTION
# Plugin implementing numerous mathematical functions.
#
# AUTHORS
# Andy Wardley <abw@wardley.org>
#
# COPYRIGHT
# Copyright (C) 2002-2007 Andy Wardley. All Rights Reserved.
#
# This module is free software; you can redistribute it and/or
# modify it under the same terms as Perl itself.
#
#============================================================================
package Template::Plugin::Math;
use strict;
use warnings;
use base 'Template::Plugin';
our $VERSION = 1.16;
our $AUTOLOAD;
#------------------------------------------------------------------------
# new($context, \%config)
#
# This constructor method creates a simple, empty object to act as a
# receiver for future object calls. No doubt there are many interesting
# configuration options that might be passed, but I'll leave that for
# someone more knowledgable in these areas to contribute...
#------------------------------------------------------------------------
sub new {
my ($class, $context, $config) = @_;
$config ||= { };
bless {
%$config,
}, $class;
}
sub abs { shift; CORE::abs($_[0]); }
sub atan2 { shift; CORE::atan2($_[0], $_[1]); } # prototyped (ugg)
sub cos { shift; CORE::cos($_[0]); }
sub exp { shift; CORE::exp($_[0]); }
sub hex { shift; CORE::hex($_[0]); }
sub int { shift; CORE::int($_[0]); }
sub log { shift; CORE::log($_[0]); }
sub oct { shift; CORE::oct($_[0]); }
sub rand { shift; CORE::rand($_[0]); }
sub sin { shift; CORE::sin($_[0]); }
sub sqrt { shift; CORE::sqrt($_[0]); }
sub srand { shift; CORE::srand($_[0]); }
# Use the Math::TrulyRandom module
# XXX This is *sloooooooowwwwwwww*
sub truly_random {
eval { require Math::TrulyRandom; }
or die(Template::Exception->new("plugin",
"Can't load Math::TrulyRandom"));
return Math::TrulyRandom::truly_random_value();
}
eval {
require Math::Trig;
no strict qw(refs);
for my $trig_func (@Math::Trig::EXPORT) {
my $sub = Math::Trig->can($trig_func);
*{$trig_func} = sub { shift; &$sub(@_) };
}
};
# To catch errors from a missing Math::Trig
sub AUTOLOAD { return; }
1;
__END__
=head1 NAME
Template::Plugin::Math - Plugin providing mathematical functions
=head1 SYNOPSIS
[% USE Math %]
[% Math.sqrt(9) %]
=head1 DESCRIPTION
The Math plugin provides numerous mathematical functions for use
within templates.
=head1 METHODS
C<Template::Plugin::Math> makes available the following functions from
the Perl core:
=over 4
=item abs
=item atan2
=item cos
=item exp
=item hex
=item int
=item log
=item oct
=item rand
=item sin
=item sqrt
=item srand
=back
In addition, if the L<Math::Trig> module can be loaded, the following
functions are also available:
=over 4
=item pi
=item tan
=item csc
=item cosec
=item sec
=item cot
=item cotan
=item asin
=item acos
=item atan
=item acsc
=item acosec
=item asec
=item acot
=item acotan
=item sinh
=item cosh
=item tanh
=item csch
=item cosech
=item sech
=item coth
=item cotanh
=item asinh
=item acosh
=item atanh
=item acsch
=item acosech
=item asech
=item acoth
=item acotanh
=item rad2deg
=item rad2grad
=item deg2rad
=item deg2grad
=item grad2rad
=item grad2deg
=back
If the L<Math::TrulyRandom> module is available, and you've got the time
to wait, the C<truly_random_number> method is available:
[% Math.truly_random_number %]
=head1 AUTHOR
Andy Wardley E<lt>abw@wardley.orgE<gt> L<http://wardley.org/>
=head1 COPYRIGHT
Copyright (C) 1996-2007 Andy Wardley. All Rights Reserved.
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
=head1 SEE ALSO
L<Template::Plugin>
=cut
# Local Variables:
# mode: perl
# perl-indent-level: 4
# indent-tabs-mode: nil
# End:
#
# vim: expandtab shiftwidth=4:
|