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