X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/deb4d2dbb676d7d6f69dfe7815d6e0cb09bd4a44..53593baa211863fbf66540cf1bcc36c8fb37257f:/SL/X/Base.pm diff --git a/SL/X/Base.pm b/SL/X/Base.pm new file mode 100644 index 000000000..3e6d25123 --- /dev/null +++ b/SL/X/Base.pm @@ -0,0 +1,26 @@ +package SL::X::Base; + +use strict; +use warnings; + +use parent qw(Exception::Class::Base); + +sub _defaults { return () } + +sub message { goto &error } + +sub error { + my ($self, @params) = @_; + + return $self->{message} if ($self->{message} // '') ne ''; + + return $self->SUPER::error(@params) if !$self->can('_defaults'); + + my %defaults = $self->_defaults; + return $self->SUPER::error(@params) if !$defaults{error_template}; + + my ($format, @fields) = @{ $defaults{error_template} }; + return sprintf $format, map { $self->$_ } @fields; +} + +1;