blob: 652159a2053ae87114e98d23cc42c1e448c7db94 (
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
|
package AtomicMethod;
use MooseX::Exporter::Easy;
sub _atomic_method_meta {
my ($meta) = @_;
Moose::Meta::Class->create_anon_class(
superclasses => [$meta->method_metaclass],
roles => ['AtomicMethod::Role::Method'],
cache => 1,
)->name;
}
with_meta atomic_method => sub {
my ($meta, $name, $code) = @_;
$meta->add_method(
$name => _atomic_method_meta($meta)->wrap(
$code,
name => $name,
package_name => $meta->name,
associated_metaclass => $meta
),
);
};
export;
1;
|