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

Sort::Key::Types - handle Sort::Key data types

Description

       The Sort::Key family of modules can be extended to support new key types using this module (or the more
       friendly Sort::Key::Register).

   FUNCTIONS
       The following functions are provided:

       Sort::Key::register_type($name, \&gensubkeys, @subkeystypes)
           registers a new datatype named $name defining how to convert it to a multi-key.

           &gensubkeys  should  convert  the object of type $name passed on $_ to a list of values composing the
           multi-key.

           @subkeystypes is the list of types for the generated multi-keys.

           For instance:

             Sort::Key::Types::register_type
                            'Person',
                            sub { $_->surname,
                                  $_->name,
                                  $_->middlename },
                            qw(str str str);

             Sort::Key::Types::register_type
                            'Color',
                            sub { $_->R, $_->G, $_->B },
                            qw(int int int);

           Once a datatype has been registered it can be used in the same way as types supported natively,  even
           for defining new types, i.e.:

             Sort::Key::Types::register_type
                            'Family',
                            sub { $_->father, $_->mother },
                            qw(Person Person);

Name

       Sort::Key::Types - handle Sort::Key data types

See Also

       Sort::Key, Sort::Key::Merger, Sort::Key::Register.

Synopsis

         use Sort::Key::Types qw(register_type);
         register_type(Color => sub { $_->R, $_->G, $_->B }, qw(int, int, int));

         # you better
         # use Sort::Key::Register ...

See Also