Switch to 2-space indent, minor formatting (no code) changes
[p5sagit/Class-Accessor-Grouped.git] / t / lib / AccessorGroups.pm
1 {
2   package AccessorGroups::BeenThereDoneThat;
3
4   use strict;
5   use warnings;
6   use base 'Class::Accessor::Grouped';
7
8   __PACKAGE__->mk_group_accessors('simple', 'singlefield');
9   __PACKAGE__->mk_group_accessors('multiple', qw/multiple1 multiple2/);
10 }
11
12
13 package AccessorGroups;
14 use strict;
15 use warnings;
16 use base 'Class::Accessor::Grouped';
17 __PACKAGE__->mk_group_accessors('simple', 'singlefield');
18 __PACKAGE__->mk_group_accessors('multiple', qw/multiple1 multiple2/);
19 __PACKAGE__->mk_group_accessors('listref', [qw/lr1name lr1;field/], [qw/lr2name lr2'field/]);
20 __PACKAGE__->mk_group_accessors('simple', 'runtime_around');
21
22 sub get_simple {
23   my $v = shift->SUPER::get_simple (@_);
24   $v =~ s/ Extra tackled on$// if $v;
25   $v;
26 }
27
28 sub set_simple {
29   my ($self, $f, $v) = @_;
30   $v .= ' Extra tackled on' if $f eq 'singlefield';
31   $self->SUPER::set_simple ($f, $v);
32   $_[2];
33 }
34
35 # a runtime Class::Method::Modifiers style around
36 # the eval/our combo is so that we do not need to rely on Sub::Name being available
37 my $orig_ra_cref = __PACKAGE__->can('runtime_around');
38 our $around_cref = sub {
39   my $self = shift;
40   if (@_) {
41     my $val = shift;
42     $self->$orig_ra_cref($val . ' Extra tackled on');
43     $val;
44   }
45   else {
46     my $val = $self->$orig_ra_cref;
47     $val =~ s/ Extra tackled on$// if defined $val;
48     $val;
49   }
50 };
51 {
52   no warnings qw/redefine/;
53   eval <<'EOE';
54     sub AccessorGroups::runtime_around { goto $AccessorGroups::around_cref };
55     sub AccessorGroups::_runtime_around_accessor { goto $AccessorGroups::around_cref };
56 EOE
57 }
58
59 sub new {
60   return bless {}, shift;
61 };
62
63 foreach (qw/multiple listref/) {
64   no strict 'refs';
65   *{"get_$_"} = __PACKAGE__->can('get_simple');
66   *{"set_$_"} = __PACKAGE__->can('set_simple');
67 };
68
69 1;