package JS::YUI::Loader::Source::Dir; use Moose; extends qw/JS::YUI::Loader::Source/; use Path::Class; use JS::YUI::Loader::Carp; has base => qw/is ro/; sub BUILD { my $self = shift; my $given = shift; my $base = $self->base || $given->{dir} or croak "Don't have a base dir"; $self->{base} = Path::Class::Dir->new($base); } override file => sub { my $self = shift; my $item = shift; my $filter = shift; $item = $self->catalog->item($item); return $self->base->file($item->file($filter)); }; 1;