1 package SL::DefaultManager;
5 use SL::Util qw(camelify);
6 use List::Util qw(first);
11 my ($class, @defaults) = @_;
12 bless [ @defaults ], $class;
18 map { $self->_get($_) } @$self;
22 my ($class, $name) = @_;
26 $manager_cache{$name} ||= do {
27 die "'$name' doesn't look like a default manager." unless $name =~ /^\w+$/a;
29 my $package = 'SL::DefaultManager::' . camelify($name);
31 eval "require $package; 1" or die "could not load default manager '$package': $@";
40 'CH' => 'Switzerland',
48 my ($self, @args) = @_;
50 my $method = $AUTOLOAD;
52 return if $method eq 'DESTROY';
54 my $manager = first { $_->can($method) } $self->_managers;
56 return $manager ? $manager->$method : @args;
67 SL::DefaultManager - sets of defaults for use outside of clients
72 my $defaults = SL::DefaultManager->new($::lx_office_conf{default_manager});
75 my $defaults = SL::DefaultManager->new('swiss');
78 # will return what the manager provides, or the given value if $defaults does
79 # not handle dateformat
80 my $dateformat = $defaults->dateformat('dd.mm.yyyy');
82 # have several default managers for different tasks
83 # if polled the first defined response will win
84 my $defaults = SL::DefaultManager->new('swiss', 'mobile', 'point_of_sale');
100 Sven Schöling E<lt>s.schoeling@linet-services.deE<gt>