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 with "eq". 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. SEE ALSO Petal