Switch to 2-space indent, minor formatting (no code) changes
[p5sagit/Class-Accessor-Grouped.git] / t / lib / AccessorGroups.pm
index b7188e9..a8e3b97 100644 (file)
@@ -17,6 +17,7 @@ use base 'Class::Accessor::Grouped';
 __PACKAGE__->mk_group_accessors('simple', 'singlefield');
 __PACKAGE__->mk_group_accessors('multiple', qw/multiple1 multiple2/);
 __PACKAGE__->mk_group_accessors('listref', [qw/lr1name lr1;field/], [qw/lr2name lr2'field/]);
+__PACKAGE__->mk_group_accessors('simple', 'runtime_around');
 
 sub get_simple {
   my $v = shift->SUPER::get_simple (@_);
@@ -31,14 +32,38 @@ sub set_simple {
   $_[2];
 }
 
+# a runtime Class::Method::Modifiers style around
+# the eval/our combo is so that we do not need to rely on Sub::Name being available
+my $orig_ra_cref = __PACKAGE__->can('runtime_around');
+our $around_cref = sub {
+  my $self = shift;
+  if (@_) {
+    my $val = shift;
+    $self->$orig_ra_cref($val . ' Extra tackled on');
+    $val;
+  }
+  else {
+    my $val = $self->$orig_ra_cref;
+    $val =~ s/ Extra tackled on$// if defined $val;
+    $val;
+  }
+};
+{
+  no warnings qw/redefine/;
+  eval <<'EOE';
+    sub AccessorGroups::runtime_around { goto $AccessorGroups::around_cref };
+    sub AccessorGroups::_runtime_around_accessor { goto $AccessorGroups::around_cref };
+EOE
+}
+
 sub new {
-    return bless {}, shift;
+  return bless {}, shift;
 };
 
 foreach (qw/multiple listref/) {
-    no strict 'refs';
-    *{"get_$_"} = __PACKAGE__->can('get_simple');
-    *{"set_$_"} = __PACKAGE__->can('set_simple');
+  no strict 'refs';
+  *{"get_$_"} = __PACKAGE__->can('get_simple');
+  *{"set_$_"} = __PACKAGE__->can('set_simple');
 };
 
 1;