diff options
author | Andreas Mair <amair.sob@googlemail.com> | 2006-10-27 12:00:31 +0200 |
---|---|---|
committer | Andreas Mair <amair.sob@googlemail.com> | 2006-10-27 12:00:31 +0200 |
commit | 24b39843b935f8a37b2d9dc909a530b771a61c1f (patch) | |
tree | 73869bd46144e37f32bdc6bff4f93453425f4951 /lib/Template/Plugin/HTML.pm | |
parent | 86c56591df441fad78ac69d2f77196df05305758 (diff) | |
download | vdradmin-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.pm | 197 |
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/&/&/g; + s/</</g; + s/>/>/g; + s/"/"/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: |