|
Packit |
90fbfc |
package CPAN::Changes::Group;
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
use strict;
|
|
Packit |
90fbfc |
use warnings;
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
use Text::Wrap ();
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
sub new {
|
|
Packit |
90fbfc |
my $class = shift;
|
|
Packit |
90fbfc |
return bless {
|
|
Packit |
90fbfc |
changes => [],
|
|
Packit |
90fbfc |
@_,
|
|
Packit |
90fbfc |
}, $class;
|
|
Packit |
90fbfc |
}
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
# Intentionally read only
|
|
Packit |
90fbfc |
# to prevent hash key and name being out of sync.
|
|
Packit |
90fbfc |
sub name {
|
|
Packit |
90fbfc |
my $self = shift;
|
|
Packit |
90fbfc |
if ( not exists $self->{ name } ) {
|
|
Packit |
90fbfc |
$self->{ name } = q[];
|
|
Packit |
90fbfc |
}
|
|
Packit |
90fbfc |
return $self->{ name };
|
|
Packit |
90fbfc |
}
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
sub changes {
|
|
Packit |
90fbfc |
my $self = shift;
|
|
Packit |
90fbfc |
return $self->{ changes };
|
|
Packit |
90fbfc |
}
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
sub add_changes {
|
|
Packit |
90fbfc |
my $self = shift;
|
|
Packit |
90fbfc |
push @{ $self->{ changes } }, @_;
|
|
Packit |
90fbfc |
}
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
sub set_changes {
|
|
Packit |
90fbfc |
my $self = shift;
|
|
Packit |
90fbfc |
$self->{ changes } = \@_;
|
|
Packit |
90fbfc |
}
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
sub clear_changes {
|
|
Packit |
90fbfc |
my $self = shift;
|
|
Packit |
90fbfc |
$self->{ changes } = [];
|
|
Packit |
90fbfc |
}
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
sub is_empty {
|
|
Packit |
90fbfc |
my $self = shift;
|
|
Packit |
90fbfc |
return !@{ $self->changes };
|
|
Packit |
90fbfc |
}
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
sub serialize {
|
|
Packit |
90fbfc |
my $self = shift;
|
|
Packit |
90fbfc |
my %args = @_;
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
my $output = '';
|
|
Packit |
90fbfc |
my $name = $self->name;
|
|
Packit |
90fbfc |
$output .= sprintf " [%s]\n", $name if length $name;
|
|
Packit |
90fbfc |
# change logs commonly have long URLs we shouldn't break, and by default
|
|
Packit |
90fbfc |
# Text::Wrap wraps on NONBREAKING SPACE.
|
|
Packit |
90fbfc |
local $Text::Wrap::break = '[\t ]';
|
|
Packit |
90fbfc |
local $Text::Wrap::huge = 'overflow';
|
|
Packit |
90fbfc |
$output .= Text::Wrap::wrap( ' - ', ' ', $_ ) . "\n" for @{ $self->changes };
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
return $output;
|
|
Packit |
90fbfc |
}
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
1;
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
__END__
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=head1 NAME
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
CPAN::Changes::Group - A group of related change information within a release
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=head1 SYNOPSIS
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
my $rel = CPAN::Changes::Release->new(
|
|
Packit |
90fbfc |
version => '0.01',
|
|
Packit |
90fbfc |
date => '2009-07-06',
|
|
Packit |
90fbfc |
);
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
my $grp = CPAN::Changes::Group->new(
|
|
Packit |
90fbfc |
name => 'BugFixes',
|
|
Packit |
90fbfc |
);
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
$grp->add_changes(
|
|
Packit |
90fbfc |
'Return a Foo object instead of a Bar object in foobar()'
|
|
Packit |
90fbfc |
);
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
$rel->attach_group( $grp ); # clobbers existing group if present.
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=head1 DESCRIPTION
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
A release is made up of several groups. This object provides access
|
|
Packit |
90fbfc |
to all of the key data that embodies a such a group.
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
For instance:
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
0.27 2013-12-13
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
- Foo
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
[ Spec Changes ]
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
- Bar
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
Here, there are two groups, the second one, C< Spec Changes > and the first with the empty label C<q[]>.
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=head1 METHODS
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=head2 new( %args )
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
Creates a new group object, using C<%args> as the default data.
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
Group->new(
|
|
Packit |
90fbfc |
name => 'Some Group Name',
|
|
Packit |
90fbfc |
changes => [ ],
|
|
Packit |
90fbfc |
);
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=head2 name()
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
Returns the name of the group itself.
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=head2 changes( [ $group ] )
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
Gets the list of changes for this group as an arrayref of changes.
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=head2 add_changes( @changes )
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
Appends a list of changes to the group.
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
$group->add_changes( 'Added foo() function' );
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=head2 set_changes( @changes )
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
Replaces the existing list of changes with the supplied values.
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=head2 clear_changes( )
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
Clears all changes from the group.
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=head2 groups( sort => \&sorting_function )
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
Returns a list of current groups in this release.
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=head2 is_empty()
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
Returns whether or not the given group has changes.
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=head2 serialize()
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
Returns the group data as a string, suitable for inclusion in a Changes
|
|
Packit |
90fbfc |
file.
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=head1 SEE ALSO
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=over 4
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=item * L<CPAN::Changes::Release>
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=item * L<CPAN::Changes::Spec>
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=item * L<CPAN::Changes>
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=item * L<Test::CPAN::Changes>
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=back
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=head1 AUTHOR
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
Brian Cassidy E<lt>bricas@cpan.orgE<gt>
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=head1 COPYRIGHT AND LICENSE
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
Copyright 2011-2013 by Brian Cassidy
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
This library is free software; you can redistribute it and/or modify
|
|
Packit |
90fbfc |
it under the same terms as Perl itself.
|
|
Packit |
90fbfc |
|
|
Packit |
90fbfc |
=cut
|