basic comment store code
[scpubgit/Commentry.git] / lib / App / Commentry / CommentSet.pm
CommitLineData
4628d9c9 1package App::Commentry::CommentSet;
2
3use aliased 'App::Commentry::Comment';
4use JSON;
5use Moo;
6
7has base_dir => (is => 'ro', required => 1);
8has path => (is => 'ro', required => 1);
9
10has _json => (is => 'lazy');
11
12sub _build__json { JSON->new->utf8->pretty }
13
14has _members => (is => 'lazy');
15
16sub _build__members {
17 my ($self) = @_;
18 my $file = join('/', $self->base_dir, $self->path).'.json';
19 return [] unless -e $file;
20 my $text = do {
21 open my $in, '<', $file
22 or die "Couldn't open ${file}: $!";
23 local $/; <$in>;
24 };
25 [ map Comment->new($_), @{$self->_json->decode($text)} ];
26}
27
28sub flatten {
29 my ($self) = @_;
30 @{$self->_members};
31}
32
331;