NAME
Petal::Utils - Useful template modifiers for Petal.
SYNOPSIS
# install the default set of Petal modifiers:
use Petal::Utils;
# you can also install modifiers manually:
Petal::Utils->install( 'some_modifier', ':some_set' );
# see below for modifiers available & template syntax
DESCRIPTION
The Petal::Utils package contains commonly used Petal modifiers (or plugins), and bundles them with an easy-to-use installation interface. By default, a set of modifiers are installed into Petal when you use this module. You can change which modifiers are installed by naming them after the use statement:
# use the default set:
use Petal::Utils qw( :default );
# use the date set of modifiers:
use Petal::Utils qw( :date );
# use only named modifiers, plus the debug set:
use Petal::Utils qw( UpperCase Date :debug );
# don't install any modifiers
use Petal::Utils qw();
You'll find a list of plugin sets throughout this document. You can also get a complete list by looking at the variable:
%Petal::Utils::PLUGIN_SET;
For details on how the plugins are installed, see the "Advanced Petal" section of the Petal documentation.
MODIFIERS
Each modifier is listed under the set it belongs to.
:text
- lowercase:, lc: $string
-
Make the entire string lowercase.
<p tal:content="lc: $string">lower</p>
- uppercase:, uc: $string
-
Make the entire string uppercase.
<p tal:content="uc: $string">upper</p>
- uc_first: $string
-
Make the first letter of the string uppercase.
<p tal:content="uc_first: $string">uc_first</p>
:date
- date: $date
-
Convert a time() integer to a date string using Date::Format.
<span tal:replace="date: $date">Jan 1 1970 01:00:01</span>
- us_date: $date
-
Convert an international date stamp (e.g., yyyymmdd, yyyy-mm-dd, yyyy/mm/dd) to US format (mm/dd/yyyy).
<p tal:content="us_date: $date">2003-09-05</p>
:logic
- if: $expr1 then: $expr2 else: $expr3
-
Do an if/then/else test and return the value of the expression executed. Truthfulness of $expr1 is according to Perl (e.g., non-zero, non-empty string).
<p tal:attributes="class if: on_a_page then: a_class else: another_class"> Some text here... </p>
- or: $expr1 $expr2
-
Do a logical or. Truthfulness is according to Perl (e.g., non-zero, non-empty string).
<p tal:if="or: $first $second"> first or second = <span tal:replace="or: $first $second">or</span> </p>
- and: $expr1 $expr2
-
Do a logical and. Truthfulness is according to Perl (e.g., non-zero, non-empty string).
first and second = <span tal:replace="and: $first $second">and</span>
- equal:, eq: $expr1 $expr2
-
Test for equality. Numbers are compared with
==
, strings witheq
. Truthfulness is according to Perl (e.g., non-zero, non-empty string).first eq second = <span tal:replace="eq: $first $second">equal</span>
- like: $expr $regex
-
Test for equality to a regular expression (see perlre).
name like regex = <span tal:replace="like: $name ^Will.+m">like</span>
:list
- sort: $list
-
Sort the values in a list before returning it.
<ul> <li tal:repeat="item sort: $array_ref">$item</li> </ul>
:hash
- keys: $hash
-
Return a list of keys for a hashref. Note: It appears that values cannot be accessed with dynamic keys. If you need the keys and values, use "each:".
<ul> <li tal:repeat="key keys: $hash_ref"><span tal:replace="key">key</span></li> </ul>
- each: $hash
-
Return a list of key/value pairs for a hashref.
<ul> <li tal:repeat="item each: $hash_ref"> <span tal:replace="item/key">key</span> => <span tal:replace="item/val">value</span> </li> </ul>
:uri
- uri_escape: $expr
-
Use URI::Escape's uri_escape() to escape the return value of the expression.
<a href="http://foo/get.html?item=${uri_escape: item/key}">get $item/key</a>
:debug
- dump: $expr
-
Dump the data strcture of the value given.
dump name: <span tal:replace="dump: name">dump</span>
SUPERSETS
At the time of writing, the following supersets were available:
':none' => [],
':all' => [qw( :default :hash :debug )],
':default' => [qw( :text :date :logic :list )],
See %Petal::Utils::PLUGIN_SET
for an up-to-date list.
AUTHORS
William McKee <william@knowmad.com>, and Steve Purkis <spurkis@cpan.org>
COPYRIGHT
Copyright (c) 2003-2004 William McKee & Steve Purkis.
This module is free software and is distributed under the same license as Perl itself. Use it at your own risk.
THANKS
Thanks to Jean-Michel Hiver for making Petal available to the Perl community.