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