Commit | Line | Data |
f20e0e9e |
1 | use MooseX::Declare; |
2 | |
3 | class IronMunger::Monger { |
4 | |
f00c97c5 |
5 | use MooseX::Types::Moose qw(ArrayRef Str); |
f20e0e9e |
6 | use IronMunger::Calculate qw(:all); |
7 | use aliased 'IronMunger::Post'; |
8 | use signatures; |
9 | |
f00c97c5 |
10 | has name => (is => 'ro', isa => Str, required => 0, predicate => 'has_name'); |
11 | has nick => (is => 'ro', isa => Str, required => 0, predicate => 'has_nick'); |
12 | |
4142f6a9 |
13 | method full_name () { |
14 | join(' aka ',$self->name||'nameless',$self->nick||'anoncow'); |
15 | } |
16 | |
f20e0e9e |
17 | has posts => ( |
18 | is => 'ro', isa => ArrayRef[Post], required => 1, |
19 | default => sub { [] }, |
20 | ); |
21 | |
22 | has post_count => ( |
23 | is => 'ro', lazy => 1, |
24 | default => sub ($self) { successful_sequential_posts(@{$self->posts}) }, |
25 | ); |
26 | |
27 | has days_left => ( |
28 | is => 'ro', lazy => 1, |
29 | default => sub ($self) { days_remaining_to_post(@{$self->posts}) }, |
30 | ); |
79810d7d |
31 | |
32 | has level => ( |
33 | is => 'ro', lazy => 1, |
34 | default => sub ($self) { level_for_post_count($self->post_count) } |
35 | ); |
f20e0e9e |
36 | } |
37 | |
38 | 1; |