Commit | Line | Data |
3fea05b9 |
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; |