aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@luxion>2006-02-07 16:21:20 +0000
committerdakkar <dakkar@luxion>2006-02-07 16:21:20 +0000
commit3185eee7fed40526b3c9320ddb52d3b41a966213 (patch)
tree57a0ede95e19ff97677897a7e4031e0eab210a28
parentaggiornato Config con i nuovi fh lazy (diff)
downloadWebCoso-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.pm17
-rw-r--r--t/steps/rest-splitlang.t23
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');