Ignore:
Timestamp:
12/18/05 16:20:50 (19 years ago)
Author:
thauvin
Message:
  • make Archive dynamique
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/soft/ObsData/ObsData/Archive.pm

    • Property cvs2svn:cvs-rev changed from 1.12 to 1.13
    r161 r162  
    55use strict; 
    66use warnings; 
    7 use ObsData::Archive::FlatFile; 
    8 use ObsData::Archive::Compressed; 
    9 use ObsData::Archive::Tar; 
    10 use ObsData::Archive::Zip; 
    11 use ObsData::Archive::Rar; 
     7require ObsData::Archive::FlatFile; 
     8require ObsData::Archive::Compressed; 
     9require ObsData::Archive::Tar; 
     10require ObsData::Archive::Zip; 
     11require ObsData::Archive::Rar; 
    1212 
    1313our $CVSID = q$Id$; 
     
    1515 
    1616my $error = {}; 
     17 
     18my @dynload = (); 
     19 
     20sub register { 
     21    my ($rule, $class, $priority) = @_; 
     22    push( 
     23        @dynload, 
     24        { 
     25            rule => $rule, 
     26            class => $class, 
     27            priority => $priority, 
     28        } 
     29    ); 
     30    1; 
     31} 
    1732 
    1833sub new { 
     
    3651     
    3752    for ($archive) { 
    38         /\.tar(\.[^\.]*)?$/ and do { 
    39             $beclass = 'Tar'; 
    40             last; 
    41         }; 
    42         /\.(gz|bz2|Z)$/ and do { 
    43             $beclass = 'Compressed'; 
    44             last; 
    45         }; 
    46         /\.zip$/ and do { 
    47             $beclass = 'Zip'; 
    48             last; 
    49         }; 
    50         /\.rar$/ and do { 
    51             $beclass = 'Rar'; 
    52             last; 
    53         }; 
    54         $beclass = 'FlatFile'; 
     53        foreach my $r (sort { $a->{priority} <=> $b->{priority} } @dynload) { 
     54            if (ref($r->{rule}) eq 'CODE' ? 
     55                $r->{rule}->($_) : 
     56                /$r->{rule}/) { 
     57                $beclass = $r->{class}; 
     58                last; 
     59            } 
     60        } 
    5561    } 
    5662     
Note: See TracChangeset for help on using the changeset viewer.