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