| Template-Declare documentation | Contained in the Template-Declare distribution. |
Template::Declare::TagSet - Base class for tag sets used by Template::Declare::Tags
package My::TagSet;
use base 'Template::Declare::TagSet';
# returns an array ref for the tag names
sub get_tag_list {
[ qw(
html body tr td table
base meta link hr
)]
}
# prevents potential naming conflicts:
sub get_alternate_spelling {
my ($self, $tag) = @_;
return 'row' if $tag eq 'tr';
return 'cell' if $tag eq 'td';
}
# Specifies whether "<tag></tag>" can be
# combined to "<tag />":
sub can_combine_empty_tags {
my ($self, $tag) = @_;
$tag =~ /^ (?: base | meta | link | hr ) $/x;
}
Template::Declare::TagSet is the base class for declaring packages of Template::Delcare tags. If you need to create new tags for use in your templates, this is the base class for you! Review the source code of Template::Declare::TagSet::HTML for a useful example.
my $tag_set = Template::Declare::TagSet->new({
package => 'Foo::Bar',
namespace => undef,
});
Constructor created by Class::Accessor::Fast, accepting an optional hash
reference of parameters.
my $list = $tag_set->get_tag_list();
Returns an array ref for the tag names offered by a tag set.
$bool = $obj->get_alternate_spelling($tag);
Returns true if a tag has an alternative spelling. Basically it provides a way
to work around naming conflicts. For example, the tr tag in HTML conflicts
with Perl's tr operator, and the template tag in XUL conflicts with the
template sub exported by Template::Declare::Tags.
This class has two read-only accessors:
my $package = $obj->package();
Retrieves the value of the package option set via the constructor.
my $namespace = $obj->namespace();
Retrieves the value of the namespace option set via the constructor.
Agent Zhang <agentzh@yahoo.cn>.
| Template-Declare documentation | Contained in the Template-Declare distribution. |
package Template::Declare::TagSet; use strict; use warnings; use base qw(Class::Accessor::Fast); __PACKAGE__->mk_ro_accessors( qw{ namespace package } ); sub get_alternate_spelling { undef; } sub get_tag_list { []; } # specify whether "<tag></tag>" can be combined to "<tag />" sub can_combine_empty_tags { 1; } 1; __END__