Commit | Line | Data |
3c0a590c |
1 | package ## Hide from PAUSE |
2 | MooseX::Types::Structured::MessageStack; |
3 | |
14375407 |
4 | use Moose; |
5 | |
fc5995b6 |
6 | =attr level |
7 | |
8 | =cut |
9 | |
14375407 |
10 | has 'level' => ( |
11 | traits => ['Counter'], |
12 | is => 'ro', |
13 | isa => 'Num', |
14 | required => 0, |
15 | default => 0, |
16 | handles => { |
17 | inc_level => 'inc', |
18 | dec_level => 'dec', |
19 | }, |
20 | ); |
21 | |
fc5995b6 |
22 | =attr messages |
23 | |
24 | =cut |
25 | |
14375407 |
26 | has 'messages' => ( |
27 | traits => ['Array'], |
28 | is => 'ro', |
29 | isa => 'ArrayRef[HashRef]', |
30 | required => 1, |
31 | default => sub { [] }, |
32 | handles => { |
33 | has_messages => 'count', |
34 | add_message => 'push', |
35 | all_messages => 'elements', |
36 | }, |
37 | ); |
38 | |
fc5995b6 |
39 | =method as_string |
40 | |
41 | =cut |
42 | |
14375407 |
43 | sub as_string { |
44 | my @messages = (shift)->all_messages; |
ad36c8f5 |
45 | my @flattened_msgs = map { |
46 | "\n". (" " x $_->{level}) ."[+] " . $_->{message}; |
47 | } reverse @messages; |
14375407 |
48 | |
ad36c8f5 |
49 | return join("", @flattened_msgs); |
50 | } |
14375407 |
51 | |
52 | no Moose; |
53 | __PACKAGE__->meta->make_immutable; |
54 | |
55 | 1; |