logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Sub::HandlesVia::HandlerLibrary::String - library of string-related methods

Author

       Toby Inkster <tobyink@cpan.org>.

Bugs

       Please report any bugs to <https://github.com/tobyink/p5-sub-handlesvia/issues>.

Delegatable Methods

append($tail)
       Arguments: Str.

       Appends another string to the end of the current string and updates the attribute.

         my $object = My::Class->new( attr => 'foo' );
         $object->my_append( 'bar' );
         say $object->attr; ## ==> 'foobar'

   chomp()
       Like "chomp" from perlfunc.

   chop()
       Like "chop" from perlfunc.

   clear()
       Sets the string to the empty string.

         my $object = My::Class->new( attr => 'foo' );
         $object->my_clear;
         say $object->attr; ## nothing

   cmp($str)
       Arguments: Str.

       Returns "$object->attr cmp $str".

   cmpi($str)
       Arguments: Str.

       Returns "fc($object->attr) cmp fc($str)". Uses "lc" instead of "fc" in versions of Perl older than 5.16.

   contains($str)
       Arguments: Str.

       Returns true iff the string contains $str.

   contains_i($str)
       Arguments: Str.

       Returns true iff the string contains $str case-insensitvely.

   ends_with($tail)
       Arguments: Str.

       Returns true iff the string ends with $tail.

   ends_with_i($tail)
       Arguments: Str.

       Returns true iff the string ends with $tail case-insensitvely.

   eq($str)
       Arguments: Str.

       Returns "$object->attr eq $str".

   eqi($str)
       Arguments: Str.

       Returns "fc($object->attr) eq fc($str)". Uses "lc" instead of "fc" in versions of Perl older than 5.16.

   fc()
       Returns fc($object->attr).

   ge($str)
       Arguments: Str.

       Returns "$object->attr ge $str".

   gei($str)
       Arguments: Str.

       Returns "fc($object->attr) ge fc($str)". Uses "lc" instead of "fc" in versions of Perl older than 5.16.

   get()
       Gets the current value of the string.

         my $object = My::Class->new( attr => 'foo' );
         say $object->my_get; ## ==> 'foo'

   gt($str)
       Arguments: Str.

       Returns "$object->attr gt $str".

   gti($str)
       Arguments: Str.

       Returns "fc($object->attr) gt fc($str)". Uses "lc" instead of "fc" in versions of Perl older than 5.16.

   inc()
       Performs "++" on the string.

   lc()
       Returns lc($object->attr).

   le($str)
       Arguments: Str.

       Returns "$object->attr le $str".

   lei($str)
       Arguments: Str.

       Returns "fc($object->attr) le fc($str)". Uses "lc" instead of "fc" in versions of Perl older than 5.16.

   length()
       Like "length" from perlfunc.

         my $object = My::Class->new( attr => 'foo' );
         say $object->my_length; ## ==> 3

   lt($str)
       Arguments: Str.

       Returns "$object->attr lt $str".

   lti($str)
       Arguments: Str.

       Returns "fc($object->attr) lt fc($str)". Uses "lc" instead of "fc" in versions of Perl older than 5.16.

   match($regexp)
       Arguments: Str|RegexpRef.

       Returns true iff the string matches the regexp.

         my $object = My::Class->new( attr => 'foo' );
         if ( $object->my_match( '^f..$' ) ) {
           say 'matched!';
         }

   match_i($regexp)
       Arguments: Str|RegexpRef.

       Returns true iff the string matches the regexp case-insensitively.

         my $object = My::Class->new( attr => 'foo' );
         if ( $object->my_match_i( '^F..$' ) ) {
           say 'matched!';
         }

   ne($str)
       Arguments: Str.

       Returns "$object->attr ne $str".

   nei($str)
       Arguments: Str.

       Returns "fc($object->attr) ne fc($str)". Uses "lc" instead of "fc" in versions of Perl older than 5.16.

   prepend($head)
       Arguments: Str.

       Prepends another string to the start of the current string and updates the attribute.

         my $object = My::Class->new( attr => 'foo' );
         $object->my_prepend( 'bar' );
         say $object->attr; ## ==> 'barfoo'

   "replace($regexp,$replacement)"
       Arguments: Str|RegexpRef, Str|CodeRef.

       Replaces the first regexp match within the string with the replacement string.

         my $object = My::Class->new( attr => 'foo' );
         $object->my_replace( 'o' => 'a' );
         say $object->attr; ## ==> 'fao'

         my $object2 = My::Class->new( attr => 'foo' );
         $object2->my_replace( qr/O/i => sub { return 'e' } );
         say $object2->attr; ## ==> 'feo'

   "replace_globally($regexp,$replacement)"
       Arguments: Str|RegexpRef, Str|CodeRef.

       Replaces the all regexp matches within the string with the replacement string.

         my $object = My::Class->new( attr => 'foo' );
         $object->my_replace_globally( 'o' => 'a' );
         say $object->attr; ## ==> 'faa'

         my $object2 = My::Class->new( attr => 'foo' );
         $object2->my_replace_globally( qr/O/i => sub { return 'e' } );
         say $object2->attr; ## ==> 'fee'

   reset()
       Resets the attribute to its default value, or an empty string if it has no default.

   set($value)
       Arguments: Str.

       Sets the string to a new value.

         my $object = My::Class->new( attr => 'foo' );
         $object->my_set( 'bar' );
         say $object->attr; ## ==> 'bar'

   starts_with($head)
       Arguments: Str.

       Returns true iff the string starts with $head.

   starts_with_i($head)
       Arguments: Str.

       Returns true iff the string starts with $head case-insensitvely.

   "substr($start,$length?,$replacement?)"
       Arguments: Int, Optional[Int], Optional[Str].

       Like "substr" from perlfunc, but is not an lvalue.

   uc()
       Returns uc($object->attr).

