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