Platon Technologies
neprihlásený Prihlásiť Registrácia
SlovakEnglish
open source software development oslavujeme 10 rokov vývoja otvoreného softvéru! Nedeľa, 15. marec 2026

Súbor: [Platon] / iotta / Iotta / Feeder / Recurse.pm (stiahnutie)

Revízia 1.1.1.1, Sun Feb 16 15:48:11 2003 UTC (23 years, 1 month ago) by yenar


Zmeny od 1.1: +0 -0 [lines]

initial import of iotta into platon cvs

package Iotta::Feeder::Recurse;
use strict;
require Iotta::Elem;
our @ISA = ("Iotta::Elem");

sub run {
    my $self = shift;
    my $meta = shift;
    $self->recurse ($self->root, $meta);
}

sub recurse {
    my ($dir, @dirs, $self);
    $self = shift;
    $dir = shift;
    $self -> level ($self -> level + 1);
    my $filt = $self->filter;
    my $ign = $self->ignore;
    opendir (DIR, $dir);
    @dirs = readdir (DIR);
    closedir DIR;
    for (@dirs) {
        if (! /^\.$|^\.\.$/) {
            #print STDERR "iotta::ctrl::mfile::recurse: $_\n";
            if ( -f "$dir/$_" && "$dir/$_" =~ $filt ) {
                $self->file_proc ("$dir/$_") if ("$dir/$_" !~ $ign);
            } elsif ( -d "$dir/$_" && ! /^\./) {
                $self->recurse ("$dir/$_")
                    unless ("$dir/$_" eq "./".$self->{outdir});
            }
        }
    }
    $self -> level ($self -> level - 1);
}

sub file_proc {
    my $self = shift;
    my $f = shift;
    my %meta = %{$self->meta};
    my $i = 0;
    print STDERR "input=$f\n";
    $meta{input} = $f;
    $meta{root_dir} = $self->root;
    $meta{top} = '.';
    while ($i < $self -> level) {
        $meta{top} .= "/..";
        $i ++;
    }
    $self->next->run(\%meta, 0) if ($self->next);
}

sub setup {
    my $self = shift;
    my $o = shift;
    $self->filter ($$o{filter});
    $self->root ($$o{root});
    $self->ignore ($$o{ignore});
    $self->ignore ("^\$") unless ($self->ignore);
}

sub initialize {
    my $self = shift;
    $self->SUPER::initialize (@_);
    $self->{root}="";
    $self->{filter}="";
    $self->{ignore}="";
    $self->{meta}={};
    $self->{level} = -1;
}

1;

Platon Group <platon@platon.sk> http://platon.sk/
Copyright © 2002-2006 Platon Group
Stránka používa redakčný systém Metafox
Na začiatok