Add built local::lib
[catagits/Gitalist.git] / local-lib5 / lib / perl5 / MooseX / Declare / StackItem.pm
1 package MooseX::Declare::StackItem;
2
3 use Moose;
4
5 use namespace::clean -except => 'meta';
6 use overload '""' => 'as_string', fallback => 1;
7
8 has identifier => (
9     is          => 'rw',
10     isa         => 'Str',
11     required    => 1,
12 );
13
14 has handler => (
15     is          => 'ro',
16     required    => 1,
17     default     => '',
18 );
19
20 has is_dirty => (
21     is          => 'ro',
22     isa         => 'Bool',
23 );
24
25 has is_parameterized => (
26     is  => 'ro',
27     isa => 'Bool',
28 );
29
30 has namespace => (
31     is          => 'ro',
32     isa         => 'Str|Undef',
33
34 );
35
36 sub as_string {
37     my ($self) = @_;
38     return $self->identifier;
39 }
40
41 sub serialize {
42     my ($self) = @_;
43     return sprintf '%s->new(%s)',
44         ref($self),
45         join ', ', map { defined($_) ? "q($_)" : 'undef' }
46         'identifier',       $self->identifier,
47         'handler',          $self->handler,
48         'is_dirty',         ( $self->is_dirty         ? 1 : 0 ),
49         'is_parameterized', ( $self->is_parameterized ? 1 : 0 ),
50         'namespace',        $self->namespace,
51         ;
52 }
53
54 __PACKAGE__->meta->make_immutable;
55
56 1;