/usr/local/CPAN/JSAN-Client/JSAN/Index/Release/Dependency.pm
package JSAN::Index::Release::Dependency;
use strict;
use Params::Util '_INSTANCE';
use Algorithm::Dependency::Ordered;
use vars qw{$VERSION @ISA};
BEGIN {
$VERSION = '0.28';
@ISA = 'Algorithm::Dependency::Ordered';
}
sub new {
my $class = ref $_[0] ? ref shift : shift;
my %params = @_;
# Apply defaults
$params{source} ||= JSAN::Index::Release::Source->new( %params );
# Hand off to superclass constructor
my $self = $class->SUPER::new( %params )
or Carp::croak("Failed to create JSAN::Index::Release::Dependency object");
# Save the type for later
$self->{build} = !! $params{build};
$self;
}
sub build { $_[0]->{build} }
sub schedule {
my $self = shift;
my @schedule = @_;
# Convert things in the schedule from index objects to
# release source strings as needed
my @cleaned = ();
foreach my $item ( @schedule ) {
if ( defined $item and ! ref $item and $item =~ /^(?:\w+)(?:\.\w+)*$/ ) {
$item = JSAN::Index::Library->retrieve( name => $item );
}
if ( _INSTANCE($item, 'JSAN::Index::Library') ) {
$item = $item->release;
}
if ( _INSTANCE($item, 'JSAN::Index::Release') ) {
$item = $item->source;
}
push @cleaned, $item;
}
$self->SUPER::schedule(@cleaned);
}
1;