NAME

BusyBird::Filter - common utilities about status filters

SYNOPSIS

use BusyBird;
use BusyBird::Filter qw(:all);

my $drop_low_level = filter_map sub {
    my $status = shift;
    return $status->{busybird}{level} > 5 ? ($status) : ();
};

my $set_level = filter_each sub {
    my $status = shift;
    $status->{busybird}{level} = 10;
};

timeline("home")->add_filter($drop_low_level);
timeline("home")->add_filter($set_level);

DESCRIPTION

This module provides some functions to create status filters.

A status filter is a subroutine reference to process an array-ref of statuses. See BusyBird::Timeline's add_filter() method for details about status filters.

Pre-defined Filters

Some modules provide pre-defined filters for you.

BusyBird::Filter::Twitter

Filters and transformations useful when you import statuses from Twitter.

EXPORTABLE FUNCTIONS

You can import any of the functions below. None of them is exported by default. Import ":all" to import all functions at once.

$filter = filter_each($func)

Creates a synchronous status filter that modifies each of the statuses destructively.

$func is a subroutine reference that takes a single status. For each status, $func is called like

$func->($status)

$func is supposed to modify the given $status destructively. The result of the $filter is the list of modified statuses.

Return value from $func is ignored.

$filter = filter_map($func)

Creates a synchronous status filter that maps each of the statuses. This is similar to Perl's built-in map() function.

$func is a subroutine reference that takes a single status. For each status, $func is called like

@mapped_statuses = $func->($status)

$func is supposed to return a list of statuses. The result of the $filter is all statuses collected from the $func.

Note that the $status given to $func is a deep clone of the original status. Even if you modify $status in $func, the original status is intact.

$filter = filter_grep($func)

Creates a synchronous status filter that picks up statuses by $func This is simalar to Perl's built-in grep() function.

$func is a subroutine reference that is called for each input status. $func is called in scalar context as in:

$result = $func->($status)

If $result is true, that $status is passed to the next. If $result is false, the $status is filtered out.

You should not modify $status within $func.

SEE ALSO

AUTHOR

Toshio Ito <toshioito [at] cpan.org>