1 Apr 21:41
Re: Petal::Utils patch
What a crappy patch. Let me try this again... On Fri, 2005-04-01 at 13:24 -0600, Warren Smith wrote: > This is against 0.06. > > This adds several new modifiers: > count: counts items in array > dollar: formats string as us dollar amount > percent: formats string as percentage (%.2f%%) > telephone: formats strings as NANPA phone numbers > include: include file with dynamic name > > I added the tests, but it looks like the docmentation may be > auto-generated, so I didn't touch that. > > Questions, comments, complaints welcome. > > -Warren
diff -rN ./lib/Petal/Utils/Count.pm ../Petal-Utils-0.07/lib/Petal/Utils/Count.pm
0a1,45
> package Petal::Utils::Count;
>
> use strict;
> use warnings::register;
>
> use Carp;
>
> use base qw( Petal::Utils::Base );
>
> use constant name => 'count';
> use constant aliases => qw();
>
> our $VERSION = ((require Petal::Utils), $Petal::Utils::VERSION)[1];
> our $REVISION = (split(/ /, ' $Revision: 1.3 $ '))[2];
>
> sub process {
> my $class = shift;
> my $hash = shift;
> my $args = shift || confess( "'count' expects 1 argument (got nothing)!" );
>
> my $value = $hash->fetch($args);
> confess("'count' expects an array!") unless ref $value eq 'ARRAY';
>
> return scalar(@$value);
> }
>
>
>
> 1;
>
> __END__
>
> Description: The count modifier simply counts the elements in the given
> array. Very useful for "x row(s) returned" in reports.
>
>
> Basic Usage:
> count: variable
> return count of members in variable
>
> Example:
> <p petal:content="count: resultset">0</p> row(s) returned.
>
> See also:
> Test template t/data/27__count.html for more examples of use.
diff -rN ./lib/Petal/Utils/Dollar.pm ../Petal-Utils-0.07/lib/Petal/Utils/Dollar.pm
0a1,42
> package Petal::Utils::Dollar;
>
> use strict;
> use warnings::register;
>
> use Carp;
>
> use base qw( Petal::Utils::Base );
>
> use constant name => 'dollar';
> use constant aliases => qw();
>
> our $VERSION = ((require Petal::Utils), $Petal::Utils::VERSION)[1];
> our $REVISION = (split(/ /, ' $Revision: 1.3 $ '))[2];
>
> sub process {
> my $class = shift;
> my $hash = shift;
> my $args = shift || confess( "'dollar' expects 2 arguments (got nothing)!" );
>
> my $value = $hash->fetch($args);
> return sprintf('$%.2f', $value);
> }
>
>
>
> 1;
>
> __END__
>
> Description: The dollar modifier returns the argument formatted as US dollars
>
>
> Basic Usage:
> dollar: amount
> return amount formatted as US dollars ("$%.2f")
>
> Example:
> <p petal:content="dollar: total">$2.00</p>
>
> See also:
> Test template t/data/28__dollar.html for more examples of use.
diff -rN ./lib/Petal/Utils/Include.pm ../Petal-Utils-0.07/lib/Petal/Utils/Include.pm
0a1,46
> package Petal::Utils::Include;
>
> use strict;
> use warnings::register;
>
> use Carp;
> use Petal;
> use Petal::Hash::String;
>
> use base qw( Petal::Utils::Base );
>
> use constant name => 'include';
> use constant aliases => qw();
>
> our $VERSION = ((require Petal::Utils), $Petal::Utils::VERSION)[1];
> our $REVISION = (split(/ /, ' $Revision: 1.3 $ '))[2];
>
> sub process {
> my $class = shift;
> my $hash = shift;
> my $args = shift || confess( "'include' expects 1 argument (got nothing)!" );
>
> my $fn = Petal::Hash::String->process($hash, $args);
> my $template = Petal->new($fn);
> return $template->process($hash);
> }
>
>
>
> 1;
>
> __END__
>
> Description: The include modifier includes a file and processes it. Useful
> for including smaller files into a larger one. It differs from METAL macros
> in that the filename can be a variable.
>
> Basic Usage:
> include: filename
> Includes and processes given filename for inclusion
>
> Example:
> <p petal:content="structure include: ${template}"></p>
>
> See also:
> Test template t/data/29__include.html for more examples of use.
diff -rN ./lib/Petal/Utils/Percent.pm ../Petal-Utils-0.07/lib/Petal/Utils/Percent.pm
0a1,46
> package Petal::Utils::Percent;
>
> use strict;
> use warnings::register;
>
> use Carp;
>
> use base qw( Petal::Utils::Base );
>
> use constant name => 'percent';
> use constant aliases => qw();
>
> our $VERSION = ((require Petal::Utils), $Petal::Utils::VERSION)[1];
> our $REVISION = (split(/ /, ' $Revision: 1.3 $ '))[2];
>
> sub process {
> my $class = shift;
> my $hash = shift;
> my $args = shift || confess( "'count' expects 2 arguments (got nothing)!" );
>
> my $value = $hash->fetch($args);
> $value *= 100 if $value < 1;
> return sprintf('%.2f%%', $value);
> }
>
>
>
> 1;
>
> __END__
>
> Description: The percent modifier formats argument as a percent. Tries to be
> intelligent in that if the given percent is less than 1 (i.e. 0.755), it returns
> 75.50%. If the percent is greater than or equal to one (i.e. 75), percent:
> returns the percent as a whole value (75.00%).
>
> Basic Usage:
> percent: variable
> return variable formatted as a percent
>
> Example:
> <p petal:content="percent: '0.75'">75.00%</p>
> <p petal:content="percent: '75.0'">75.00%</p>
>
> See also:
> Test template t/data/30__percent.html for more examples of use.
diff -rN ./lib/Petal/Utils/Telephone.pm ../Petal-Utils-0.07/lib/Petal/Utils/Telephone.pm
0a1,44
> package Petal::Utils::Telephone;
>
> use strict;
> use warnings::register;
>
> use Carp;
>
> use base qw( Petal::Utils::Base );
>
> use constant name => 'telephone';
> use constant aliases => qw();
>
> our $VERSION = ((require Petal::Utils), $Petal::Utils::VERSION)[1];
> our $REVISION = (split(/ /, ' $Revision: 1.3 $ '))[2];
>
> sub process {
> my $class = shift;
> my $hash = shift;
> my $args = shift || confess( "'telephone' expects 2 arguments (got nothing)!" );
>
> my $value = $hash->fetch($args);
> $value =~ s/[^0-9]//g;
> $value =~ s/(...)(...)(....)/($1) $2-$3/;
> return $value;
> }
>
>
>
> 1;
>
> __END__
>
> Description: The telephone modifier formats argument as a NANPA telephone
> number: (NPA) NXX-XXXX.
>
> Basic Usage:
> telephone: variable
> return variable formatted as a NANPA telephone number
>
> Example:
> <p petal:content="telephone: 8888888888">(888) 888-8888</p>
>
> See also:
> Test template t/data/30__telephone.html for more examples of use.
diff -rN ./lib/Petal/Utils.pm ../Petal-Utils-0.07/lib/Petal/Utils.pm
35c35
< ':all' => [qw( :default :hash :debug )],
---
> ':all' => [qw( :default :hash :debug :file )],
37c37
< ':text' => [qw( UpperCase LowerCase UC_First Substr Printf )],
---
> ':text' => [qw( UpperCase LowerCase UC_First Substr Printf Dollar Percent Telephone )],
40c40
< ':list' => [qw( Sort Limit Limitr)],
---
> ':list' => [qw( Sort Limit Limitr Count)],
42a43
> ':file' => [qw( Include )],
diff -rN ./MANIFEST ../Petal-Utils-0.07/MANIFEST
61a62,77
> lib/Petal/Utils/Count.pm
> lib/Petal/Utils/Dollar.pm
> lib/Petal/Utils/Include.pm
> lib/Petal/Utils/Percent.pm
> lib/Petal/Utils/Telephone.pm
> t/27__Count.t
> t/28__Dollar.t
> t/29__Include.t
> t/30__Percent.t
> t/31__Telephone.t
> t/data/27__count.html
> t/data/28__dollar.html
> t/data/29__include.html
> t/data/29__included.html
> t/data/30__percent.html
> t/data/31__telephone.html
Binary files ./.MANIFEST.swp and ../Petal-Utils-0.07/.MANIFEST.swp differ
diff -rN ./t/27__Count.t ../Petal-Utils-0.07/t/27__Count.t
0a1,24
> #!/usr/bin/perl
>
> ##
> ## Tests for Petal::Utils::Count module
> ##
>
> use blib;
> use strict;
>
> use Test::More qw(no_plan);
> use Carp;
> use Data::Dumper;
>
> use t::LoadPetal;
> use Petal::Utils qw( :list );
>
> my $rows = [ 1 .. 10 ];
>
> my $template = Petal->new('27__count.html');
> my $out = $template->process( {
> rows => $rows,
> } );
>
> like($out, qr/count1: 10\n/, 'count1');
diff -rN ./t/28__Dollar.t ../Petal-Utils-0.07/t/28__Dollar.t
0a1,22
> #!/usr/bin/perl
>
> ##
> ## Tests for Petal::Utils::Dollar module
> ##
>
> use blib;
> use strict;
>
> use Test::More qw(no_plan);
> use Carp;
> use Data::Dumper;
>
> use t::LoadPetal;
> use Petal::Utils qw( :text );
>
> my $template = Petal->new('28__dollar.html');
> my $out = $template->process( {
> amount => 3.45
> } );
>
> like($out, qr/dollar1: \$3.45\n/, 'amount1');
diff -rN ./t/29__Include.t ../Petal-Utils-0.07/t/29__Include.t
0a1,25
> #!/usr/bin/perl
>
> ##
> ## Tests for Petal::Utils::Include module
> ##
>
> use blib;
> use strict;
>
> use Test::More qw(no_plan);
> use Carp;
> use Data::Dumper;
>
> use t::LoadPetal;
> use Petal::Utils qw( :file );
>
> my $template = Petal->new('29__include.html');
>
> my $out = $template->process( {
> filename => '29__included.html'
> } );
>
> like($out, qr/include1:\s+Hello, world!/, 'include1');
>
>
Binary files ./t/.29__Include.t.swp and ../Petal-Utils-0.07/t/.29__Include.t.swp differ
diff -rN ./t/30__Percent.t ../Petal-Utils-0.07/t/30__Percent.t
0a1,24
> #!/usr/bin/perl
>
> ##
> ## Tests for Petal::Utils::Percent module
> ##
>
> use blib;
> use strict;
>
> use Test::More qw(no_plan);
> use Carp;
> use Data::Dumper;
>
> use t::LoadPetal;
> use Petal::Utils qw( :text );
>
> my $template = Petal->new('30__percent.html');
> my $out = $template->process( {
> percent1 => 0.75,
> percent2 => 75.5
> } );
>
> like($out, qr/percent1: 75\.00\%\n/, 'percent1');
> like($out, qr/percent2: 75\.50\%\n/, 'percent2');
diff -rN ./t/31__Telephone.t ../Petal-Utils-0.07/t/31__Telephone.t
0a1,24
> #!/usr/bin/perl
>
> ##
> ## Tests for Petal::Utils::Telephone module
> ##
>
> use blib;
> use strict;
>
> use Test::More qw(no_plan);
> use Carp;
> use Data::Dumper;
>
> use t::LoadPetal;
> use Petal::Utils qw( :text );
>
> my $template = Petal->new('31__telephone.html');
> my $out = $template->process( {
> telephone1 => '333-333-3333',
> telephone2 => '4445556666'
> } );
>
> like($out, qr/telephone1: \(333\) 333-3333/, 'telephone1');
> like($out, qr/telephone2: \(444\) 555-6666/, 'telephone2');
diff -rN ./t/data/27__count.html ../Petal-Utils-0.07/t/data/27__count.html
0a1,13
> <?xml version="1.0" encoding="utf-8"?>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
>
> <html xmlns:tal="http://purl.org/petal/1.0/">
> <body>
> <!--? Count -->
> <div>
> count1: <p tal:replace="count: rows">rows</p>
> </div>
> </body>
> </html>
>
diff -rN ./t/data/28__dollar.html ../Petal-Utils-0.07/t/data/28__dollar.html
0a1,13
> <?xml version="1.0" encoding="utf-8"?>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
>
> <html xmlns:tal="http://purl.org/petal/1.0/">
> <body>
> <!--? Dollar -->
> <div>
> dollar1: <p tal:replace="dollar: amount">amount</p>
> </div>
> </body>
> </html>
>
diff -rN ./t/data/29__included.html ../Petal-Utils-0.07/t/data/29__included.html
0a1,3
> <div petal:omit-tag="">
> Hello, world!
> </div>
Binary files ./t/data/.29__included.html.swp and
../Petal-Utils-0.07/t/data/.29__included.html.swp differ
diff -rN ./t/data/29__include.html ../Petal-Utils-0.07/t/data/29__include.html
0a1,13
> <?xml version="1.0" encoding="utf-8"?>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
>
> <html xmlns:tal="http://purl.org/petal/1.0/">
> <body>
> <!--? Printf -->
> <div>
> include1: <p tal:replace="structure include: ${filename}">included file</p>
> </div>
> </body>
> </html>
>
Binary files ./t/data/.29__include.html.swp and
../Petal-Utils-0.07/t/data/.29__include.html.swp differ
diff -rN ./t/data/30__percent.html ../Petal-Utils-0.07/t/data/30__percent.html
0a1,14
> <?xml version="1.0" encoding="utf-8"?>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
>
> <html xmlns:tal="http://purl.org/petal/1.0/">
> <body>
> <!--? Percent -->
> <div>
> percent1: <p tal:replace="percent: percent1">percent</p>
> percent2: <p tal:replace="percent: percent2">percent</p>
> </div>
> </body>
> </html>
>
diff -rN ./t/data/31__telephone.html ../Petal-Utils-0.07/t/data/31__telephone.html
0a1,14
> <?xml version="1.0" encoding="utf-8"?>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
>
> <html xmlns:tal="http://purl.org/petal/1.0/">
> <body>
> <!--? Telephone -->
> <div>
> telephone1: <p tal:replace="telephone: telephone1">number</p>
> telephone2: <p tal:replace="telephone: telephone2">number</p>
> </div>
> </body>
> </html>
>
RSS Feed