aboutsummaryrefslogtreecommitdiff
path: root/lib/WebCoso
diff options
context:
space:
mode:
Diffstat (limited to 'lib/WebCoso')
-rw-r--r--lib/WebCoso/Maker.pm4
-rw-r--r--lib/WebCoso/ReST.pm21
2 files changed, 22 insertions, 3 deletions
diff --git a/lib/WebCoso/Maker.pm b/lib/WebCoso/Maker.pm
index 35dc41f..5a6f20d 100644
--- a/lib/WebCoso/Maker.pm
+++ b/lib/WebCoso/Maker.pm
@@ -6,7 +6,7 @@ use File::Next;
use Path::Class;
use File::Cache::Parsed;
use Cwd 'abs_path';
-use YAML::Syck;
+use YAML;
use WebCoso::Common;
use WebCoso::TT;
use WebCoso::XSLT;
@@ -15,7 +15,7 @@ use Log::Log4perl ':easy';
my $fc=File::Cache::Parsed->new(follow=>1);
$fc->add_parser(qr{\.ya?ml$} =>
- sub { Load($_[1]) });
+ sub { local $YAML::LoadBlessed=1; Load($_[1]) });
$fc->add_writer(qr{\.ya?ml$} =>
sub { DumpFile($_[0],$_[1]) });
diff --git a/lib/WebCoso/ReST.pm b/lib/WebCoso/ReST.pm
index cc29d95..5f7f922 100644
--- a/lib/WebCoso/ReST.pm
+++ b/lib/WebCoso/ReST.pm
@@ -8,6 +8,8 @@ use Text::Restructured::Writer::LibXML;
use Log::Log4perl ':easy';
use Encode;
+Text::Restructured::Directive::handle_directive( video => \&rst_video);
+
sub new {
my ($class,%opts)=@_;
@@ -16,12 +18,13 @@ sub new {
$self->{rest}=Text::Restructured->new(
{
D=>{
- 'file-insertion-enabled'=>0, # we use TT
+ 'file-insertion-enabled'=>1, # we use TT for insertion, but we need this for "raw"
generator=>0,
date=>0,
'time'=>0,
'source-link'=>0,
'section-subtitles'=>1,
+ raw_enabled => 1,
},
},
'WebCoso');
@@ -36,4 +39,20 @@ sub new {
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));
+ # a video is like an image
+ 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;