LasTres/lib/LasTres/Word.pm

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;