The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

SQL::Translator::Role::ListAttr - context-sensitive list attributes

SYNOPSIS

    package Foo;
        use Moo;
        use SQL::Translator::Role::ListAttr;

        with ListAttr foo => ( uniq => 1, append => 1 );

DESCRIPTION

This package provides a variable Moo::Role for context-sensitive list attributes.

FUNCTIONS

ListAttr $name => %parameters;

Returns a Moo::Role providing an arrayref attribute named $name, and wrapping the accessor to provide context-sensitivity both for setting and getting. If no builder or default is provided, the default value is the empty list.

On setting, the arguments are parsed using "parse_list_arg" in SQL::Translator::Utils, and the accessor will return an array reference or a list, depending on context.

Parameters

append

If true, the setter will append arguments to the existing ones, rather than replacing them.

uniq

If true, duplicate items will be removed, keeping the first one seen.

may_throw

If accessing the attribute might throw an exception (e.g. from a builder or isa check), this should be set to make the accessor store the exception using SQL::Translator::Role::Error and return undef.

undef_if_empty

If true, and the list is empty, the accessor will return undef instead of a reference to an empty in scalar context.

Unknown parameters are passed through to the has call for the attribute.

SEE ALSO

SQL::Translator::Utils
SQL::Translator::Role::Error