package WebCoso::ReST;
use strict;
use warnings;
use WebCoso::Common;
use Path::Class;
use Text::Restructured;
use Text::Restructured::Writer::LibXML;
use Log::Log4perl ':easy';
use Encode;
Text::Restructured::Directive::handle_directive( video => \&rst_video);
sub new {
my ($class,%opts)=@_;
my $self={%opts};
$self->{rest}=Text::Restructured->new(
{
D=>{
'file-insertion-enabled'=>1,
generator=>0,
date=>0,
'time'=>0,
'source-link'=>0,
'section-subtitles'=>1,
raw_enabled => 1,
},
},
'WebCoso');
$self->{fc}->add_parser(qr{\.rest\.txt$} =>
sub {
my $dudom=$self->{rest}->Parse(decode('utf-8',$_[1]),$_[0]);
return Text::Restructured::Writer::LibXML
->new->ProcessDOM($dudom);
});
bless $self,$class;
}
sub rst_video {
my($parser, $name, $parent, $source, $lineno, $dtext, $lit) = @_;
my $dhash = Text::Restructured::Directive::parse_directive($parser, $dtext, $lit, $source, $lineno);
my $options = $dhash->{options};
my @extra_attrs = (qw(loop type));
my $dom = Text::Restructured::Directive::image(@_,@extra_attrs);
$dom->tag('video');
for my $attr (@extra_attrs) {
if ($options->{$attr}) {
$dom->{attr}{$attr} = $options->{$attr};
}
}
return $dom;
}
1;