# vim: set ft=perl ts=4 sw=4:
# Module::Build::Yapp - Module::Build subclass for turning .yp files into .pm modules.
#
# Copyright (C) 2004 Dylan William Hardison.
#
# This module is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This module is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this module; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
use strict;
our $VERSION = '0.002';
sub ACTION_code {
my $me = shift;
my $p = $me->{properties};
if (exists $p->{yapp_files}) {
my @files = @{ $p->{yapp_files} };
foreach my $file (@files) {
$file = _sane_file($file);
my $modfile = _yp2pm($file);
my $modname = _file2mod($modfile);
if (not $me->up_to_date($file, $modfile)) {
$me->do_system('yapp',
'-s', # stand alone now.
'-m' => $modname,
'-o' => $modfile, $file);
}
}
}
$me->SUPER::ACTION_code(@_);
}
sub _sane_file {
my $file = shift;
$file = File::Spec->canonpath($file);
if (File::Spec->file_name_is_absolute($file)) {
$file = File::Spec->abs2rel($file);
}
return $file;
}
sub _yp2pm {
my $file = shift;
$file =~ s/yp$/pm/;
return $file;
}
sub _file2mod {
my $file = shift;
$file =~ s/^lib\///;
$file =~ s/\//::/g;
$file =~ s/\.pm$//;
return $file;
}
1;