From 7a81a4b710e37bcc64b65f6611b44c5496e6effb Mon Sep 17 00:00:00 2001 From: dakkar Date: Tue, 7 Feb 2006 16:24:20 +0000 Subject: portato ToXml ai nuovi fh lazy, e aggiunta gestione chiavi arbitrarie git-svn-id: svn://luxion/repos/WebCoso/trunk@158 fcb26f47-9200-0410-b104-b98ab5b095f3 --- lib/WebCoso/Resource.pm | 11 ++++++++--- lib/WebCoso/Step/ReST/ToXml.pm | 14 ++++++++++---- 2 files changed, 18 insertions(+), 7 deletions(-) (limited to 'lib/WebCoso') diff --git a/lib/WebCoso/Resource.pm b/lib/WebCoso/Resource.pm index be9a199..7d462f3 100644 --- a/lib/WebCoso/Resource.pm +++ b/lib/WebCoso/Resource.pm @@ -49,12 +49,12 @@ sub get_property { ### $axes_spec ### $prop_name - my $req_key=_genkey($axes_spec); - + return unless exists $values_of{ident $self}->{$prop_name}; my $values_ref=$values_of{ident $self}->{$prop_name}; ### $values_ref + my $req_key=_genkey($axes_spec); my @keys=sort {($a=~tr/\001//) <=> ($b=~tr/\001//)} keys %$values_ref; for my $key (@keys) { @@ -77,6 +77,8 @@ sub get_property_fh { my $prop_value=$self->get_property($axes_spec,$prop_name); + return unless defined $prop_value; + if (ref($prop_value) eq 'CODE') { $prop_value=$prop_value->(); } @@ -87,7 +89,8 @@ sub get_property_fh { return $fh; } else { # speriamo stringa... - open my $fh,'<',\$prop_value; + my $val="$prop_value"; + open my $fh,'<',\$val; return $fh; } } @@ -99,6 +102,8 @@ sub get_property_string { my $prop_value=$self->get_property($axes_spec,$prop_name); + return unless defined $prop_value; + if (ref($prop_value) eq 'CODE') { $prop_value=$prop_value->(); } diff --git a/lib/WebCoso/Step/ReST/ToXml.pm b/lib/WebCoso/Step/ReST/ToXml.pm index 2f9384a..f65e71c 100644 --- a/lib/WebCoso/Step/ReST/ToXml.pm +++ b/lib/WebCoso/Step/ReST/ToXml.pm @@ -21,6 +21,9 @@ Fa tutto alla prima passata =cut +my %srckey_of :ATTR(:init_arg :get :default); +my %dstkey_of :ATTR(:init_arg :get :default); + my $xml_parser=XML::LibXML->new(); $xml_parser->load_ext_dtd(0); $xml_parser->clean_namespaces(1); @@ -32,21 +35,24 @@ sub process { my ($src_path)=$resource->get_axis_values('filename'); + my $srckey=$self->get_srckey(); + my $dstkey=$self->get_dstkey(); + my ($rst_doc,$xml_dom); - $rst_doc=$resource->get_property('rstdoc'); + $rst_doc=$resource->get_property_string($srckey); if (defined $rst_doc) { # monolingua $resource->set_property( - 'xmldom', + $dstkey, rst2xml($rst_doc,$src_path) ); } else { # multilingua my @langs=$resource->get_axis_values('language'); for my $cur_lang (@langs) { - $rst_doc=$resource->get_property({language=>$cur_lang},'rstdoc'); + $rst_doc=$resource->get_property_string({language=>$cur_lang},$srckey); $resource->set_property( {language=>$cur_lang}, - 'xmldom', + $dstkey, rst2xml($rst_doc,$src_path,$cur_lang) ); } -- cgit v1.2.3