---
name: "MooseX::AttributeHelpers::MethodProvider::List"
section: "3pm"
platform: "linux"
package: "libmoosex-attributehelpers-perl"
version: "0.25-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/MooseX::AttributeHelpers::MethodProvider::List"
---

# MooseX::AttributeHelpers::MethodProvider::List(3pm)

method generator for MooseX::AttributeHelpers::Collection::List

## NAME

MooseX::AttributeHelpers::MethodProvider::List - method generator for MooseX::AttributeHelpers::Collection::List

## VERSION

version 0.25

## SYNOPSIS

```
   package Stuff;
   use Moose;
   use MooseX::AttributeHelpers;
   has 'options' => (
       metaclass  => 'Collection::List',
       is         => 'rw',
       isa        => 'ArrayRef[Str]',
       default    => sub { [] },
       auto_deref => 1,
       provides   => {
           elements => 'all_options',
           map      => 'map_options',
           grep     => 'filter_options',
           find     => 'find_option',
           first    => 'first_option',
           last     => 'last_option',
           get      => 'get_option',
           join     => 'join_options',
           count    => 'count_options',
           empty    => 'do_i_have_options',
           sort     => 'sorted_options',
       }
   );
   no Moose;
   1;
```

## DESCRIPTION

This is a role which provides the method generators for  MooseX::AttributeHelpers::Collection::List.

## METHODS

- **meta**

  ## PROVIDED METHODS

- **count**

  Returns the number of elements in the list.

  ```
     $stuff = Stuff->new;
     $stuff->options(["foo", "bar", "baz", "boo"]);
     my $count = $stuff->count_options;
     print "$count\n"; # prints 4
  ```

- **empty**

  If the list is populated, returns true. Otherwise, returns false.

  ```
     $stuff->do_i_have_options ? print "Good boy.\n" : die "No options!\n" ;
  ```

- **find**

  This method accepts a subroutine reference as its argument. That sub will receive each element of the list in turn. If it returns true for an element, that element will be returned by the `"find"` method.

  ```
     my $found = $stuff->find_option( sub { $_[0] =~ /^b/ } );
     print "$found\n"; # prints "bar"
  ```

- **grep**

  This method accepts a subroutine reference as its argument. This method returns every element for which that subroutine reference returns a true value.

  ```
     my @found = $stuff->filter_options( sub { $_[0] =~ /^b/ } );
     print "@found\n"; # prints "bar baz boo"
  ```

- **map**

  This method accepts a subroutine reference as its argument. The subroutine will be executed for each element of the list. It is expected to return a modified version of that element. The return value of the method is a list of the modified options.

  ```
     my @mod_options = $stuff->map_options( sub { $_[0] . "-tag" } );
     print "@mod_options\n"; # prints "foo-tag bar-tag baz-tag boo-tag"
  ```

- **sort**

  Sorts and returns the elements of the list.

  You can provide an optional subroutine reference to sort with (as you can with the core `"sort"` function). However, instead of using `$a` and `$b`, you will need to use `$_[0]` and `$_[1]` instead.

  ```
     # ascending ASCIIbetical
     my @sorted = $stuff->sort_options();
     # Descending alphabetical order
     my @sorted_options = $stuff->sort_options( sub { lc $_[1] cmp lc $_[0] } );
     print "@sorted_options\n"; # prints "foo boo baz bar"
  ```

- **elements**

  Returns all of the elements of the list

  ```
     my @option = $stuff->all_options;
     print "@options\n"; # prints "foo bar baz boo"
  ```

- **join**

  Joins every element of the list using the separator given as argument.

  ```
     my $joined = $stuff->join_options( ':' );
     print "$joined\n"; # prints "foo:bar:baz:boo"
  ```

- **get**

  Returns an element of the list by its index.

  ```
     my $option = $stuff->get_option(1);
     print "$option\n"; # prints "bar"
  ```

- **first**

  Returns the first element of the list.

  ```
     my $first = $stuff->first_option;
     print "$first\n"; # prints "foo"
  ```

- **last**

  Returns the last element of the list.

  ```
     my $last = $stuff->last_option;
     print "$last\n"; # prints "boo"
  ```

## SUPPORT

Bugs may be submitted through the RT bug tracker \<https://rt.cpan.org/Public/Dist/Display.html?Name=MooseX-AttributeHelpers\> (or bug-MooseX-AttributeHelpers@rt.cpan.org \<mailto:bug-MooseX-AttributeHelpers@rt.cpan.org\>).

There is also a mailing list available for users of this distribution, at \<http://lists.perl.org/list/moose.html\>.

There is also an irc channel available for users of this distribution, at `"#moose"` on `"irc.perl.org"` \<irc://irc.perl.org/#moose\>.

## AUTHOR

Stevan Little \<stevan@iinteractive.com\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2007 by Stevan Little and Infinity Interactive, Inc.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
