File: ToClass.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 (31 lines) | stat: -rw-r--r-- 798 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
29
30
31
package MooseX::SingleArg::Meta::ToClass;

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

use Moose::Role;

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

    $to_class = Moose::Util::MetaRole::apply_metaroles(
        for             => $to_class,
        class_metaroles => {
            class => ['MooseX::SingleArg::Meta::Class'],
        },
    );

    Moose::Util::MetaRole::apply_base_class_roles(
        for   => $to_class,
        roles => ['MooseX::SingleArg::Meta::Object'],
    );

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

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

1;