NAME

Data::Focus::Lens::Composite - a lens composed of multiple lenses

SYNOPSIS

my $composite1 = Data::Focus::Lens::Composite->new($lens1, $lens2, $lens3);

## or

my $composite2 = $lens1 . $lens2 . $lens3;

## Then, you can write

my $value1 = focus($target)->get($composite1);
my $value2 = focus($target)->get($composite2);

## instead of

my $value3 = focus($target)->get($lens1, $lens2, $lens3);

## $value1 == $value2 == $value3

DESCRIPTION

Data::Focus::Lens::Composite is a Data::Focus::Lens class that is composed of multiple lenses.

CLASS METHODS

$composite = Data::Focus::Lens::Composite->new(@lenses)

Compose @lenses to create a $composite lens.

@lenses are composed in the same order as you pass them to into(), get() etc methods of Data::Focus.

If some of the @lenses are not Data::Focus::Lens objects, they are coerced to lenses. See "Lens Coercion" in Data::Focus for detail.

If @lenses is empty, it returns a no-op lens.

OBJECT METHODS

apply_lens

See Data::Focus::Lens.

AUTHOR

Toshio Ito, <toshioito at cpan.org>