Description

       This is a library of methods for Sub::HandlesVia.

Disclaimer Of Warranties

       THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
       LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.

perl v5.40.1                                       2025-04-01              Sub::HandlesVi...Library::String(3pm)

Extended Examples

UsingeqforEnum
         use strict;
         use warnings;

         package My::Person {
           use Moo;
           use Sub::HandlesVia;
           use Types::Standard qw( Str Enum );

           has name => (
             is => 'ro',
             isa => Str,
             required => 1,
           );

           has status => (
             is => 'rwp',
             isa => Enum[ 'alive', 'dead' ],
             handles_via => 'String',
             handles => {
               is_alive => [ eq  => 'alive' ],
               is_dead  => [ eq  => 'dead' ],
               kill     => [ set => 'dead' ],
             },
             default => 'alive',
           );

           # Note: method modifiers work on delegated methods
           #
           before kill => sub {
             my $self = shift;
             warn "overkill" if $self->is_dead;
           };
         }

         my $bob = My::Person->new( name => 'Robert' );
         say $bob->is_alive; ## ==> true
         say $bob->is_dead;  ## ==> false
         $bob->kill;
         say $bob->is_alive; ## ==> false
         say $bob->is_dead;  ## ==> true

       See also Sub::HandlesVia::HandlerLibrary::Enum, MooX::Enumeration and MooseX::Enumeration.

   Matchwithcurriedregexp
         use strict;
         use warnings;

         package My::Component {
           use Moo;
           use Sub::HandlesVia;
           use Types::Standard qw( Str Int );

           has id => (
             is => 'ro',
             isa => Int,
             required => 1,
           );

           has name => (
             is => 'ro',
             isa => Str,
             required => 1,
             handles_via => 'String',
             handles => {
               name_is_safe_filename => [ match => qr/\A[A-Za-z0-9]+\z/ ],
               _lc_name => 'lc',
             },
           );

           sub config_filename {
             my $self = shift;
             if ( $self->name_is_safe_filename ) {
               return sprintf( '%s.ini', $self->_lc_name );
             }
             return sprintf( 'component-%d.ini', $self->id );
           }
         }

         my $foo = My::Component->new( id => 42, name => 'Foo' );
         say $foo->config_filename; ## ==> 'foo.ini'

         my $bar4 = My::Component->new( id => 99, name => 'Bar #4' );
         say $bar4->config_filename; ## ==> 'component-99.ini'

Name

       Sub::HandlesVia::HandlerLibrary::String - library of string-related methods

See Also

       Sub::HandlesVia.

Synopsis

         package My::Class {
           use Moo;
           use Sub::HandlesVia;
           use Types::Standard 'Str';
           has attr => (
             is => 'rwp',
             isa => Str,
             handles_via => 'String',
             handles => {
               'my_append' => 'append',
               'my_chomp' => 'chomp',
               'my_chop' => 'chop',
               'my_clear' => 'clear',
               'my_cmp' => 'cmp',
               'my_cmpi' => 'cmpi',
               'my_contains' => 'contains',
               'my_contains_i' => 'contains_i',
               'my_ends_with' => 'ends_with',
               'my_ends_with_i' => 'ends_with_i',
               'my_eq' => 'eq',
               'my_eqi' => 'eqi',
               'my_fc' => 'fc',
               'my_ge' => 'ge',
               'my_gei' => 'gei',
               'my_get' => 'get',
               'my_gt' => 'gt',
               'my_gti' => 'gti',
               'my_inc' => 'inc',
               'my_lc' => 'lc',
               'my_le' => 'le',
               'my_lei' => 'lei',
               'my_length' => 'length',
               'my_lt' => 'lt',
               'my_lti' => 'lti',
               'my_match' => 'match',
               'my_match_i' => 'match_i',
               'my_ne' => 'ne',
               'my_nei' => 'nei',
               'my_prepend' => 'prepend',
               'my_replace' => 'replace',
               'my_replace_globally' => 'replace_globally',
               'my_reset' => 'reset',
               'my_set' => 'set',
               'my_starts_with' => 'starts_with',
               'my_starts_with_i' => 'starts_with_i',
               'my_substr' => 'substr',
               'my_uc' => 'uc',
             },
           );
         }

See Also