1 package Fedora
::Rebuild
::Set
::Package
;
4 use version
0.77; our $VERSION = version
->declare("v0.7.0");
7 use Scalar
::Util
qw( blessed );
13 isa
=> 'HashRef[Fedora::Rebuild::Package]',
14 default => sub { {} },
17 # Usage: $set->insert(F::R::Package)
19 my ($self, $package) = @_;
20 ${$self->set}{$package->name} = $package;
24 # Accepts F::R::Package or name string
26 my ($self, $name) = @_;
27 if (!(defined $name)) { return 0; }
31 return exists ${$self->set}{$name};
34 # Return number of packages in the set
37 return scalar(keys %{$self->set});
40 # Return list of package names in the set
43 return keys %{$self->set};
46 # Return list of packages in the set
49 return values %{$self->set};
52 # Stringify sorted list of package names as one string (separate by separator)
53 # Usage: $set->string(' ');
54 # or: $set->string; # Default separotor is a space
56 my ($self, $separator) = @_;
57 if (!defined $separator) { $separator = ' '; }
58 return join($separator, sort($self->names));
61 # Return a package by F::R::Package or name string
62 # Return undef if it does not exist.
64 my ($self, $name) = @_;
65 if (!(defined $name)) { return 0; }
69 if (exists ${$self->set}{$name}) {
70 return ${$self->set}{$name}; }
77 # Remove a package by F::R::Package or name string
79 my ($self, $name) = @_;
80 if (!(defined $name)) { return 0; }
84 if (exists ${$self->set}{$name}) {
85 delete ${$self->set}{$name};