1 package SQL::Abstract::Plugin::BangOverrides;
5 with 'SQL::Abstract::Role::Plugin';
7 sub register_extensions {
8 my ($self, $sqla) = @_;
9 foreach my $stmt ($sqla->statement_list) {
10 $sqla->wrap_expander($stmt => sub {
13 my ($self, $name, $args) = @_;
16 (ref($args->{order_by}) eq 'HASH'
17 ? %{$args->{order_by}}
21 foreach my $clause (map /^!(.*)$/, keys %args) {
22 my $override = delete $args{"!${clause}"};
23 $overrides{$clause} = (
24 ref($override) eq 'CODE'
25 ? $self->$override($args{$clause})
29 $self->$orig($name, { %$args, %overrides });