X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FAttributeHelpers%2FMethodProvider%2FString.pm;h=805aee2adbd5f0ea21fca2d876f4fa92fe35e413;hb=f578a2164e6d761dee21133f26b8b039d5bf92ec;hp=86bf8bd3572b0fa7839c79f4a7aaa5e9384d1560;hpb=7a93b96ebd130693266ebdb33a47a27b43e130f0;p=gitmo%2FMooseX-AttributeHelpers.git diff --git a/lib/MooseX/AttributeHelpers/MethodProvider/String.pm b/lib/MooseX/AttributeHelpers/MethodProvider/String.pm index 86bf8bd..805aee2 100644 --- a/lib/MooseX/AttributeHelpers/MethodProvider/String.pm +++ b/lib/MooseX/AttributeHelpers/MethodProvider/String.pm @@ -2,7 +2,7 @@ package MooseX::AttributeHelpers::MethodProvider::String; use Moose::Role; -our $VERSION = '0.14'; +our $VERSION = '0.17'; $VERSION = eval $VERSION; our $AUTHORITY = 'cpan:STEVAN'; @@ -68,10 +68,33 @@ sub inc : method { } sub clear : method { - my ($attr, $reader, $writer ) = @_; + my ($attr, $reader, $writer) = @_; return sub { $writer->( $_[0], '' ) } } +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__ @@ -115,6 +138,8 @@ L. =item B +=item B + =back =head1 BUGS