Tail-Tool
view release on metacpan or search on metacpan
lib/Tail/Tool/RegexList.pm view on Meta::CPAN
package Tail::Tool::RegexList;
# Created on: 2011-03-10 16:59:31
# Create by: Ivan Wills
# $Id$
# $Revision$, $HeadURL$, $Date$
# $Revision$, $Source$, $Date$
use strict;
use warnings;
use Moose::Role;
use Moose::Util::TypeConstraints;
use version;
use English qw/ -no_match_vars /;
use Tail::Tool::Regex;
our $VERSION = version->new('0.4.8');
subtype 'ArrayRefRegex'
=> as 'ArrayRef[Tail::Tool::Regex]';
coerce 'ArrayRefRegex'
=> from 'ArrayRef'
=> via {
my $array = $_;
for my $item (@$array) {
my ( $regex, $replace, $enabled ) = ('', '', 1);
if ( $item =~ m{^/[^/]+?/,} ) {
my $rest;
( $regex, $rest ) = split m{/,}, $item, 2;
$regex =~ s{^/}{};
if ( !defined $enabled ) {
$enabled = 1;
}
}
elsif ( ( $regex, $replace, $enabled ) = $item =~ m{^/ ([^/]+?) / ([^/]+?) / (.)? $}xms ) {
$enabled = defined $enabled && $enabled ne '' ? !!$enabled : 1;
}
else {
$regex = $item;
$enabled = 1,
}
$item = Tail::Tool::Regex->new(
regex => $regex,
enabled => $enabled,
$replace
? ( replace => $replace )
: (),
);
}
return $array;
};
coerce 'ArrayRefRegex'
=> from 'RegexpRef'
=> via { [ Tail::Tool::Regex->new( regex => $_, enabled => 1 ) ] };
coerce 'ArrayRefRegex'
=> from 'Str'
=> via { [ Tail::Tool::Regex->new( regex => qr/$_/, enabled => 1 ) ] };
coerce 'ArrayRefRegex'
=> from 'Tail::Tool::Regex'
=> via { [ $_ ] };
has regex => (
is => 'rw',
isa => 'ArrayRefRegex',
coerce => 1,
trigger => \&_set_regex,
);
has replace => (
is => 'rw',
isa => 'Str',
);
sub summarise {
my ($self, $term) = @_;
my @out;
for my $regex ( @{ $self->regex } ) {
push @out, eval { $regex->summarise($term) };
warn "regex not a propper Tail::Tool::Regex object: $@" if $@;
}
return join ', ', @out;
}
sub _set_regex {
( run in 2.361 seconds using v1.01-cache-2.11-cpan-71847e10f99 )