split out persistence / DB functionality
[scpubgit/stemmatology.git] / persistence / lib / Text / Tradition / TypeMap / Entry.pm
1 package Text::Tradition::TypeMap::Entry;
2 use Moose;
3
4 no warnings 'recursion';
5
6 use namespace::clean -except => 'meta';
7
8 with qw(KiokuDB::TypeMap::Entry::Std);
9
10 use YAML::XS ();
11
12 sub compile_collapse_body {
13     my ( $self, $class ) = @_;
14
15     return sub {
16         my ( $self, %args ) = @_;
17
18         my $object = $args{object};
19         return $self->make_entry(
20             %args,
21             data => YAML::XS::Dump($object)
22         );
23     };
24 }
25
26 sub compile_expand {
27     my ( $self, $class ) = @_;
28
29     return sub {
30         my ( $self, $entry ) = @_;
31         $self->inflate_data( YAML::XS::Load($entry->data), \(my $obj), $entry );
32         bless $obj, $class;
33         return $obj;
34     };
35 }
36
37 sub compile_refresh { return sub { die "TODO" } }
38
39 __PACKAGE__->meta->make_immutable;
40
41 1;