Changes
view release on metacpan or search on metacpan
lib/Changes.pm view on Meta::CPAN
line => ( $i + 1 ),
(
( defined( $re->{nl} ) && defined( $re->{space} ) )
? ( nl => ( $re->{space} // '' ) . ( $re->{nl} // '' ) )
: ( nl => undef )
),
raw => $l,
debug => $debug
));
}
else
{
warn( "I found an empty line outside a release and no release object to associate it to.\n" ) if( $self->_warnings_is_enabled );
# $releases->push( $self->new_line );
$nls->push( $self->new_line( raw => $l, debug => $debug ) );
}
}
# Preamble
elsif( $elements->is_empty )
{
$preamble->append( $l );
}
# Epilogue
# We found a line with no leading space with new blank lines before it and no epilogue yet, or maybe no blank lines, but with epilogue already set.
elsif( $l =~ /^(\S+.*?)(?<nl>[\015\012]+)?$/ms &&
(
( !$nls->is_empty && !defined( $epilogue ) ) ||
( defined( $epilogue ) && !defined( $release ) && !defined( $group ) && !defined( $change ) )
) &&
# If elements are empty this would rather be part of the preamble
!$elements->is_empty )
{
my $re = { %+ };
if( !$nls->is_empty )
{
$elements->push( $nls->list );
$nls->reset;
undef( $release );
undef( $change );
undef( $group );
$epilogue = $self->new_scalar( $l );
$self->epilogue( $epilogue );
}
else
{
$epilogue->append( $l );
}
}
else
{
chomp( $l );
warn( "Found an unrecognisable line: '$l'\n" ) if( $self->_warnings_is_enabled );
}
}
$self->elements( $elements );
return( $self );
}
sub preamble { return( shift->_set_get_scalar_as_object({
field => 'preamble',
callbacks =>
{
set => sub
{
my( $self, $text ) = @_;
if( defined( $text ) && $text->defined )
{
unless( $text =~ /[\015\012]$/ms )
{
$text->append( $self->nl // "\n" );
}
unless( $text =~ /[\015\012]{2,}$/ms )
{
$text->append( $self->nl // "\n" );
}
}
return( $text );
},
}
}, @_ ) ); }
sub preset
{
my $self = shift( @_ );
my $set = shift( @_ ) || return( $self->error( "No set name was provided." ) );
my $sets =
{
standard =>
{
# for Changes::Release
datetime_formatter => sub
{
my $dt = shift( @_ ) || DateTime::Lite->now;
require DateTime::Format::Lite;
my $fmt = DateTime::Format::Lite->new(
pattern => '%FT%T%z',
locale => 'en_GB',
);
$dt->set_formatter( $fmt );
my $tz = $self->time_zone;
$dt->set_time_zone( $tz ) if( $tz );
return( $dt );
},
# No need to provide it if it is just a space though, because it will default to it anyway
spacer => ' ',
# for Changes::Change
spacer1 => "\t",
spacer2 => ' ',
marker => '-',
max_width => 72,
# wrapper => $code_reference,
# for Changes::Group
group_spacer => "\t",
group_type => 'bracket', # [Some group]
}
};
return( $self->error( "Set requested ($set) is not supported." ) ) if( !exists( $sets->{ $set } ) );
my $def = $sets->{ $set };
$self->defaults( $def );
return( $self );
}
( run in 0.501 second using v1.01-cache-2.11-cpan-39bf76dae61 )