From 3185eee7fed40526b3c9320ddb52d3b41a966213 Mon Sep 17 00:00:00 2001 From: dakkar Date: Tue, 7 Feb 2006 16:21:20 +0000 Subject: portato SplitLang ai nuovi fh lazy, e aggiunta gestione chiavi arbitrarie git-svn-id: svn://luxion/repos/WebCoso/trunk@157 fcb26f47-9200-0410-b104-b98ab5b095f3 --- lib/WebCoso/Step/ReST/SplitLang.pm | 17 +++++++++++------ t/steps/rest-splitlang.t | 23 ++++++++++++++++------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/lib/WebCoso/Step/ReST/SplitLang.pm b/lib/WebCoso/Step/ReST/SplitLang.pm index dc60757..cdbc109 100644 --- a/lib/WebCoso/Step/ReST/SplitLang.pm +++ b/lib/WebCoso/Step/ReST/SplitLang.pm @@ -22,6 +22,9 @@ Fa tutto alla prima passata =cut +my %srckey_of :ATTR(:init_arg :get :default); +my %dstkey_of :ATTR(:init_arg :get :default); + my $lang_re=qr{^\s*\.\.\s+lang::(?:\s+(\w+))?\s*$}; sub process { @@ -29,10 +32,13 @@ sub process { return unless $stage eq 'meta'; - my $fh=$resource->get_property('datastream'); + my $srckey=$self->get_srckey(); + my $dstkey=$self->get_dstkey(); + + my $fh=$resource->get_property_fh($srckey); if (!defined $fh) { my ($filename)=$resource->get_axis_values('filename'); - $fh=$resource->get_property({filename=>$filename},'datastream'); + $fh=$resource->get_property_fh({filename=>$filename},$srckey); } binmode $fh,':utf8'; @@ -63,12 +69,11 @@ sub process { } } # salvo - $resource->set_property({language=>$_},rstdoc=>$docs{$_}) + $resource->set_property({language=>$_},$dstkey=>$docs{$_}) for keys %langs; } - else { # monolingua: cat - local $/; - $resource->set_property(rstdoc=> scalar <$fh>); + else { # monolingua: passa il filehandle + $resource->set_property($dstkey=>$fh); } # rimetto a posto il filehandle diff --git a/t/steps/rest-splitlang.t b/t/steps/rest-splitlang.t index c964b1c..10283b4 100644 --- a/t/steps/rest-splitlang.t +++ b/t/steps/rest-splitlang.t @@ -10,11 +10,11 @@ BEGIN {use_ok('WebCoso::Step::ReST::SplitLang')} my $step=WebCoso::Step::ReST::SplitLang->new(); sub make_res { - my ($rst_doc)=@_; - + my ($rst_doc,$key)=@_; + $key||='datastream'; my $resource=WebCoso::Resource->new(); open my $rst_fh,'<',\$rst_doc; - $resource->set_property({filename=>'mydoc.rest.txt'},datastream=>$rst_fh); + $resource->set_property({filename=>'mydoc.rest.txt'},$key=>$rst_fh); return $resource; } @@ -49,7 +49,7 @@ is_deeply([sort $resource->get_axes()], is_deeply([sort $resource->get_axis_values('language')], ['en','it'], 'lingue giuste'); -eq_or_diff($resource->get_property({language=>'it'},'rstdoc'),<<'END_REST_IT','italiano'); +eq_or_diff($resource->get_property_string({language=>'it'},'rstdoc'),<<'END_REST_IT','italiano'); riga comune ancora comune italiano @@ -58,7 +58,7 @@ italiano ancora comune (con spazi) END_REST_IT -eq_or_diff($resource->get_property({language=>'en'},'rstdoc'),<<'END_REST_EN','inglese'); +eq_or_diff($resource->get_property_string({language=>'en'},'rstdoc'),<<'END_REST_EN','inglese'); riga comune ancora comune inglese @@ -77,7 +77,7 @@ $step->process($resource,'meta'); is_deeply([$resource->get_axes()], ['filename'], 'monolingua'); -eq_or_diff($resource->get_property('rstdoc'),$rst_doc,'monolingua cat'); +eq_or_diff($resource->get_property_string('rstdoc'),$rst_doc,'monolingua cat'); $rst_doc=<<'END_REST'; .. lang:: @@ -91,4 +91,13 @@ $step->process($resource,'meta'); is_deeply([$resource->get_axes()], ['filename'], 'monolingua 2'); -eq_or_diff($resource->get_property('rstdoc'),$rst_doc,'monolingua 2 cat'); +eq_or_diff($resource->get_property_string('rstdoc'),$rst_doc,'monolingua 2 cat'); + +# test per le chiavi arbitrarie +$step=WebCoso::Step::ReST::SplitLang->new({from=>'source',to=>'dest'}); +$rst_doc=<<'END_REST'; +dati vari +END_REST +$resource=make_res($rst_doc,'source'); +$step->process($resource,'meta'); +eq_or_diff($resource->get_property_string('dest'),$rst_doc,'chiavi arbitrarie'); -- cgit v1.2.3