Bump to 0.13
[gitmo/MooseX-AttributeHelpers.git] / lib / MooseX / AttributeHelpers / MethodProvider / String.pm
CommitLineData
190b1c02 1
2package MooseX::AttributeHelpers::MethodProvider::String;
3use Moose::Role;
4
18d43c2c 5our $VERSION = '0.13';
190b1c02 6our $AUTHORITY = 'cpan:STEVAN';
7
8sub append : method {
9 my ($attr, $reader, $writer) = @_;
10
11 return sub { $writer->( $_[0], $reader->($_[0]) . $_[1] ) };
12}
13
14sub prepend : method {
15 my ($attr, $reader, $writer) = @_;
16
17 return sub { $writer->( $_[0], $_[1] . $reader->($_[0]) ) };
18}
19
20sub 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
37sub match : method {
38 my ($attr, $reader, $writer) = @_;
39 return sub { $reader->($_[0]) =~ $_[1] };
40}
41
42sub 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
51sub 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
60sub inc : method {
61 my ($attr, $reader, $writer) = @_;
62 return sub {
63 my $v = $reader->($_[0]);
64 $v++;
65 $writer->( $_[0], $v);
66 };
67}
68
69sub clear : method {
70 my ($attr, $reader, $writer ) = @_;
71 return sub { $writer->( $_[0], '' ) }
72}
73
741;
75
76__END__
77
78=pod
79
80=head1 NAME
81
82MooseX::AttributeHelpers::MethodProvider::String
83
84=head1 DESCRIPTION
85
86This is a role which provides the method generators for
87L<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
121All complex software has bugs lurking in it, and this module is no
122exception. If you find a bug please either email me, or add the bug
123to cpan-RT.
124
125=head1 AUTHOR
126
127Stevan Little E<lt>stevan@iinteractive.comE<gt>
128
129=head1 COPYRIGHT AND LICENSE
130
99c62fb8 131Copyright 2007-2008 by Infinity Interactive, Inc.
190b1c02 132
133L<http://www.iinteractive.com>
134
135This library is free software; you can redistribute it and/or modify
136it under the same terms as Perl itself.
137
138=cut