summaryrefslogtreecommitdiff
path: root/lib/MooseX/Privacy/Trait/Role.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/MooseX/Privacy/Trait/Role.pm')
-rw-r--r--lib/MooseX/Privacy/Trait/Role.pm22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/MooseX/Privacy/Trait/Role.pm b/lib/MooseX/Privacy/Trait/Role.pm
new file mode 100644
index 0000000..9d8c274
--- /dev/null
+++ b/lib/MooseX/Privacy/Trait/Role.pm
@@ -0,0 +1,22 @@
+package MooseX::Privacy::Trait::Role;
+
+use MooseX::Role::Parameterized;
+
+parameter name => ( isa => 'Str', required => 1, );
+
+role {
+ my $p = shift;
+ my $role_name = "MooseX::Privacy::Meta::Attribute::" . ucfirst($p->name);
+
+ around accessor_metaclass => sub {
+ my ( $orig, $self, @rest ) = @_;
+
+ return Moose::Meta::Class->create_anon_class(
+ superclasses => [ $self->$orig(@_) ],
+ roles => [$role_name],
+ cache => 1
+ )->name;
+ };
+};
+
+1;