Hi all,

I seem to be missing something wrt
MooseX::AttributeHelpers::MethodProvider::ImmutableHash (and its
derivatives).

For a list, I can get the contents into an array using the provided
'elements' method:

package Class;
use Moose;
use MooseX::AttributeHelpers;

has 'values' => (isa => 'ArrayRef[Str]',
                metaclass => 'Collection::List',
                isa => 'ArrayRef[Str]',
                builder => '_build_values',
                provides =>
                {
                  'elements' => 'all_values',
#                  'count' => 'count_values',
#                  'get => 'get_value',
                },
                );

my @ary = $obj->all_values;


However, the equivalent for a hash seems to be

has 'options' => (is => 'ro',    # strike 1: accessor
                isa => 'HashRef[Str]',
                metaclass => 'Collection::ImmutableHash,
                isa => 'HashRef[Str]',
                builder => '_build_options',
                provides =>
                {
                  'keys' => 'all_option_keys',
                  'get => 'get_option',
                },
                );

my %hsh = %{$obj->options}; # strike 2: dereference

which is somewhat kludgier. And feels close to vanilla perl 5. I
thought the 'kv' provided method would do this, but this seems
to return an array of pairs, rather than a flat list.

Am I missing something, or just picking nits, or is there an
opportunity to slightly improve the API there?


Cheers,
-- 
Jurgen Pletinckx

Reply via email to