60 lines
1.1 KiB
Perl
60 lines
1.1 KiB
Perl
package # hide from PAUSE
|
|
MooseX::Declare::StackItem;
|
|
|
|
our $VERSION = '0.43';
|
|
|
|
use Moose;
|
|
|
|
use namespace::autoclean;
|
|
use overload '""' => 'as_string', fallback => 1;
|
|
|
|
has identifier => (
|
|
is => 'rw',
|
|
isa => 'Str',
|
|
required => 1,
|
|
);
|
|
|
|
has handler => (
|
|
is => 'ro',
|
|
required => 1,
|
|
default => '',
|
|
);
|
|
|
|
has is_dirty => (
|
|
is => 'ro',
|
|
isa => 'Bool',
|
|
);
|
|
|
|
has is_parameterized => (
|
|
is => 'ro',
|
|
isa => 'Bool',
|
|
);
|
|
|
|
has namespace => (
|
|
is => 'ro',
|
|
isa => 'Str|Undef',
|
|
|
|
);
|
|
|
|
sub as_string {
|
|
my ($self) = @_;
|
|
return $self->identifier;
|
|
}
|
|
|
|
sub serialize {
|
|
my ($self) = @_;
|
|
return sprintf '%s->new(%s)',
|
|
ref($self),
|
|
join ', ', map { defined($_) ? "q($_)" : 'undef' }
|
|
'identifier', $self->identifier,
|
|
'handler', $self->handler,
|
|
'is_dirty', ( $self->is_dirty ? 1 : 0 ),
|
|
'is_parameterized', ( $self->is_parameterized ? 1 : 0 ),
|
|
'namespace', $self->namespace,
|
|
;
|
|
}
|
|
|
|
__PACKAGE__->meta->make_immutable;
|
|
|
|
1;
|