package Module::License::Report::Object;

use strict;
use warnings;
use overload q{""} => 'name';

our $VERSION = '0.02';

=head1 NAME 

Module::License::Report::Object - Encapsulation of license information

=head1 LICENSE

Copyright 2005 Clotho Advanced Media, Inc., <cpan@clotho.com>

This library is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.

=head1 SYNOPSIS

    use Module::License::Report::Object;
    
    my $license = Module::License::Report::Object->new({...});
    print $license;                     # 'perl'
    print $license->source_file();      # 'META.yml'
    print $license->confidence();       # '100'
    print $license->package_version();  # '0.01'

=head1 DESCRIPTION

This module is intended for use with Module::License::Report.  You
likely will never need to use the C<new()> method, but the others will
likely be useful.

=head1 FUNCTIONS

=over

=item $pkg->new({...})

Creates a new license instance.  This is intended for internal use by
Module::License::Report::CPANPLUSModule.

=cut

sub new
{
   my $pkg         = shift;
   my $params_hash = shift;

   return bless {%$params_hash}, $pkg;
}

=item $license->name()

Returns the name of the license.  This name is of the form used by Module::Build.
See L<http://search.cpan.org/~kwilliams/Module-Build/lib/Module/Build/Authoring.pod#license> for the full list.

This method is called when C<$license> is used in string context.

=cut

sub name
{
   my $self = shift;
   return $self->{name};
}

=item $license->confidence()

Returns a confidence in the license as a number between 100 (high) and
0 (low).  These confidences are subjective, and reflect how direct
the determination of the license was, versus how many heuristics were
used.  For example, a license specified in C<META.yml> has a very high
confidence, while a string like C<under the same license as Perl
itself> parsed from README is given lower confidence.

=cut

sub confidence
{
   my $self = shift;
   return $self->{confidence};
}

=item $license->source_file()

Returns the name of the file which specified the license, relative to
the distribution folder.  This might be C<undef> if the license came
from the CPAN DSLIP parameter.

For example: C<META.yml>, C<README.txt>, C<lib/Foo/Bar.pm>.

=cut

sub source_file
{
   my $self = shift;
   return $self->{source_file};
}

=item $license->source_filepath()

Like C<source_file()>, but returns an absolute path.

=cut

sub source_filepath
{
   my $self = shift;
   return if (!defined $self->{source_file});
   return File::Spec->catfile($self->{module}->extract_dir(), $self->{source_file});
}

=item $license->source_name()

Returns a machine-readable keyword that describes the source of the
license.  If more than one source was used, they are comma-separated.
The list of keywords is: C<META.yml>, C<DSLIP>, C<Module>, C<POD>,
and C<LicenseFile>.

=cut

sub source_name
{
   my $self = shift;
   return $self->{source_name};
}

=item $license->source_description()

Returns a human-readable version of C<source_name()>.

=cut

sub source_description
{
   my $self = shift;
   return $self->{source_desc};
}

=item $license->module_name()

Returns the name of the module that started the license search.  So,
if the license of package Foo-Bar is C<perl>, this value could be any
of C<Foo::Bar>, C<Foo::Bar::Baz>, C<Foo::Bar::Quux>, etc.

=cut

sub module_name
{
   my $self = shift;
   return $self->{module}->name();
}

=item $license->package_name()

Returns the CPAN package name for the distribution.  For example,
C<Foo-Bar>.

=cut

sub package_name
{
   my $self = shift;
   return $self->{module}->package_name();
}

=item $license->package_version()

Returns the version number of the CPAN package that was used to determine the license.  For example,
C<0.12.03_01>.

=cut

sub package_version
{
   my $self = shift;
   return $self->{module}->package_version();
}

=item $license->package_dir()

Returns the directory name of the extracted distribution.  This is
typically a subdirectory of C<.cpanplus> somewhere.

=cut

sub package_dir
{
   my $self = shift;
   return $self->{module}->extract_dir();
}

1;
__END__

=back

=head1 SEE ALSO

Module::License::Report

=head1 AUTHOR

Clotho Advanced Media Inc., I<cpan@clotho.com>

Primary developer: Chris Dolan