summaryrefslogtreecommitdiffstats
path: root/lib/MooseX/Bread/Board.pm
blob: 56a0949c1e82728f4b6957dd1f2d6a83fa0d9b29 (plain) (blame)
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
32
33
34
35
36
package MooseX::Bread::Board;
use Moose::Exporter;

use Bread::Board ();

my (undef, undef, $init_meta) = Moose::Exporter->build_import_methods(
    install => ['import', 'unimport'],
    class_metaroles => {
        attribute => ['MooseX::Bread::Board::Meta::Role::Attribute'],
        class     => ['MooseX::Bread::Board::Meta::Role::Class'],
        instance  => ['MooseX::Bread::Board::Meta::Role::Instance'],
    },
    (Moose->VERSION >= 1.9900
        ? (role_metaroles => {
               applied_attribute =>
                   ['MooseX::Bread::Board::Meta::Role::Attribute'],
           })
        : ()),
    base_class_roles => ['MooseX::Bread::Board::Role::Object'],
);

sub init_meta {
    my $package = shift;
    my %options = @_;
    if (my $meta = Class::MOP::class_of($options{for_class})) {
        if ($meta->isa('Class::MOP::Class')) {
            my @supers = $meta->superclasses;
            $meta->superclasses('Bread::Board::Container')
                if @supers == 1 && $supers[0] eq 'Moose::Object';
        }
    }
    $package->$init_meta(%options);
}


1;