Changeset 162


Ignore:
Timestamp:
12/18/05 16:20:50 (18 years ago)
Author:
thauvin
Message:
  • make Archive dynamique
Location:
trunk/soft/ObsData/ObsData
Files:
6 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     
  • trunk/soft/ObsData/ObsData/Archive/Compressed.pm

    • Property cvs2svn:cvs-rev changed from 1.7 to 1.8
    r160 r162  
    7474} 
    7575 
    76 1; 
     76ObsData::Archive::register(sub { $_[0] =~ /\.(gz|Z|bz2)$/i }, 'Compressed', 5); 
  • trunk/soft/ObsData/ObsData/Archive/FlatFile.pm

    • Property cvs2svn:cvs-rev changed from 1.1 to 1.2
    r158 r162  
    5959} 
    6060 
    61 1; 
     61ObsData::Archive::register('.*', 'FlatFile', 10); 
  • trunk/soft/ObsData/ObsData/Archive/Rar.pm

    • Property cvs2svn:cvs-rev changed from 1.2 to 1.3
    r160 r162  
    7474} 
    7575 
    76 1; 
     76ObsData::Archive::register(sub { $_[0] =~ /\.rar$/i }, 'Rar', 0); 
  • trunk/soft/ObsData/ObsData/Archive/Tar.pm

    • Property cvs2svn:cvs-rev changed from 1.5 to 1.6
    r160 r162  
    8181} 
    8282 
    83 1; 
     83ObsData::Archive::register( 
     84    sub { 
     85        $_[0] =~ /\.tar\.(gz|bz2|Z)$/i; 
     86    },  
     87    'Tar',  
     88    0 
     89); 
  • trunk/soft/ObsData/ObsData/Archive/Zip.pm

    • Property cvs2svn:cvs-rev changed from 1.2 to 1.3
    r160 r162  
    7474} 
    7575 
    76 1; 
     76ObsData::Archive::register(sub { $_[0] =~ /\.zip$/i }, 'Zip', 5); 
Note: See TracChangeset for help on using the changeset viewer.