aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@luxion>2005-10-19 09:58:36 +0000
committerdakkar <dakkar@luxion>2005-10-19 09:58:36 +0000
commit4db992c02a87a8416d8ac3abd389e979d6444e54 (patch)
tree3a9f150c2283c4b2c7944987a33ef1fa7b3f2493
parentAggiunta supporto iniziale Collections (diff)
downloadWebCoso-4db992c02a87a8416d8ac3abd389e979d6444e54.tar.gz
WebCoso-4db992c02a87a8416d8ac3abd389e979d6444e54.tar.bz2
WebCoso-4db992c02a87a8416d8ac3abd389e979d6444e54.zip
aggiunto il supporto per i nomi delle collezioni
git-svn-id: svn://luxion/repos/WebCoso/trunk@5 fcb26f47-9200-0410-b104-b98ab5b095f3
-rw-r--r--lib/WebCoso/Config.pm1
-rw-r--r--lib/WebCoso/Config/Collection.pm39
-rw-r--r--lib/WebCoso/Config/Resource.pm12
-rw-r--r--t/01-config.t59
4 files changed, 98 insertions, 13 deletions
diff --git a/lib/WebCoso/Config.pm b/lib/WebCoso/Config.pm
index d339bed..74c150b 100644
--- a/lib/WebCoso/Config.pm
+++ b/lib/WebCoso/Config.pm
@@ -41,6 +41,7 @@ sub get_all_collections {
sub clear {
@resources=();
+ @collections=();
}
package WebCoso::Config::Helpers;
diff --git a/lib/WebCoso/Config/Collection.pm b/lib/WebCoso/Config/Collection.pm
index 4b27026..6b5d201 100644
--- a/lib/WebCoso/Config/Collection.pm
+++ b/lib/WebCoso/Config/Collection.pm
@@ -5,13 +5,50 @@ use Class::Std;
use WebCoso::Config;
{
-my %name_of :ATTR( :init_arg<name> );
+my %names_of :ATTR( :get<names> );
sub BUILD {
my ($self,$ident,$args_ref)=@_;
+
+ my $names=$args_ref->{name};
+ # trasformo un nome semplice in un nome "per qualsiasi lingua"
+ $names={''=>$names} unless ref($names) eq 'HASH';
+ $names_of{$ident}=$names;
+
WebCoso::Config->add_collection($self);
}
+sub axes {
+ return 'language';
+}
+
+sub axis {
+ my ($self,$axis_name)=@_;
+ if ($axis_name eq 'language') {
+ return keys %{ $self->get_names() }
+ }
+ else {
+ return;
+ }
+}
+
+sub properties {
+ my ($self,$axis_name,$axis_value,@rest)=@_;
+
+ if (@rest==0 and $axis_name eq 'language') {
+ if ( grep { $_ eq $axis_value }
+ keys %{ $self->get_names() }
+ ) {
+ return {
+ name => $self->get_names()->{$axis_value}
+ };
+ }
+ else {
+ return;
+ }
+ }
+}
+
}
1;
diff --git a/lib/WebCoso/Config/Resource.pm b/lib/WebCoso/Config/Resource.pm
index b499fec..4b5cd60 100644
--- a/lib/WebCoso/Config/Resource.pm
+++ b/lib/WebCoso/Config/Resource.pm
@@ -6,9 +6,9 @@ use WebCoso::Config;
{
-my %sources_of :ATTR( :init_arg<source> );
-my %pipelines_of :ATTR( :init_arg<pipeline> );
-my %dest_of :ATTR( :init_arg<destination> );
+my %sources_of :ATTR( :init_arg<source> :get<sources>);
+my %pipelines_of :ATTR( :init_arg<pipeline> :get<pipeline>);
+my %dest_of :ATTR( :init_arg<destination> :get<destination>);
sub BUILD {
my ($self,$ident,$args_ref)=@_;
@@ -22,7 +22,7 @@ sub axes {
sub axis {
my ($self,$axis_name)=@_;
if ($axis_name eq 'filename') {
- return @{$sources_of{ident($self)}};
+ return @{ $self->get_sources() };
}
else {
return;
@@ -32,7 +32,9 @@ sub axis {
sub datastream {
my ($self,$axis_name,$axis_value,@rest)=@_;
if (@rest==0 and $axis_name eq 'filename') {
- if ( grep { $_ eq $axis_value } @{$sources_of{ident($self)}} ) {
+ if ( grep { $_ eq $axis_value }
+ @{ $self->get_sources() }
+ ) {
return _read_file($axis_value);
}
}
diff --git a/t/01-config.t b/t/01-config.t
index 6ae9fce..c10dad6 100644
--- a/t/01-config.t
+++ b/t/01-config.t
@@ -14,7 +14,8 @@ my $conf_file=<<'EOF';
res('src/file1.rest.txt','Id','dst/file.html');
EOF
-ok(WebCoso::Config->read_scalar($conf_file,"$thisdir/config-in-test"),'eseguita la configurazione');
+ok(WebCoso::Config->read_scalar($conf_file,"$thisdir/config-in-test"),
+ 'eseguita la configurazione');
my @resources=WebCoso::Config->get_all_resources();
is(scalar @resources,1,'una risorsa definta');
@@ -53,7 +54,8 @@ my $conf_file=<<'EOF';
res('src/file1.rest.txt','src/nonce.rest.txt','Id','dst/file.html');
EOF
-ok(WebCoso::Config->read_scalar($conf_file,"$thisdir/config-in-test"),'eseguita la configurazione');
+ok(WebCoso::Config->read_scalar($conf_file,"$thisdir/config-in-test"),
+ 'eseguita la configurazione');
my @resources=WebCoso::Config->get_all_resources();
is(scalar @resources,1,'una risorsa definta');
@@ -62,9 +64,11 @@ is_deeply(
[$resources[0]->axis('filename')],
["$thisdir/src/file1.rest.txt", "$thisdir/src/nonce.rest.txt"],
'filenames');
-dies_ok {$resources[0]->datastream(filename=>"$thisdir/src/nonce.rest.txt")} 'muore se non trova il file';
-
-
+dies_ok
+ {
+ $resources[0]->datastream(filename=>"$thisdir/src/nonce.rest.txt")
+ }
+ 'muore se non trova il file';
}
WebCoso::Config->clear();
@@ -74,13 +78,54 @@ my $conf_file=<<'EOF';
coll('coll1');
EOF
-ok(WebCoso::Config->read_scalar($conf_file,"$thisdir/config-in-test"),'eseguita la configurazione');
+ok(WebCoso::Config->read_scalar($conf_file,"$thisdir/config-in-test"),
+ 'eseguita la configurazione');
is(scalar WebCoso::Config->get_all_resources(),0,'nessuna risorsa');
my @collections=WebCoso::Config->get_all_collections();
-
is(scalar @collections,1,'una collezione');
+is_deeply(
+ [$collections[0]->axes()],
+ ['language'],
+ 'multilingua');
+is_deeply(
+ [$collections[0]->axis('language')],
+ [''],
+ 'ma nessuna definita');
+my $props=$collections[0]->properties(language=>'');
+isa_ok($props,'HASH');
+is_deeply(
+ $props,
+ {name=>'coll1'},
+ 'solo il nome');
+}
+
+WebCoso::Config->clear();
+{
+my $conf_file=<<'EOF';
+my $c1=coll({it=>'coll1',en=>'coll1-en'});
+coll('coll2',[$c1]);
+EOF
+
+ok(WebCoso::Config->read_scalar($conf_file,"$thisdir/config-in-test"),
+ 'eseguita la configurazione');
+
+my @collections=WebCoso::Config->get_all_collections();
+is(scalar @collections,2,'due collezioni');
+
+is_deeply(
+ [sort $collections[0]->axis('language')],
+ ['en', 'it'],
+ 'due lingue');
+is(
+ $collections[0]->properties(language=>'en')->{name},
+ 'coll1-en',
+ 'nome en');
+is(
+ $collections[0]->properties(language=>'it')->{name},
+ 'coll1',
+ 'nome it');
}