summaryrefslogtreecommitdiff
path: root/lib/Template/Plugin/HTML.pm
diff options
context:
space:
mode:
authorAndreas Mair <amair.sob@googlemail.com>2006-10-27 12:00:31 +0200
committerAndreas Mair <amair.sob@googlemail.com>2006-10-27 12:00:31 +0200
commit24b39843b935f8a37b2d9dc909a530b771a61c1f (patch)
tree73869bd46144e37f32bdc6bff4f93453425f4951 /lib/Template/Plugin/HTML.pm
parent86c56591df441fad78ac69d2f77196df05305758 (diff)
downloadvdradmin-am-3.5.0beta.tar.gz
vdradmin-am-3.5.0beta.tar.bz2
2006-10-27: 3.5.0betav3.5.0beta
- Added: script to convert existing AutoTimers to epgsearch (autotimer2searchtimer.pl). - Added: Hack for MSIE to always show vertical scroller to prevent horizontal scroller (Submitted by Udo Richter). - Added: Support for epgsearch plugin; AutoTimer now considered deprecated and unsupported. - Minor bugfixes
Diffstat (limited to 'lib/Template/Plugin/HTML.pm')
-rw-r--r--lib/Template/Plugin/HTML.pm197
1 files changed, 197 insertions, 0 deletions
diff --git a/lib/Template/Plugin/HTML.pm b/lib/Template/Plugin/HTML.pm
new file mode 100644
index 0000000..4c4d7f0
--- /dev/null
+++ b/lib/Template/Plugin/HTML.pm
@@ -0,0 +1,197 @@
+#============================================================= -*-Perl-*-
+#
+# Template::Plugin::HTML
+#
+# DESCRIPTION
+#
+# Template Toolkit plugin providing useful functionality for generating
+# HTML.
+#
+# AUTHOR
+# Andy Wardley <abw@kfs.org>
+#
+# COPYRIGHT
+# Copyright (C) 1996-2001 Andy Wardley. All Rights Reserved.
+# Copyright (C) 1998-2001 Canon Research Centre Europe Ltd.
+#
+# This module is free software; you can redistribute it and/or
+# modify it under the same terms as Perl itself.
+#
+#----------------------------------------------------------------------------
+#
+# $Id: HTML.pm,v 1.1 2006/10/27 10:00:31 amair Exp $
+#
+#============================================================================
+
+package Template::Plugin::HTML;
+
+require 5.004;
+
+use strict;
+use vars qw( $VERSION );
+use base qw( Template::Plugin );
+use Template::Plugin;
+
+$VERSION = sprintf("%d.%02d", q$Revision: 1.1 $ =~ /(\d+)\.(\d+)/);
+
+sub new {
+ my ($class, $context, @args) = @_;
+ my $hash = ref $args[-1] eq 'HASH' ? pop @args : { };
+ bless {
+ _SORTED => $hash->{ sorted } || 0,
+ }, $class;
+}
+
+sub element {
+ my ($self, $name, $attr) = @_;
+ ($name, $attr) = %$name if ref $name eq 'HASH';
+ return '' unless defined $name and length $name;
+ $attr = $self->attributes($attr);
+ $attr = " $attr" if $attr;
+ return "<$name$attr>";
+}
+
+sub attributes {
+ my ($self, $hash) = @_;
+ return '' unless UNIVERSAL::isa($hash, 'HASH');
+
+ my @keys = keys %$hash;
+ @keys = sort @keys if $self->{ _SORTED };
+
+ join(' ', map {
+ "$_=\"" . $self->escape( $hash->{ $_ } ) . '"';
+ } @keys);
+}
+
+sub escape {
+ my ($self, $text) = @_;
+ for ($text) {
+ s/&/&amp;/g;
+ s/</&lt;/g;
+ s/>/&gt;/g;
+ s/"/&quot;/g;
+ }
+ $text;
+}
+
+sub url {
+ my ($self, $text) = @_;
+ return undef unless defined $text;
+ $text =~ s/([^a-zA-Z0-9_.-])/uc sprintf("%%%02x",ord($1))/eg;
+ return $text;
+}
+
+
+1;
+
+__END__
+
+
+#------------------------------------------------------------------------
+# IMPORTANT NOTE
+# This documentation is generated automatically from source
+# templates. Any changes you make here may be lost.
+#
+# The 'docsrc' documentation source bundle is available for download
+# from http://www.template-toolkit.org/docs.html and contains all
+# the source templates, XML files, scripts, etc., from which the
+# documentation for the Template Toolkit is built.
+#------------------------------------------------------------------------
+
+=head1 NAME
+
+Template::Plugin::HTML - Plugin to create HTML elements
+
+=head1 SYNOPSIS
+
+ [% USE HTML %]
+
+ [% HTML.escape("if (a < b && c > d) ..." %]
+
+ [% HTML.element(table => { border => 1, cellpadding => 2 }) %]
+
+ [% HTML.attributes(border => 1, cellpadding => 2) %]
+
+=head1 DESCRIPTION
+
+The HTML plugin is very new and very basic, implementing a few useful
+methods for generating HTML. It is likely to be extended in the future
+or integrated with a larger project to generate HTML elements in a generic
+way (as discussed recently on the mod_perl mailing list).
+
+=head1 METHODS
+
+=head2 escape(text)
+
+Returns the source text with any HTML reserved characters such as
+E<lt>, E<gt>, etc., correctly esacped to their entity equivalents.
+
+=head2 attributes(hash)
+
+Returns the elements of the hash array passed by reference correctly
+formatted (e.g. values quoted and correctly escaped) as attributes for
+an HTML element.
+
+=head2 element(type, attributes)
+
+Generates an HTML element of the specified type and with the attributes
+provided as an optional hash array reference as the second argument or
+as named arguments.
+
+ [% HTML.element(table => { border => 1, cellpadding => 2 }) %]
+ [% HTML.element('table', border=1, cellpadding=2) %]
+ [% HTML.element(table => attribs) %]
+
+=head1 DEBUGGING
+
+The HTML plugin accepts a 'sorted' option as a constructor argument
+which, when set to any true value, causes the attributes generated by
+the attributes() method (either directly or via element()) to be
+returned in sorted order. Order of attributes isn't important in
+HTML, but this is provided mainly for the purposes of debugging where
+it is useful to have attributes generated in a deterministic order
+rather than whatever order the hash happened to feel like returning
+the keys in.
+
+ [% USE HTML(sorted=1) %]
+ [% HTML.element( foo => { charlie => 1, bravo => 2, alpha => 3 } ) %]
+
+generates:
+
+ <foo alpha="3" bravo="2" charlie="1">
+
+=head1 AUTHOR
+
+Andy Wardley E<lt>abw@andywardley.comE<gt>
+
+L<http://www.andywardley.com/|http://www.andywardley.com/>
+
+
+
+
+=head1 VERSION
+
+2.57, distributed as part of the
+Template Toolkit version 2.14, released on 04 October 2004.
+
+=head1 COPYRIGHT
+
+ Copyright (C) 1996-2004 Andy Wardley. All Rights Reserved.
+ Copyright (C) 1998-2002 Canon Research Centre Europe Ltd.
+
+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|Template::Plugin>
+
+=cut
+
+# Local Variables:
+# mode: perl
+# perl-indent-level: 4
+# indent-tabs-mode: nil
+# End:
+#
+# vim: expandtab shiftwidth=4: