epic-s6ts
[kivitendo-erp.git] / SL / X / Base.pm
1 package SL::X::Base;
2
3 use strict;
4 use warnings;
5
6 use parent qw(Exception::Class::Base);
7
8 sub _defaults { return () }
9
10 sub message { goto &error }
11
12 sub error {
13   my ($self, @params) = @_;
14
15   return $self->{message} if ($self->{message} // '') ne '';
16
17   return $self->SUPER::error(@params) if !$self->can('_defaults');
18
19   my %defaults = $self->_defaults;
20   return $self->SUPER::error(@params) if !$defaults{error_template};
21
22   my ($format, @fields) = @{ $defaults{error_template} };
23   return sprintf $format, map { $self->$_ } @fields;
24 }
25
26 1;