Analizo
view release on metacpan or search on metacpan
lib/Analizo/Model.pm view on Meta::CPAN
package Analizo::Model;
use strict;
use Graph;
use File::Basename;
sub new {
my @defaults = (
members => {},
modules => {},
files => {},
module_by_file => {},
calls => {},
lines => {},
protection => {},
inheritance => {},
parameters => {},
conditional_paths => {},
abstract_classes => [],
module_names => [],
modules_graph => undef,
files_graph => undef,
);
return bless { @defaults }, __PACKAGE__;
}
sub modules {
my ($self) = @_;
return $self->{modules};
}
sub module_names {
my ($self) = @_;
return @{$self->{module_names}};
}
sub declare_module {
my ($self, $module, $file) = @_;
if (! grep { $_ eq $module} @{$self->{module_names}}) {
push @{$self->{module_names}}, $module;
}
if (defined($file)) {
#undup filename
foreach (@{$self->{files}->{$module}}) {
return if($_ eq $file);
}
$self->{files}->{$module} ||= [];
push(@{$self->{files}->{$module}}, $file);
$self->{module_by_file}->{$file} ||= [];
push @{$self->{module_by_file}->{$file}}, $module;
}
}
sub files {
my ($self, $module) = @_;
return $self->{files}->{$module};
}
sub module_by_file {
my ($self, $file) = @_;
return @{$self->{module_by_file}->{$file} || []};
}
sub inheritance {
my ($self, $module) = @_;
my $list = $self->{inheritance}->{$module};
return $list ? @$list : ();
}
sub add_inheritance {
my ($self, $child, $parent) = @_;
$self->{inheritance}->{$child} = [] if !exists($self->{inheritance}->{$child});
push @{$self->{inheritance}->{$child}}, $parent;
}
sub members {
my ($self) = @_;
return $self->{members};
}
sub declare_member {
my ($self, $module, $member, $type) = @_;
( run in 2.506 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )