package Gitosis::Config::Reader;
use Moose;
extends qw(Config::INI::Reader);
sub can_ignore {
my ( $self, $line ) = @_;
return $line =~ /\A\s*(?:;|$|#)/ ? 1 : 0; # Skip comments and empty lines
}
has _current_key => ( isa => 'Str', is => 'rw', );
around parse_value_assignment => sub {
my ( $next, $self ) = splice @_, 0, 2; # pull these off @_
if ( my ( $key, $value ) = $self->$next(@_) ) {
$self->_current_key($key);
return ( $key, $value );
}
elsif ( $_[0] =~ /^\s*(.+)\s*$/ ) {
return $self->_current_key, $1;
}
return;
};
no Moose;
1;
__END__
=head1 NAME
Gitosis::Config::Reader - A class to read gitosis.conf files.
=head1 SYNOPSIS
use Gitosis::Config::Reader;
my $cfg = Gitosis::Config::Reader->read_file( $args->{file} );
=head1 DESCRIPTION
The Gitosis::Config::Reader class extends Config::INI::Reader.
=head1 METHODS
All methods are exactly the same as Config::INI::Reader except as documented
below.
=head2 can_ignore
Overridden to include lines starting with ; or #
=head2 parse_value_assignment
Overridden to allow for multiple lines per assignment. The current
implementation is very hackish and may be replaced in the future.
Overriden
=head1 DEPENDENCIES
Moose, Config::INI::Reader
=head1 BUGS AND LIMITATIONS
None known currently, please email the author if you find any.
=head1 AUTHOR
Chris Prather (chris@prather.org)
=head1 LICENCE
Copyright 2009 by Chris Prather.
This software is free. It is licensed under the same terms as Perl itself.
=cut