aboutsummaryrefslogtreecommitdiff
path: root/lib/WebCoso
diff options
context:
space:
mode:
authordakkar <dakkar@luxion>2006-02-04 13:21:13 +0000
committerdakkar <dakkar@luxion>2006-02-04 13:21:13 +0000
commitdde06e5540367715bcbc3c3db02b20e0f5c420b7 (patch)
tree0822c01788d02e35711a273f18ac8e20142be431 /lib/WebCoso
parentpassa un po' di test, non tutti; parecchio debug (diff)
downloadWebCoso-dde06e5540367715bcbc3c3db02b20e0f5c420b7.tar.gz
WebCoso-dde06e5540367715bcbc3c3db02b20e0f5c420b7.tar.bz2
WebCoso-dde06e5540367715bcbc3c3db02b20e0f5c420b7.zip
passa tutti i test. mancano i controlli per evitare la sovrapopoplazione degli hash
git-svn-id: svn://luxion/repos/WebCoso/trunk@149 fcb26f47-9200-0410-b104-b98ab5b095f3
Diffstat (limited to 'lib/WebCoso')
-rw-r--r--lib/WebCoso/Resource.pm40
1 files changed, 25 insertions, 15 deletions
diff --git a/lib/WebCoso/Resource.pm b/lib/WebCoso/Resource.pm
index bb807ad..29146f2 100644
--- a/lib/WebCoso/Resource.pm
+++ b/lib/WebCoso/Resource.pm
@@ -3,7 +3,7 @@ use strict;
use warnings;
use Class::Std;
#use WebCoso::X;
-use Data::Dumper;$Data::Dumper::Useqq=1;
+#use Smart::Comments;$Data::Dumper::Useqq=1;
{
my %values_of :ATTR(:default<{}>);
@@ -42,19 +42,24 @@ sub get_property {
my $axes_spec= (ref($_[0]) eq 'HASH') ? (shift) : {};
my ($prop_name)=@_;
- print STDERR Data::Dumper->Dump([$self,$axes_spec,$prop_name],[qw(self axes_spec prop_name)]);
+ ### $self
+ ### $axes_spec
+ ### $prop_name
- my $key_rx=_genkey_retr($axes_spec);
+ my $req_key=_genkey($axes_spec);
my $values_ref=$values_of{ident $self}->{$prop_name};
- print STDERR Data::Dumper->Dump([$values_ref],['values_ref']);
+ ### $values_ref
- my @keys=sort {($a=~tr/\000//) <=> ($b=~tr/\000//)} keys %$values_ref;
+ my @keys=sort {($a=~tr/\001//) <=> ($b=~tr/\001//)} keys %$values_ref;
for my $key (@keys) {
- print STDERR Data::Dumper->Dump([$key],['testing key']);
- if ($key =~ m{$key_rx}) {
+ ### testing key: $key
+
+ my $key_rx=_genrx_from_key($key);
+
+ if ($req_key =~ m{$key_rx}) {
return $values_ref->{$key};
}
}
@@ -80,21 +85,26 @@ sub _genkey {
$key.=join "\000",map {$_."\001".$axes_spec->{$_}} sort keys %$axes_spec;
$key.="\000";
- print STDERR Data::Dumper->Dump([$key],['chiave']);
+ ### chiave: $key
return $key;
}
-sub _genkey_retr {
- my ($axes_spec)=@_;
+sub _genrx_from_key {
+ my ($key)=@_;
+
+ my (undef,@axes)=split /\000/,$key;
+
+ ### axes form key: \@axes
- my $rx="(?:\000";
- $rx.=join "\000)?(?:",map {quotemeta($_)."\001".quotemeta($axes_spec->{$_})} sort keys %$axes_spec;
- $rx.="\000)?";
+ my $rx="(?:";
+ $rx.=join "\000).*?(?:",map {quotemeta($_)} @axes;
+ $rx.=")";
+ $rx=qr{^\000.*?${rx}(?:\000|$)};
- print STDERR Data::Dumper->Dump([$rx],['regexp']);
+ ### regexp: $rx
- return qr{$rx};
+ return $rx;
}
}