NAME
Data::ShortNameProvider::Role::Style - Role for Data::ShortNameProvider styles
SYNOSPIS
Define your own style:
package
My::DSNP::Style;
use
Moo;
sub
generate_name {
my
(
$self
,
$name
) =
@_
;
return
"short_$name"
;
}
sub
parse_generated_name {
my
(
$self
,
$name
) =
@_
;
return
if
not
$self
=~ /^short_(.*)$/;
return
{
name
=> $1 };
}
1;
Use it:
my
$np
= Data::ShortNameProvider->new(
style
=>
'+My::DSNP::Style'
);
my
$short_name
=
$np
->generate_shortname(
$name
);
DESCRIPTION
This role provides the basic attributes and requirements for a class to be used as a style provider for Data::ShortNameProvider.
Data::ShortNameProvider actually checks if the provided style class implements this role, and throws an exception if it doesn't.
PROVIDED ATTRIBUTES
timestamp_epoch
This is a timestamp in Unix epoch, that may be used by the style to produce short names.
The default is the return value of time()
.
PROVIDED METHODS
Data::ShortNameProvider::Role::Style provides a default implementation of some methods. Your style can provide its own version for efficiency reasons.
is_generated_name
if
(
$provider
->is_generated_name(
$name
) ) { ... }
Return a boolean indicating if the $name
string could have been generated by this provider.
REQUIRED METHODS
generate_name
my
$short_name
=
$provider
->parse_generated_name(
$name
);
Generate a "short name" for the $name
parameter.
parse_generated_name
my
$hash
=
$provider
->parse_generated_name(
$short_name
);
Return the components of the name as a hash. This method will parse names that might have been generated with a different instance.
$hash
should at least contain the name
and timestamp_epoch
keys. Everything else depends on the style itself, but one should always be able to make a copy of the original provider by passing $hash
to the constructor.
my
$prev
= My::DSNP::Style->new(
%args
);
my
$sn
=
$prev
->generate_new_name(
$name
);
my
$cur
= My::DSNP::Style->new(
%other_args
);
my
$hash
=
$cur
->parse_generated_name(
$sn
);
my
$next
= My::DSNP::Style->new(
$hash
);
# always true
$sn
eq
$next
->generate_new_name(
$name
);
SEE ALSO
Data::ShortNameProvider, Data::ShortNameProvider::Style::Basic.
AUTHOR
Philippe Bruhat (BooK), <book@cpan.org>.
COPYRIGHT
Copyright 2014-2015 Philippe Bruhat (BooK), all rights reserved.
LICENSE
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.