NAME

Set::Associate::NewKey - New Key assignment methods

VERSION

version 0.004001

DESCRIPTION

This class implements the mechanism which controls how the values are assigned to 'new' keys.

The part you're mostly interested in are the "CLASS METHODS", which return the right assignment method.

This is more or less a wrapper for passing around subs with an implicit interface.

my $assigner = Set::Associate::NewKey->new(
    name => 'linear_wrap',
    code => sub {
        my ( $self, $sa , $key ) = @_;
        ....
    },
);

my $value = $assigner->run( $set_associate_object, $key );

CONSTRUCTOR ARGUMENTS

name

required Str

code

required CodeRef

CLASS METHODS

linear_wrap

shift's the first item off the internal _items_cache

my $sa = Set::Associate->new(
    ...
    on_new_key => Set::Associate::NewKey->linear_wrap
);

or alternatively

my $code = Set::Associate::NewKey->linear_wrap
my $newval = $code->run( $set, $key_which_will_be_ignored );

random_pick

non-destructively picks an element from _items_cache at random.

my $sa = Set::Associate->new(
    ...
    on_new_key => Set::Associate::NewKey->random_pick
);

or alternatively

my $code = Set::Associate::NewKey->random_pick
my $newval = $code->run( $set, $key_which_will_be_ignored );

pick_offset

Assuming offset is numeric, pick either that number, or a modulo of that number.

NOTE: do not use this unless you are only working with numeric keys.

If you're using anything else, the hash_sha1 or hash_md5 methods are suggested.

my $sa = Set::Associate->new(
    ...
    on_new_key => Set::Associate::NewKey->pick_offset
);

or alternatively

my $code = Set::Associate::NewKey->pick_offset
my $newval = $code->run( $set, 9001 ); # despite picking numbers OVER NINE THOUSAND
                                       # will still return items in the array

hash_sha1

requires bigint support

Determines the offset for "pick_offset" from taking the numeric value of the SHA1 hash of the given string

my $sa = Set::Associate->new(
    ...
    on_new_key => Set::Associate::NewKey->hash_sha1
);

or alternatively

my $code = Set::Associate::NewKey->hash_sha1();
my $newval = $code->run( $set, "Some String" );

hash_md5

requires bigint support

Determines the offset for "pick_offset" from taking the numeric value of the MD5 hash of the given string

my $sa = Set::Associate->new(
    ...
    on_new_key => Set::Associate::NewKey->hash_md5
);

or alternatively

my $code = Set::Associate::NewKey->hash_md5();
my $newval = $code->run( $set, "Some String" );

ATTRIBUTES

name

code

AUTHOR

Kent Fredric <kentnl@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2017 by Kent Fredric <kentfredric@gmail.com>.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.