Merge branch 'b-3.6.1' of ../kivitendo-erp_20220811
[kivitendo-erp.git] / SL / Presenter / ALL.pm
diff --git a/SL/Presenter/ALL.pm b/SL/Presenter/ALL.pm
new file mode 100644 (file)
index 0000000..974b1a6
--- /dev/null
@@ -0,0 +1,76 @@
+package SL::Presenter::ALL;
+
+use strict;
+
+use SL::Presenter::Chart;
+use SL::Presenter::CustomerVendor;
+use SL::Presenter::DeliveryOrder;
+use SL::Presenter::Dunning;
+use SL::Presenter::EscapedText;
+use SL::Presenter::FileObject;
+use SL::Presenter::Invoice;
+use SL::Presenter::GL;
+use SL::Presenter::Letter;
+use SL::Presenter::Order;
+use SL::Presenter::Part;
+use SL::Presenter::Project;
+use SL::Presenter::Record;
+use SL::Presenter::RequirementSpec;
+use SL::Presenter::RequirementSpecItem;
+use SL::Presenter::RequirementSpecTextBlock;
+use SL::Presenter::SepaExport;
+use SL::Presenter::ShopOrder;
+use SL::Presenter::Text;
+use SL::Presenter::Tag;
+use SL::Presenter::BankAccount;
+use SL::Presenter::MaterialComponents;
+
+our %presenters = (
+  chart                       => 'SL::Presenter::Chart',
+  customer_vendor             => 'SL::Presenter::CustomerVendor',
+  delivery_order              => 'SL::Presenter::DeliveryOrder',
+  dunning                     => 'SL::Presenter::Dunning',
+  escaped_text                => 'SL::Presenter::EscapedText',
+  file_object                 => 'SL::Presenter::FileObject',
+  invoice                     => 'SL::Presenter::Invoice',
+  gl                          => 'SL::Presenter::GL',
+  letter                      => 'SL::Presenter::Letter',
+  order                       => 'SL::Presenter::Order',
+  part                        => 'SL::Presenter::Part',
+  project                     => 'SL::Presenter::Project',
+  record                      => 'SL::Presenter::Record',
+  requirement_spec            => 'SL::Presenter::RequirementSpec',
+  requirement_spec_item       => 'SL::Presenter::RequirementSpecItem',
+  requirement_spec_text_block => 'SL::Presenter::RequirementSpecTextBlock',
+  sepa_export                 => 'SL::Presenter::SepaExport',
+  shop_order                  => 'SL::Presenter::ShopOrder',
+  text                        => 'SL::Presenter::Text',
+  tag                         => 'SL::Presenter::Tag',
+  bank_account                => 'SL::Presenter::BankAccount',
+  M                           => 'SL::Presenter::MaterialComponents',
+);
+
+sub wrap {
+  bless [ $_[0] ], 'SL::Presenter::ALL::Wrapper';
+}
+
+package SL::Presenter::ALL::Wrapper;
+
+sub AUTOLOAD {
+  our $AUTOLOAD;
+
+  my ($self, @args) = @_;
+
+  my $method = $AUTOLOAD;
+  $method    =~ s/.*:://;
+
+  return if $method eq 'DESTROY';
+
+  splice @args, -1, 1, %{ $args[-1] } if @args && (ref($args[-1]) eq 'HASH');
+
+  if (my $sub = $self->[0]->can($method)) {
+    return $sub->(@args);
+  }
+}
+
+1;