50 lines
896 B
Perl
50 lines
896 B
Perl
package modules;
|
|
|
|
use strict;
|
|
|
|
sub new {
|
|
my $proto = shift;
|
|
my $class = ref($proto) || $proto;
|
|
my $self = {};
|
|
bless ($self, $class);
|
|
|
|
my $options = \${$self->{OPTIONS}};
|
|
my $output = \${$self->{OUTPUT}};
|
|
my $modules = \%{$self->{MODULES}};
|
|
|
|
$$options = shift;
|
|
$$output = shift;
|
|
my $module_file = shift;
|
|
|
|
$module_file =~ s/^\.\///;
|
|
|
|
if($$options->progress) {
|
|
$$output->progress("$module_file");
|
|
}
|
|
|
|
my $allowed_dir;
|
|
my $spec_file;
|
|
|
|
open(IN, "< $module_file");
|
|
local $/ = "\n";
|
|
while(<IN>) {
|
|
s/^\s*?(.*?)\s*$/$1/; # remove whitespace at begining and end of line
|
|
s/^(.*?)\s*#.*$/$1/; # remove comments
|
|
/^$/ && next; # skip empty lines
|
|
|
|
if(/^%\s+(.*?)$/) {
|
|
$spec_file = $1;
|
|
next;
|
|
} else {
|
|
$allowed_dir = $1;
|
|
}
|
|
|
|
$$modules{$allowed_dir}{$spec_file}++;
|
|
}
|
|
close(IN);
|
|
|
|
return $self;
|
|
}
|
|
|
|
1;
|