From 1289e62a8d1a1a5b94b0b502e2aacdb2cb6d501d Mon Sep 17 00:00:00 2001 From: dakkar Date: Sat, 4 Feb 2006 16:40:52 +0000 Subject: integrate le nuove resources al posto delle vecchie config::resources git-svn-id: svn://luxion/repos/WebCoso/trunk@150 fcb26f47-9200-0410-b104-b98ab5b095f3 --- lib/WebCoso/Config.pm | 28 +++++++++--- lib/WebCoso/Config/Collection.pm | 2 +- lib/WebCoso/Config/Collections.pm | 4 +- lib/WebCoso/Config/Resource.pm | 92 --------------------------------------- lib/WebCoso/Resource.pm | 24 ++++++++++ 5 files changed, 50 insertions(+), 100 deletions(-) delete mode 100644 lib/WebCoso/Config/Resource.pm (limited to 'lib') diff --git a/lib/WebCoso/Config.pm b/lib/WebCoso/Config.pm index 187602e..78c9dbe 100644 --- a/lib/WebCoso/Config.pm +++ b/lib/WebCoso/Config.pm @@ -66,7 +66,7 @@ sub clear { package WebCoso::Config::Helpers; use Path::Class; -use WebCoso::Config::Resource; +use WebCoso::Resource; use WebCoso::Config::Collection; use Exporter::Lite; use vars qw($FILENAME @EXPORT); @@ -101,10 +101,18 @@ sub res { ); }; - my $resource=WebCoso::Config::Resource->new({ - sources=>[@abs_source_files], - destination=>$dest_filename - }); + my $resource=WebCoso::Resource->new(); + $resource->set_property(sources=>[@abs_source_files]); + $resource->set_property(destination=>$dest_filename); + + for my $filename (@abs_source_files) { + $resource->set_property( + {filename=>$filename}, + datastream => _open_file($filename), + ); + } + + WebCoso::Config->add_resource($resource); # brutto! $resource_to_pipeline{$resource}=$pipeline_name; @@ -125,4 +133,14 @@ sub coll { return $collection; } +sub _open_file { + my ($filename)=@_; + + open my $fh,'<:raw',$filename + or WebCoso::X::OpenError->throw( + filename => $filename, + error => $!); + return $fh; +} + 1; diff --git a/lib/WebCoso/Config/Collection.pm b/lib/WebCoso/Config/Collection.pm index 961bc55..23b1aea 100644 --- a/lib/WebCoso/Config/Collection.pm +++ b/lib/WebCoso/Config/Collection.pm @@ -39,7 +39,7 @@ sub get_axes { return 'language'; } -sub get_axis_value { +sub get_axis_values { my ($self,$axis_name)=@_; if ($axis_name eq 'language') { return grep { $_ } keys %{ $self->get_names() } diff --git a/lib/WebCoso/Config/Collections.pm b/lib/WebCoso/Config/Collections.pm index 9cb3bbe..7c70e64 100644 --- a/lib/WebCoso/Config/Collections.pm +++ b/lib/WebCoso/Config/Collections.pm @@ -46,7 +46,7 @@ sub get_axes { return 'language'; } -sub get_axis_value { +sub get_axis_values { my ($self,$axis_name)=@_; if ($axis_name eq 'language') { return $self->_get_languages(); @@ -61,7 +61,7 @@ sub _get_languages { my %langs=(); for my $collection ($self->get_all_collections()) { - @langs{ $collection->get_axis_value('language') } = (); + @langs{ $collection->get_axis_values('language') } = (); } delete $langs{''}; diff --git a/lib/WebCoso/Config/Resource.pm b/lib/WebCoso/Config/Resource.pm deleted file mode 100644 index 96a1d33..0000000 --- a/lib/WebCoso/Config/Resource.pm +++ /dev/null @@ -1,92 +0,0 @@ -package WebCoso::Config::Resource; -use strict; -use warnings; -use Class::Std; -use Scalar::Util 'weaken'; -use List::MoreUtils 'any'; -use WebCoso::Config; -use WebCoso::X; - -{ - -my %sources_of :ATTR( :init_arg :get); -my %dest_of :ATTR( :init_arg :get); -my %collections_of :ATTR( :get ); - -sub BUILD { - my ($self,$ident,$args_ref)=@_; - - $collections_of{$ident}=[]; - - WebCoso::Config->add_resource($self); - - return; -} - -sub get_axes { - return 'filename'; -} - -sub get_axis_value { - my ($self,$axis_name)=@_; - if ($axis_name eq 'filename') { - return @{ $self->get_sources() }; - } - else { - return; - } -} - -sub get_datastream { - my ($self,$axis_name,$axis_value,@rest)=@_; - if (@rest==0 and $axis_name eq 'filename') { - if ( grep { $_ eq $axis_value } - @{ $self->get_sources() } - ) { - return _read_file($axis_value); - } - } - else { - return; - } -} - -sub get_properties { - return (); -} - -sub get_collections { - my ($self)=@_; - - return @{ $self->get_collections_ref() }; -} - -sub add_coll { - my ($self, $collection)=@_; - - return if any { $_ eq $collection } @{ $self->get_collections_ref() }; - - my $weak_collection = $collection; - weaken $weak_collection; - - push @{ $self->get_collections_ref() }, $weak_collection; - - $collection->add_res($self); - - return; -} - -sub _read_file :PRIVATE { - my ($filename)=@_; - - local $/; - open my $fh,'<:raw',$filename - or WebCoso::X::OpenError->throw( - filename => $filename, - error => $!); - return scalar <$fh>; -} - -} - -1; diff --git a/lib/WebCoso/Resource.pm b/lib/WebCoso/Resource.pm index 29146f2..077c577 100644 --- a/lib/WebCoso/Resource.pm +++ b/lib/WebCoso/Resource.pm @@ -2,6 +2,8 @@ package WebCoso::Resource; use strict; use warnings; use Class::Std; +use Scalar::Util 'weaken'; +use List::MoreUtils 'any'; #use WebCoso::X; #use Smart::Comments;$Data::Dumper::Useqq=1; @@ -9,6 +11,7 @@ use Class::Std; my %values_of :ATTR(:default<{}>); my %propnames_of :ATTR(:default<{}>); my %axes_of :ATTR(:default<{}>); +my %collections_of :ATTR(:get :default<[]>); sub get_axes { my ($self)=@_; @@ -67,6 +70,27 @@ sub get_property { return; } +sub get_collections { + my ($self)=@_; + + return @{ $self->get_collections_ref() }; +} + +sub add_coll { + my ($self, $collection)=@_; + + return if any { $_ eq $collection } @{ $self->get_collections_ref() }; + + my $weak_collection = $collection; + weaken $weak_collection; + + push @{ $self->get_collections_ref() }, $weak_collection; + + $collection->add_res($self); + + return; +} + sub _populate_axes_from { my ($self,$axes_spec)=@_; -- cgit v1.2.3