Aniki

 view release on metacpan or  search on metacpan

lib/Aniki/Filter.pm  view on Meta::CPAN

package Aniki::Filter;
use 5.014002;

use namespace::autoclean;
use Mouse v2.4.5;

has global_inflators => (
    is      => 'ro',
    default => sub { [] },
);

has global_deflators => (
    is      => 'ro',
    default => sub { [] },
);

has global_triggers => (
    is      => 'ro',
    default => sub { +{} },
);

has table_inflators => (
    is      => 'ro',
    default => sub { +{} },
);

has table_deflators => (
    is      => 'ro',
    default => sub { +{} },
);

has table_triggers => (
    is      => 'ro',
    default => sub { +{} },
);

sub _identity { $_[0] }
sub _normalize_column2rx { ref $_[0] eq 'Regexp' ? $_[0] : qr/\A\Q$_[0]\E\z/m }

sub add_global_inflator {
    my ($self, $column, $code) = @_;
    my $rx = _normalize_column2rx($column);
    push @{ $self->global_inflators } => [$rx, $code];
}

sub add_global_deflator {
    my ($self, $column, $code) = @_;
    my $rx = _normalize_column2rx($column);
    push @{ $self->global_deflators } => [$rx, $code];
}

sub add_global_trigger {
    my ($self, $event, $code) = @_;
    push @{ $self->global_triggers->{$event} } => $code;
}

sub add_table_inflator {
    my ($self, $table_name, $column, $code) = @_;
    my $rx = _normalize_column2rx($column);
    push @{ $self->table_inflators->{$table_name} } => [$rx, $code];
}

sub add_table_deflator {
    my ($self, $table_name, $column, $code) = @_;



( run in 0.930 second using v1.01-cache-2.11-cpan-5a3173703d6 )