switch snippets across to object based
[catagits/catbook-code.git] / lib / LolCatalyst / Lite / SnippetStore.pm
1 package LolCatalyst::Lite::SnippetStore;
2
3 use Moose;
4 use aliased 'LolCatalyst::Lite::Snippet';
5 use namespace::clean -except => 'meta';
6
7 has '_snippets' => (is => 'ro', default => sub { [] });
8 has '_translator' => (
9   is => 'ro',
10   required => 1,
11   lazy => 1,
12   default => sub {
13     confess "_translator object requested but never supplied"
14   },
15   init_arg => 'translator'
16 );
17
18 sub find {
19   my ($self, $id) = @_;
20   $self->_snippets->[$id - 1];
21 }
22
23 sub all {
24   my ($self) = @_;
25   @{$self->_snippets};
26 }
27
28 sub create {
29   my ($self, $new) = @_;
30   my $snippet = Snippet->new(
31     %$new,
32     id => (@{$self->_snippets} + 1),
33     translator => $self->_translator
34   );
35   push(@{$self->_snippets}, $snippet);
36   $snippet;
37 }
38
39 __PACKAGE__->meta->make_immutable;
40
41 1;