package Perl::Metrics::Lite::Analysis::File::Plugin::Packages;
use strict;
use warnings;

sub init { }

sub measure {
    my ( $class, $context, $file ) = @_;
    my @unique_packages = ();
    my $found_packages  = $file->find('PPI::Statement::Package');

    return scalar @unique_packages
        if (
        !Perl::Metrics::Lite::Analysis::Util::is_ref( $found_packages, 'ARRAY' ) );

    my %seen_packages = ();

    foreach my $package ( @{$found_packages} ) {
        $seen_packages{ $package->namespace() }++;
    }

    @unique_packages = sort keys %seen_packages;

    return scalar @unique_packages;
}

1;