package JS::YUI::Loader::Item;
use Moose;
use Path::Abstract;
use JS::YUI::Loader::Carp;
has filter => qw/is ro/;
has entry => qw/is ro required 1 isa JS::YUI::Loader::Entry/, handles => [qw/name/];
sub _filter ($$) {
my $path = shift;
my $filter = shift;
$path =~ s/(.*)(\..{2,4})$/$1-$filter$2/ or croak "Don't understand path \"$path\"";
return $path;
}
sub _filter_path ($$) {
my $path = shift;
my $filter = shift;
return $path unless $filter;
$filter =~ m/^\s*min\s*$/i and return _filter $path, "min";
$filter =~ m/^\s*debug\s*$/i and return _filter $path, "debug";
return $path;
}
sub file {
my $self = shift;
return _filter_path $self->entry->file, $self->filter;
}
sub path {
my $self = shift;
return _filter_path $self->entry->path, $self->filter;
}
sub _uri ($$) {
my $base = shift;
my $path = shift;
my $uri = $base->clone;
$uri->path(Path::Abstract->new($uri->path, "/$path")->stringify);
return $uri;
}
sub file_uri {
my $self = shift;
my $base = shift;
return _uri $base, $self->file;
}
sub path_uri {
my $self = shift;
my $base = shift;
return _uri $base, $self->path;
}
1;