Blio
view release on metacpan or search on metacpan
lib/Blio/Node.pm view on Meta::CPAN
package Blio::Node;
# ABSTRACT: A Blio Node
our $VERSION = '2.009'; # VERSION
use v5.24;
use Moose;
use namespace::autoclean;
use MooseX::Types::Path::Class;
use Moose::Util::TypeConstraints;
use DateTime::Format::ISO8601;
use Encode;
use Markup::Unified;
use Blio::Image;
use XML::Atom::SimpleFeed;
use DateTime::Format::RFC3339;
use List::Util qw(any);
class_type 'DateTime';
coerce 'DateTime' => from 'Int' => via {
my $d = DateTime->from_epoch( epoch => $_ );
$d->set_time_zone('local');
return $d;
} => from 'Str' => via { DateTime::Format::ISO8601->parse_datetime($_) };
has 'base_dir' => ( is => 'ro', isa => 'Path::Class::Dir', required => 1 );
has 'source_file' =>
( is => 'ro', isa => 'Path::Class::File', required => 1, coerce => 1 );
has 'id' => (is => 'ro', isa=>'Str', required=>1, lazy_build=>1);
sub _build_id {
my $self = shift;
my $path = $self->source_file->relative($self->base_dir)->stringify;
$path=~s/\.txt$//;
return $path;
}
has 'url' => ( is => 'ro', isa => 'Str', lazy_build => 1 );
sub _build_url {
my $self = shift;
return $self->id.'.html';
}
has 'template' => (is=>'rw',isa=>'Str',required=>1,default=>'node.tt');
has 'title' => ( is => 'ro', isa => 'Str', required => 1 );
has 'date' => (
is => 'rw',
isa => 'DateTime',
required => 1,
lazy_build => 1,
coerce => 1
);
sub _build_date {
my $self = shift;
my $stat = $self->source_file->stat;
return $stat->mtime;
}
has 'language' => (is=>'ro', isa=>'Maybe[Str]');
has 'converter' => (is=>'ro', isa=>'Maybe[Str]');
has 'feed' => (is=>'rw',isa=>'Bool',default=>0);
has 'list' => (is=>'ro',isa=>'Bool',default=>0);
has 'author' => (is=>'ro',isa=>'Str');
has 'paged_list' => (is=>'ro',isa=>'Int',default=>0);
has 'list_image' => (is=>'ro',isa=>'Str');
has 'list_only' => (is=>'ro',isa=>'Bool',default=>0);
has 'raw_content' => ( is => 'rw', isa => 'Str' );
has 'content' => ( is => 'rw', isa => 'Str', lazy_build=>1 );
sub _build_content {
( run in 1.937 second using v1.01-cache-2.11-cpan-0d23b851a93 )