package JS::YUI::Loader::IncludeExclude; use strict; use warnings; use Moose; has manifest => qw/is ro required 1 weak_ref 1/, handles => [qw/include exclude/]; has do_include => qw/is ro required 1/; # TODO Urgh, ... for my $name (JS::YUI::Loader::Catalog->name_list) { my $method = $name; $method =~ s/-/_/g; no strict 'refs'; *$method = sub { my $self = shift; my $on = @_ ? shift : $self->do_include; if ($on) { $self->manifest->collection->{$name} = 1; $self->manifest->dirty(1); } else { delete $self->manifest->collection->{$name}; $self->manifest->dirty(1); } return $self; }; } sub then { my $self = shift; my $manifest = $self->manifest; return $manifest->loader || $manifest; } 1;