Sort::Key::Register - tell Sort::Key how to sort new data types.


Sort-Key documentation Contained in the Sort-Key distribution.

Index


Code Index:

NAME

Top

Sort::Key::Register - tell Sort::Key how to sort new data types.

SYNOPSYS

Top

  use Sort::Key::Register Person =>
      sub { $_->surname, $_->name },
      qw(string string);

  use Sort::Key::Register 'Color::Component' => 'integer';

  use Sort::Key::Register Color =>
      sub { $_->R, $_->G, $_->B },
      ('Color::Component') x 3;




DESCRIPTION

Top

Sort::Key::Register allows to register new data types with Sort::Key so that they can be sorted as natively supported ones.

It works as a pragma module and doesn't export any function, all its functionality is provided via use:

  use Sort::Key::Register ...

To avoid collisions between modules registering types with the same name, you should qualify them with the package name.

  use Sort::Key::Register 'MyPkg::foo' => sub { $_ }, '-int';

  # or using __PACKAGE__:
  use Sort::Key::Register __PACKAGE__, sub { $_ }, '-int';

USAGE

use Sort::Key::Register $name => \&multikeygen, @keytypes;

registers type $name.

&multikeygen is the multikey extraction function for the type and @keytypes are the types of the extracted keys.

use Sort::Key::Register $name => $keytype;

this 'use' is useful for simple types that are sorted as another type already registered, maybe changing the direction of the sort (ascending or descending).

SEE ALSO

Top

Sort::Key, Sort::Key::Maker.

AUTHOR

Top

Salvador Fandiño, <sfandino@yahoo.com>

COPYRIGHT AND LICENSE

Top


Sort-Key documentation Contained in the Sort-Key distribution.

package Sort::Key::Register;

our $VERSION = '0.14';

use warnings;
use strict;

use Sort::Key;

sub import {
    my $class = shift;
    my $name = shift;
    if (@_ == 1) {
	Sort::Key::register_type($name, undef, @_);
    }
    else {
	Sort::Key::register_type($name, @_);
    }
}

1;
__END__