41 lines
693 B
Perl
41 lines
693 B
Perl
package LasTres::Word;
|
|
|
|
use v5.36.0;
|
|
use strict;
|
|
use warnings;
|
|
use utf8;
|
|
|
|
use feature 'signatures';
|
|
|
|
use Moo::Role;
|
|
|
|
requires qw/name identifier/;
|
|
## IMPLEMENTORS MUST IMPLEMENT
|
|
# sub name($self,$pj);
|
|
# sub identifier;
|
|
#
|
|
# Identifier must be unique across words, failure
|
|
# to do so can result in a error or undefined
|
|
# behavior.
|
|
|
|
## DO NOT EXTEND NOT SUPPORTED.
|
|
{
|
|
my %hash;
|
|
|
|
sub instance ($class) {
|
|
if ( !exists $hash{$class} ) {
|
|
$hash{$class} = $class->new;
|
|
}
|
|
return $hash{$class};
|
|
}
|
|
}
|
|
|
|
## DO NOT EXTEND NOT SUPPORTED.
|
|
sub serialize ($self) {
|
|
return {
|
|
name => $self->name,
|
|
identifier => $self->identifier,
|
|
};
|
|
}
|
|
1;
|