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