From efb4418fca44d2063378f9b98dc708cb7e75e7b6 Mon Sep 17 00:00:00 2001
From: Frank Lichtenheld
Date: Sun, 15 Mar 2009 18:43:44 +0100
Subject: [PATCH] Make the sponsors note more flexible
It is now possible to define more than one sponsor which will be used
in a round-robin fashion.
---
lib/Template/Plugin/Math.pm | 242 ++++++++++++++++++++++++++++++++++++
templates/config.tmpl | 14 ++-
templates/html/foot.tmpl | 5 +-
3 files changed, 255 insertions(+), 6 deletions(-)
create mode 100644 lib/Template/Plugin/Math.pm
diff --git a/lib/Template/Plugin/Math.pm b/lib/Template/Plugin/Math.pm
new file mode 100644
index 0000000..ff40004
--- /dev/null
+++ b/lib/Template/Plugin/Math.pm
@@ -0,0 +1,242 @@
+#============================================================= -*-Perl-*-
+#
+# Template::Plugin::Math
+#
+# DESCRIPTION
+# Plugin implementing numerous mathematical functions.
+#
+# AUTHORS
+# Andy Wardley
+#
+# 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 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 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 module is available, and you've got the time
+to wait, the C method is available:
+
+ [% Math.truly_random_number %]
+
+=head1 AUTHOR
+
+Andy Wardley Eabw@wardley.orgE L
+
+=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
+
+=cut
+
+# Local Variables:
+# mode: perl
+# perl-indent-level: 4
+# indent-tabs-mode: nil
+# End:
+#
+# vim: expandtab shiftwidth=4:
diff --git a/templates/config.tmpl b/templates/config.tmpl
index 5ce7cc7..132db62 100644
--- a/templates/config.tmpl
+++ b/templates/config.tmpl
@@ -48,10 +48,16 @@
mail => 'webmaster@debian.org',
}
trademarknotes = g('%s is a trademark of %s', organisation, trademark.url, trademark.name)
-# sponsor = {
-# url => 'http://example.invalid/',
-# name => 'Example Sponsor, Inc.',
-# }
+ sponsors = [
+ {
+ url => 'http://example.invalid/',
+ name => 'Example Sponsor, Inc.',
+ },
+ {
+ url => 'http://example2.invalid/',
+ name => 'Example2 Sponsor, Inc.',
+ },
+ ]
-%]
[%-
# possible values for importance: high, normal, low
diff --git a/templates/html/foot.tmpl b/templates/html/foot.tmpl
index cbabd66..5a98997 100644
--- a/templates/html/foot.tmpl
+++ b/templates/html/foot.tmpl
@@ -35,9 +35,10 @@ Total page evaluation took [% benchmark %]
[% g('Learn more about this site') %].
[% END %]
-[% IF sponsor.name %]
+[% IF sponsors.size %]
[% END %]
--
2.39.2