package Mason::Filters::Standard; BEGIN { $Mason::Filters::Standard::VERSION = '2.16'; } use Mason::DynamicFilter; use Mason::Util; use Mason::PluginRole; method Capture ($outref) { sub { $$outref = $_[0]; return '' } } method CompCall ($path, @params) { Mason::DynamicFilter->new( filter => sub { my $m = $self->m; return $m->scomp( $path, @params, yield => $_[0] ); } ); } method NoBlankLines () { sub { my $text = $_[0]; $text =~ s/^\s*\n//mg; return $text; }; } method Repeat ($times) { Mason::DynamicFilter->new( filter => sub { my $content = ''; for ( my $i = 0 ; $i < $times ; $i++ ) { $content .= $_[0]->(); } return $content; } ); } method Trim () { sub { Mason::Util::trim( $_[0] ) } } 1; =pod =head1 NAME Mason::Filters::Standard - Standard filters =head1 DESCRIPTION These filters are automatically composed into L. =head1 FILTERS =over =item Capture ($ref) Uses C<< $m->capture >> to capture the content in I<$ref>. % $.Capture(\my $content) {{ % }} ... do something with $content =item CompCall ($path, @args...) Calls the component with I and I<@args>, just as with C<< $m->scomp >>, with an additional coderef argument C that can be invoked to generate the content. Arguments passed to C can be accessed inside the content via C<@_>. This is the replacement for Mason 1's L. In index.mc: % $.CompCall ('list_items.mi', items => \@items) {{
  • <% $_[0] %>
  • % }} In list_items.mi: <%class> has 'items'; has 'yield'; % foreach my $item (@{$.items}) { <% $.yield->($item) %> % } =item NoBlankLines Remove lines with only whitespace from content. This % $.NoBlankLines {{ hello world % }} yields hello world =item Repeat ($count) Repeat the content block I<$count> times. Note that the block is re-executed each time, which may result in different content. % my $i = 1; % $.Repeat(5) {{ <% $i++ %>
    % }} =item Trim Remove whitespace from the beginning and end of the content. =back =head1 SEE ALSO L, L =head1 AUTHOR Jonathan Swartz =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut __END__