Skip to content
This repository has been archived by the owner on Mar 7, 2019. It is now read-only.

Commit

Permalink
keyword method can now take a hashref of overrides for variable inter…
Browse files Browse the repository at this point in the history
…polation
  • Loading branch information
jberger committed Feb 28, 2012
1 parent e6508ab commit 740e970
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 4 deletions.
15 changes: 11 additions & 4 deletions lib/Alien/Base/PkgConfig.pm
Expand Up @@ -79,17 +79,24 @@ sub make_abstract {

sub _interpolate_vars {
my $self = shift;
my ($string) = @_;
my ($string, $override) = @_;

1 while $string =~ s/\$\{(.*?)\}/$self->{vars}{$1}/e;
1 while $string =~ s/\$\{(.*?)\}/$override->{$1} || $self->{vars}{$1}/e;

return $string;
}

sub keyword {
my $self = shift;
my ($keyword) = @_;
return $self->_interpolate_vars( $self->{keywords}{$keyword} );
my ($keyword, $override) = @_;

{
no warnings 'uninitialized';
croak "overrides passed to 'keyword' must be a hashref"
if defined $override and ref $override ne 'HASH';
}

return $self->_interpolate_vars( $self->{keywords}{$keyword}, $override );
}

1;
Expand Down
7 changes: 7 additions & 0 deletions t/pkgconfig.t
Expand Up @@ -53,5 +53,12 @@ is( $pc->keyword('Version'), '1.01', "Simple keyword getter" );
is( (split qr/\s+/, $pc->keyword('Libs'))[0], '-L/home/test/path/lib', "single interpolation keyword" );
is( $pc->keyword('Cflags'), '-I/home/test/path/deeper/include', "multiple interpolation keyword" );

# interpolate with overrides
is(
$pc->keyword( 'Cflags', {prefix => '/some/other/path'}),
'-I/some/other/path/deeper/include',
"multiple interpolation keyword with override"
);

done_testing;

0 comments on commit 740e970

Please sign in to comment.