File: ToRole.pm

package info (click to toggle)
libmoosex-singlearg-perl 0.09-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 128 kB
  • sloc: perl: 217; makefile: 7
file content (28 lines) | stat: -rw-r--r-- 808 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package MooseX::SingleArg::Meta::ToRole;

$MooseX::SingleArg::Meta::ToRole::VERSION = '0.09';

use Moose::Role;

around apply => sub{
    my $orig      = shift;
    my $self      = shift;
    my $from_role = shift;
    my $to_role   = shift;

    $to_role = Moose::Util::MetaRole::apply_metaroles(
        for            => $to_role,
        role_metaroles => {
            role                 => ['MooseX::SingleArg::Meta::Role'],
            application_to_class => ['MooseX::SingleArg::Meta::ToClass'],
            application_to_role  => ['MooseX::SingleArg::Meta::ToRole'],
        },
    );

    $to_role->single_arg( $from_role->single_arg() ) if $from_role->has_single_arg();
    $to_role->force_single_arg( $from_role->force_single_arg() );

    return $self->$orig( $from_role, $to_role );
};

1;