summaryrefslogtreecommitdiffstats
path: root/lib/IM/Engine/Plugin/Commands/Trait/Class/Formatted.pm
blob: 71c924979ff332057984bfcbb67fabaaf611c9bf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package IM::Engine::Plugin::Commands::Trait::Class::Formatted;
use Moose::Role;

has default_formatters => (
    traits  => ['Hash'],
    is      => 'ro',
    isa     => 'HashRef[CodeRef]',
    builder => '_build_default_formatters',
    handles => {
        formatter_for   => 'get',
        has_formatter   => 'exists',
        formattable_tcs => 'keys',
    },
);

sub _build_default_formatters {
    {
        'ArrayRef' => sub { join ', ', @{ shift() } },
        'Bool'     => sub { return shift() ? 'true' : 'false' },
        'Object'   => sub { shift() . "" },
    }
}

no Moose::Role;

1;