1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
package MyApp::Introspect;
use Validation::Class;
sub per_class {
my ($self, $code) = @_;
$self->proto->relatives->each(sub{
my ($alias, $namespace) = @_;
# do something with each class
$code->($namespace);
});
}
sub per_field_per_class {
my ($self, $code) = @_;
$self->per_class(sub{
my $namespace = shift;
my $class = $namespace->new;
foreach my $field (sort $class->fields->keys) {
# do something with each field
$code->($class, $class->fields->{$field});
}
});
}
1;
|