]> git.vpit.fr Git - perl/modules/rgit.git/blobdiff - t/lib/App/Rgit/Policy/Callback.pm
Move policies to a new App::Rgit::Policy class layout
[perl/modules/rgit.git] / t / lib / App / Rgit / Policy / Callback.pm
diff --git a/t/lib/App/Rgit/Policy/Callback.pm b/t/lib/App/Rgit/Policy/Callback.pm
new file mode 100644 (file)
index 0000000..37c2764
--- /dev/null
@@ -0,0 +1,33 @@
+package App::Rgit::Policy::Callback;
+
+use strict;
+use warnings;
+
+use base qw/App::Rgit::Policy/;
+
+sub new {
+ my $class = shift;
+ $class = ref $class || $class;
+
+ my %args = @_;
+
+ my $callback = delete $args{callback} or die 'Invalid callback';
+
+ my $self = $class->SUPER::new(%args);
+
+ $self->{callback} = $callback;
+
+ $self;
+}
+
+BEGIN {
+ eval "sub $_ { \$_[0]->{$_} }" for qw/callback/;
+}
+
+sub report {
+ my $policy = shift;
+
+ $policy->callback->(@_);
+}
+
+1;