Blio
view release on metacpan or search on metacpan
lib/Blio/Node.pm view on Meta::CPAN
if ($self->inline_images) {
$raw_content=~s/<bliothumb:(.*?)>/$self->call_on_image_by_name($1,'thumbnail')/ge;
$raw_content=~s/<blioimg:(.*?)>/$self->call_on_image_by_name($1,'url')/ge;
$raw_content=~s/<bliothumb#(\d+)>/$self->call_on_image_by_index($1,'thumbnail')/ge;
$raw_content=~s/<blioimg#(\d+)>/$self->call_on_image_by_index($1,'url')/ge;
}
if ($converter eq 'html') {
return $raw_content;
}
elsif (any { $converter eq $_ } qw(textile markdown bbcode)) {
my $o = Markup::Unified->new();
return $o->format($raw_content, $converter)->formatted;
}
else {
my $method = 'convert_'.$converter;
if ($self->can($method)) {
return $self->$method($raw_content);
}
else {
return "<pre>No such converter: $converter</pre>".$raw_content;
}
}
}
has 'tags' => (
is => 'rw',
isa => 'ArrayRef',
default => sub { [] },
traits => ['Array'],
handles => {
has_tags => 'count',
},
);
has 'images' => (
is => 'rw',
isa => 'ArrayRef[Blio::Image]',
default => sub { [] },
traits => ['Array'],
handles => {
has_images => 'count',
add_image => 'push',
},
);
has 'inline_images' => (is=>'ro',isa=>'Bool',default=>0);
has 'thumbnail' => (is=>'ro',isa=>'Int');
has 'children' => (
is => 'rw',
isa => 'ArrayRef[Blio::Node]',
default => sub { [] },
traits => ['Array'],
handles => {
has_children => 'count',
add_child => 'push',
},
);
has 'parent' => ( is => 'rw', isa => 'Maybe[Blio::Node]', weak_ref => 1);
has 'stash' => (is=>'ro',isa=>'HashRef',default=>sub {{}});
has 'feed_url' => (is=>'ro',isa=>'Str',lazy_build=>1);
sub _build_feed_url {
my $self = shift;
return $self->id.'.xml';
}
sub is_list {
my $self = shift;
return $self->list || $self->feed;
}
sub new_from_file {
my ( $class, $blio, $file ) = @_;
my @lines = $file->slurp(
chomp => 1,
iomode => '<:encoding(UTF-8)',
);
my ( $header, $raw_content ) = $class->parse(@lines);
my $tags = delete $header->{tags};
my $node = $class->new(
base_dir => $blio->source_dir,
language => $blio->language,
converter => $blio->converter,
source_file => $file,
%$header,
raw_content => $raw_content,
stash=>$header,
);
$node->register_tags($blio, $tags) if $tags && $blio->tags;
# check and add single image
foreach my $ext (qw(jpg jpeg png)) {
my $single_image = $file->basename;
$single_image =~ s/\.txt$/.$ext/i;
my $single_image_file = $file->parent->file($single_image);
if (-e $single_image_file) {
my $img = Blio::Image->new(
base_dir => $blio->source_dir,
source_file => $single_image_file,
);
$node->add_image($img);
}
}
# check and add images dir
my $img_dir = $file->basename;
$img_dir=~s/\.txt$//;
$img_dir = $file->parent->subdir($img_dir.'_images');
if (-d $img_dir) {
while (my $image_file = $img_dir->next) {
next unless $image_file =~ /\.(jpe?g|png)$/i;
my $img = Blio::Image->new(
base_dir => $blio->source_dir,
source_file => $image_file,
);
$node->add_image($img);
}
}
( run in 0.758 second using v1.01-cache-2.11-cpan-ceb78f64989 )