aboutsummaryrefslogtreecommitdiff
path: root/lib/WebCoso
diff options
context:
space:
mode:
Diffstat (limited to 'lib/WebCoso')
-rw-r--r--lib/WebCoso/Resource.pm42
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)=@_;