The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

MooX::Thunking - Allow Moo attributes to be "thunked"

SYNOPSIS

package Thunking;
use Moo;
use MooX::Thunking;
use Types::TypeTiny -all;
use Types::Standard -all;
has children => (
  is => 'thunked',
  isa => ArrayRef[InstanceOf['Thunking']],
  required => 1,
);

package main;
my $obj;
$obj = Thunking->new(children => sub { [$obj] });

DESCRIPTION

This is a Moo extension. It allows another value for the is parameter to "has" in Moo: "thunked". If used, this will allow you to transparently provide either a real value for the attribute, or a "CodeLike" in Types::TypeTiny that when called will return such a real value.

Note that in earlier versions of this module (up to 0.06), any isa had to pass a CodeLike. This is now taken care of by this module. It will continue to do the right thing if no isa is supplied.

AUTHOR

Ed J

LICENCE

The same terms as Perl itself.