Prep for version 0.12_01 release to match Moose & MOP dev releases.
[gitmo/MooseX-AttributeHelpers.git] / lib / MooseX / AttributeHelpers / MethodProvider / String.pm
CommitLineData
190b1c02 1
2package MooseX::AttributeHelpers::MethodProvider::String;
3use Moose::Role;
4
38430345 5our $VERSION = '0.12_01';
6$VERSION = eval $VERSION;
190b1c02 7our $AUTHORITY = 'cpan:STEVAN';
8
9sub append : method {
10 my ($attr, $reader, $writer) = @_;
11
12 return sub { $writer->( $_[0], $reader->($_[0]) . $_[1] ) };
13}
14
15sub prepend : method {
16 my ($attr, $reader, $writer) = @_;
17
18 return sub { $writer->( $_[0], $_[1] . $reader->($_[0]) ) };
19}
20
21sub replace : method {
22 my ($attr, $reader, $writer) = @_;
23
24 return sub {
25 my ( $self, $regex, $replacement ) = @_;
26 my $v = $reader->($_[0]);
27
28 if ( (ref($replacement)||'') eq 'CODE' ) {
29 $v =~ s/$regex/$replacement->()/e;
30 } else {
31 $v =~ s/$regex/$replacement/;
32 }
33
34 $writer->( $_[0], $v);
35 };
36}
37
38sub match : method {
39 my ($attr, $reader, $writer) = @_;
40 return sub { $reader->($_[0]) =~ $_[1] };
41}
42
43sub chop : method {
44 my ($attr, $reader, $writer) = @_;
45 return sub {
46 my $v = $reader->($_[0]);
47 CORE::chop($v);
48 $writer->( $_[0], $v);
49 };
50}
51
52sub chomp : method {
53 my ($attr, $reader, $writer) = @_;
54 return sub {
55 my $v = $reader->($_[0]);
56 chomp($v);
57 $writer->( $_[0], $v);
58 };
59}
60
61sub inc : method {
62 my ($attr, $reader, $writer) = @_;
63 return sub {
64 my $v = $reader->($_[0]);
65 $v++;
66 $writer->( $_[0], $v);
67 };
68}
69
70sub clear : method {
71 my ($attr, $reader, $writer ) = @_;
72 return sub { $writer->( $_[0], '' ) }
73}
74
751;
76
77__END__
78
79=pod
80
81=head1 NAME
82
83MooseX::AttributeHelpers::MethodProvider::String
84
85=head1 DESCRIPTION
86
87This is a role which provides the method generators for
88L<MooseX::AttributeHelpers::String>.
89
90=head1 METHODS
91
92=over 4
93
94=item B<meta>
95
96=back
97
98=head1 PROVIDED METHODS
99
100=over 4
101
102=item B<append>
103
104=item B<prepend>
105
106=item B<replace>
107
108=item B<match>
109
110=item B<chomp>
111
112=item B<chop>
113
114=item B<inc>
115
116=item B<clear>
117
118=back
119
120=head1 BUGS
121
122All complex software has bugs lurking in it, and this module is no
123exception. If you find a bug please either email me, or add the bug
124to cpan-RT.
125
126=head1 AUTHOR
127
128Stevan Little E<lt>stevan@iinteractive.comE<gt>
129
130=head1 COPYRIGHT AND LICENSE
131
99c62fb8 132Copyright 2007-2008 by Infinity Interactive, Inc.
190b1c02 133
134L<http://www.iinteractive.com>
135
136This library is free software; you can redistribute it and/or modify
137it under the same terms as Perl itself.
138
139=cut