diff options
author | dakkar <dakkar@luxion> | 2006-02-07 16:21:20 +0000 |
---|---|---|
committer | dakkar <dakkar@luxion> | 2006-02-07 16:21:20 +0000 |
commit | 3185eee7fed40526b3c9320ddb52d3b41a966213 (patch) | |
tree | 57a0ede95e19ff97677897a7e4031e0eab210a28 | |
parent | aggiornato Config con i nuovi fh lazy (diff) | |
download | WebCoso-3185eee7fed40526b3c9320ddb52d3b41a966213.tar.gz WebCoso-3185eee7fed40526b3c9320ddb52d3b41a966213.tar.bz2 WebCoso-3185eee7fed40526b3c9320ddb52d3b41a966213.zip |
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
-rw-r--r-- | lib/WebCoso/Step/ReST/SplitLang.pm | 17 | ||||
-rw-r--r-- | 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<from> :get<srckey> :default<datastream>); +my %dstkey_of :ATTR(:init_arg<to> :get<dstkey> :default<rstdoc>); + 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'); |