Catalyst Introducing Catalyst #14

Revision Class

has 'storage' => (
    is       => 'ro',
    isa      => Dir,
    required => 1,
    coerce   => 1,
);

has 'filename' => (
    is       => 'ro',
    isa      => 'Str',
    required => 1,
);

has 'author' => (
    is       => 'ro',
    isa      => 'Str',
    required => 1,
);

subtype DateTime
  => as Class
  => where { blessed $_ && $_->isa('DateTime') };

coerce DateTime
  => as Num
  => via { DateTime->from_epoch( epoch => $_ ) };

has 'date' => (
    is       => 'ro',
    isa      => 'DateTime',
    coerce   => 1,
    required => 1,
);

has 'content' => (
    is      => 'rw',
    isa     => 'Str',
    default => sub { shift->_read_content },
    lazy    => 1,
);
""