Add a couple of missing package descriptions.
[gitmo/Moose.git] / lib / Moose / Meta / Attribute / Native / MethodProvider / String.pm
CommitLineData
c466e58f 1package Moose::Meta::Attribute::Native::MethodProvider::String;
e3c07b19 2use Moose::Role;
3
b7ef2be4 4our $VERSION = '0.95';
e3c07b19 5$VERSION = eval $VERSION;
6our $AUTHORITY = 'cpan:STEVAN';
7
8sub append : method {
046c8b5e 9 my ( $attr, $reader, $writer ) = @_;
e3c07b19 10
046c8b5e 11 return sub { $writer->( $_[0], $reader->( $_[0] ) . $_[1] ) };
e3c07b19 12}
13
14sub prepend : method {
046c8b5e 15 my ( $attr, $reader, $writer ) = @_;
e3c07b19 16
046c8b5e 17 return sub { $writer->( $_[0], $_[1] . $reader->( $_[0] ) ) };
e3c07b19 18}
19
20sub replace : method {
046c8b5e 21 my ( $attr, $reader, $writer ) = @_;
e3c07b19 22
23 return sub {
24 my ( $self, $regex, $replacement ) = @_;
046c8b5e 25 my $v = $reader->( $_[0] );
e3c07b19 26
046c8b5e 27 if ( ( ref($replacement) || '' ) eq 'CODE' ) {
e3c07b19 28 $v =~ s/$regex/$replacement->()/e;
046c8b5e 29 }
30 else {
e3c07b19 31 $v =~ s/$regex/$replacement/;
32 }
33
046c8b5e 34 $writer->( $_[0], $v );
e3c07b19 35 };
36}
37
38sub match : method {
046c8b5e 39 my ( $attr, $reader, $writer ) = @_;
40 return sub { $reader->( $_[0] ) =~ $_[1] };
e3c07b19 41}
42
43sub chop : method {
046c8b5e 44 my ( $attr, $reader, $writer ) = @_;
e3c07b19 45 return sub {
046c8b5e 46 my $v = $reader->( $_[0] );
e3c07b19 47 CORE::chop($v);
046c8b5e 48 $writer->( $_[0], $v );
e3c07b19 49 };
50}
51
52sub chomp : method {
046c8b5e 53 my ( $attr, $reader, $writer ) = @_;
e3c07b19 54 return sub {
046c8b5e 55 my $v = $reader->( $_[0] );
e3c07b19 56 chomp($v);
046c8b5e 57 $writer->( $_[0], $v );
e3c07b19 58 };
59}
60
61sub inc : method {
046c8b5e 62 my ( $attr, $reader, $writer ) = @_;
e3c07b19 63 return sub {
046c8b5e 64 my $v = $reader->( $_[0] );
e3c07b19 65 $v++;
046c8b5e 66 $writer->( $_[0], $v );
e3c07b19 67 };
68}
69
70sub clear : method {
046c8b5e 71 my ( $attr, $reader, $writer ) = @_;
e3c07b19 72 return sub { $writer->( $_[0], '' ) }
73}
74
8a1e47bc 75sub length : method {
76 my ($attr, $reader, $writer) = @_;
77 return sub {
78 my $v = $reader->($_[0]);
79 return CORE::length($v);
80 };
81}
82
e3c07b19 83sub substr : method {
046c8b5e 84 my ( $attr, $reader, $writer ) = @_;
e3c07b19 85 return sub {
86 my $self = shift;
046c8b5e 87 my $v = $reader->($self);
e3c07b19 88
89 my $offset = defined $_[0] ? shift : 0;
90 my $length = defined $_[0] ? shift : CORE::length($v);
91 my $replacement = defined $_[0] ? shift : undef;
92
93 my $ret;
046c8b5e 94 if ( defined $replacement ) {
95 $ret = CORE::substr( $v, $offset, $length, $replacement );
96 $writer->( $self, $v );
e3c07b19 97 }
98 else {
046c8b5e 99 $ret = CORE::substr( $v, $offset, $length );
e3c07b19 100 }
101
102 return $ret;
103 };
104}
105
1061;
107
108__END__
109
110=pod
111
112=head1 NAME
113
8b09d5c3 114Moose::Meta::Attribute::Native::MethodProvider::String - role providing method generators for String trait
e3c07b19 115
116=head1 DESCRIPTION
117
118This is a role which provides the method generators for
e22d28f2 119L<Moose::Meta::Attribute::Native::Trait::String>. Please check there for
79b647c6 120documentation on what methods are provided.
e3c07b19 121
122=head1 METHODS
123
124=over 4
125
126=item B<meta>
127
128=back
129
e3c07b19 130=head1 BUGS
131
d4048ef3 132See L<Moose/BUGS> for details on reporting bugs.
e3c07b19 133
134=head1 AUTHOR
135
136Stevan Little E<lt>stevan@iinteractive.comE<gt>
137
138=head1 COPYRIGHT AND LICENSE
139
140Copyright 2007-2009 by Infinity Interactive, Inc.
141
142L<http://www.iinteractive.com>
143
144This library is free software; you can redistribute it and/or modify
145it under the same terms as Perl itself.
146
147=cut