aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgekka <gekka@blackbit.it>2005-10-18 17:01:21 +0000
committergekka <gekka@blackbit.it>2005-10-18 17:01:21 +0000
commit3a97a2da5c4a5d0e93ec7402440f8321274dcbc2 (patch)
tree62d219e1cccd480084f8d5b5228c0e34853e864e
parentinizio del progetto: si possono definire semplici risorse via file di configu... (diff)
downloadWebCoso-3a97a2da5c4a5d0e93ec7402440f8321274dcbc2.tar.gz
WebCoso-3a97a2da5c4a5d0e93ec7402440f8321274dcbc2.tar.bz2
WebCoso-3a97a2da5c4a5d0e93ec7402440f8321274dcbc2.zip
Aggiunta supporto iniziale Collections
git-svn-id: svn://luxion/repos/WebCoso/trunk@4 fcb26f47-9200-0410-b104-b98ab5b095f3
-rw-r--r--Build.PL1
-rw-r--r--lib/WebCoso/Config.pm27
-rw-r--r--lib/WebCoso/Config/Collection.pm17
-rw-r--r--t/01-config.t43
4 files changed, 86 insertions, 2 deletions
diff --git a/Build.PL b/Build.PL
index 0918f8a..f14742c 100644
--- a/Build.PL
+++ b/Build.PL
@@ -7,6 +7,7 @@ my $build=Module::Build->new(
requires => {
Class::Std => 0,
Path::Class => 0,
+ Exporter::Lite => 0,
},
build_requires => {
Test::More => 0,
diff --git a/lib/WebCoso/Config.pm b/lib/WebCoso/Config.pm
index 68968da..d339bed 100644
--- a/lib/WebCoso/Config.pm
+++ b/lib/WebCoso/Config.pm
@@ -1,7 +1,9 @@
package WebCoso::Config;
use strict;
use warnings;
-use vars '@resources';
+
+my @resources;
+my @collections;
sub read_scalar {
my ($class,$content,$filename)=@_;
@@ -28,13 +30,27 @@ sub get_all_resources {
return @resources;
}
+sub add_collection {
+ my ($class,$collection)=@_;
+ push @collections,$collection;
+}
+
+sub get_all_collections {
+ return @collections;
+}
+
+sub clear {
+ @resources=();
+}
+
package WebCoso::Config::Helpers;
use Path::Class;
use WebCoso::Config::Resource;
+use WebCoso::Config::Collection;
use Exporter::Lite;
use vars qw($FILENAME @EXPORT);
-@EXPORT=qw(res);
+@EXPORT=qw(res coll);
sub res {
my $dest_filename=pop @_;
@@ -55,4 +71,11 @@ sub res {
});
}
+sub coll {
+ my ($name)=@_;
+ WebCoso::Config::Collection->new({
+ name=>$name,
+ });
+}
+
1;
diff --git a/lib/WebCoso/Config/Collection.pm b/lib/WebCoso/Config/Collection.pm
new file mode 100644
index 0000000..4b27026
--- /dev/null
+++ b/lib/WebCoso/Config/Collection.pm
@@ -0,0 +1,17 @@
+package WebCoso::Config::Collection;
+use strict;
+use warnings;
+use Class::Std;
+use WebCoso::Config;
+
+{
+my %name_of :ATTR( :init_arg<name> );
+
+sub BUILD {
+ my ($self,$ident,$args_ref)=@_;
+ WebCoso::Config->add_collection($self);
+}
+
+}
+
+1;
diff --git a/t/01-config.t b/t/01-config.t
index f14f6c9..6ae9fce 100644
--- a/t/01-config.t
+++ b/t/01-config.t
@@ -3,11 +3,13 @@ use strict;
use warnings;
use Path::Class;
use Test::More 'no_plan';
+use Test::Exception;
my $thisdir=file($0)->parent->absolute;
BEGIN { use_ok('WebCoso::Config'); }
+{
my $conf_file=<<'EOF';
res('src/file1.rest.txt','Id','dst/file.html');
EOF
@@ -41,3 +43,44 @@ is_deeply(
[$resources[0]->collections()],
[],
'no collections');
+}
+
+WebCoso::Config->clear();
+
+
+{
+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');
+
+my @resources=WebCoso::Config->get_all_resources();
+is(scalar @resources,1,'una risorsa definta');
+
+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';
+
+
+}
+
+WebCoso::Config->clear();
+
+{
+my $conf_file=<<'EOF';
+coll('coll1');
+EOF
+
+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');
+
+
+}