diff options
Diffstat (limited to 'lib/WebCoso')
-rw-r--r-- | lib/WebCoso/Resource.pm | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/WebCoso/Resource.pm b/lib/WebCoso/Resource.pm index 077c577..be9a199 100644 --- a/lib/WebCoso/Resource.pm +++ b/lib/WebCoso/Resource.pm @@ -70,6 +70,48 @@ sub get_property { return; } +sub get_property_fh { + my $self=shift; + my $axes_spec= (ref($_[0]) eq 'HASH') ? (shift) : {}; + my ($prop_name)=@_; + + my $prop_value=$self->get_property($axes_spec,$prop_name); + + if (ref($prop_value) eq 'CODE') { + $prop_value=$prop_value->(); + } + + if (ref($prop_value)) { # speriamo filehandle... + open my $fh,'<&',$prop_value; # dup in lettura + seek $fh,0,0; + return $fh; + } + else { # speriamo stringa... + open my $fh,'<',\$prop_value; + return $fh; + } +} + +sub get_property_string { + my $self=shift; + my $axes_spec= (ref($_[0]) eq 'HASH') ? (shift) : {}; + my ($prop_name)=@_; + + my $prop_value=$self->get_property($axes_spec,$prop_name); + + if (ref($prop_value) eq 'CODE') { + $prop_value=$prop_value->(); + } + + if (ref($prop_value)) { # speriamo filehandle... + seek $prop_value,0,0; + return do {local $/;<$prop_value>} + } + else { + return "$prop_value"; + } +} + sub get_collections { my ($self)=@_; |