Acme-Be-Modern
view release on metacpan or search on metacpan
lib/Acme/Be/Modern.pm view on Meta::CPAN
use Acme::Be::Modern;
be modern; # all lowercase is actually postmodern :-/
...
=cut
=head1 WARNING
The source filter (defined in the L<Acme::Be::Modern::filter> sub is
simply a naive search-and-replace. Don't use this in any real code.
=head1 IMPLEMENTATION
The implementation is a slight variation of the example in
L<perlfilter>. It's implemented using two functions:
=head2 import
This will be called after L<Acme::Be::Modern> has been loaded. Simply
calls filter_add() with a blessed reference. Now the filter is
activated.
=cut
sub import {
my ($type) = @_;
my ($ref) = [];
filter_add(bless $ref);
}
=head2 filter
The actual filter. Will receive source lines by calling
filter_read(). Any occurrence (and I mean any) of 'be modern' will be
replace with 'use Modern::Perl'.
=cut
sub filter {
my ($self) = @_;
my ($status);
s/be modern/use Modern::Perl/g if ($status = filter_read()) > 0;
$status;
}
=head1 AUTHOR
Søren Lund, C<< <slu at cpan.org> >>
t/boilerplate.t view on Meta::CPAN
#!perl -T
use strict;
use warnings;
use Test::More tests => 3;
sub not_in_file_ok {
my ($filename, %regex) = @_;
open( my $fh, '<', $filename )
or die "couldn't open $filename for reading: $!";
my %violated;
while (my $line = <$fh>) {
while (my ($desc, $regex) = each %regex) {
if ($line =~ $regex) {
push @{$violated{$desc}||=[]}, $.;
t/boilerplate.t view on Meta::CPAN
}
if (%violated) {
fail("$filename contains boilerplate text");
diag "$_ appears on lines @{$violated{$_}}" for keys %violated;
} else {
pass("$filename contains no boilerplate text");
}
}
sub module_boilerplate_ok {
my ($module) = @_;
not_in_file_ok($module =>
'the great new $MODULENAME' => qr/ - The great new /,
'boilerplate description' => qr/Quick summary of what the module/,
'stub function definition' => qr/function[12]/,
);
}
TODO: {
local $TODO = "Need to replace the boilerplate text";
( run in 0.443 second using v1.01-cache-2.11-cpan-4d50c553e7e )