-
Notifications
You must be signed in to change notification settings - Fork 20
/
Mouse.pm
35 lines (30 loc) · 843 Bytes
/
Mouse.pm
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
package Mo::Mouse;$MoPKG = "Mo::";
$VERSION = 0.31;
*{$MoPKG.'Mouse::e'} = sub {
my ($caller_pkg, $exports) = @_;
$caller_pkg =~ s/::$//;
%$exports = (M => 1);
require Mouse;
# require Mouse::Role;
require Mouse::Util::MetaRole;
Mouse->import({into => $caller_pkg});
Mouse::Util::MetaRole::apply_metaroles(
for => $caller_pkg,
class_metaroles => { attribute => ['Attr::Trait'] },
);
};
BEGIN {
package Attr::Trait;
use Mouse::Role;
around _process_options => sub {
my $orig = shift;
my $class = shift;
my ($name, $options) = @_;
$options->{is} ||= 'rw';
$options->{lazy} ||= 1
if defined $options->{default} or
defined $options->{builder};
$class->$orig(@_);
};
$INC{'Attr/Trait.pm'} = 1;
}