aboutsummaryrefslogtreecommitdiff
path: root/lib/WebCoso
diff options
context:
space:
mode:
authordakkar <dakkar@luxion>2006-02-07 16:24:20 +0000
committerdakkar <dakkar@luxion>2006-02-07 16:24:20 +0000
commit7a81a4b710e37bcc64b65f6611b44c5496e6effb (patch)
treedbbacc5f43efdc8aa240cd3a864fcddb2ca02d70 /lib/WebCoso
parentportato SplitLang ai nuovi fh lazy, e aggiunta gestione chiavi arbitrarie (diff)
downloadWebCoso-7a81a4b710e37bcc64b65f6611b44c5496e6effb.tar.gz
WebCoso-7a81a4b710e37bcc64b65f6611b44c5496e6effb.tar.bz2
WebCoso-7a81a4b710e37bcc64b65f6611b44c5496e6effb.zip
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
Diffstat (limited to 'lib/WebCoso')
-rw-r--r--lib/WebCoso/Resource.pm11
-rw-r--r--lib/WebCoso/Step/ReST/ToXml.pm14
2 files changed, 18 insertions, 7 deletions
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<from> :get<srckey> :default<rstdoc>);
+my %dstkey_of :ATTR(:init_arg<to> :get<dstkey> :default<xmldom>);
+
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)
);
}