From: Moritz Bunkus <m.bunkus@linet-services.de>
Date: Wed, 29 Aug 2012 14:05:35 +0000 (+0200)
Subject: L.truncate: Funktion zum intelligenten Verkürzen eines Strings
X-Git-Tag: release-3.0.0beta1~264^2~10
X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=46b4927562b9679deec973e1b2d6dbdc7b4e755c;p=kivitendo-erp.git

L.truncate: Funktion zum intelligenten Verkürzen eines Strings
---

diff --git a/SL/Template/Plugin/L.pm b/SL/Template/Plugin/L.pm
index 43ac5d250..8523db9e0 100644
--- a/SL/Template/Plugin/L.pm
+++ b/SL/Template/Plugin/L.pm
@@ -570,6 +570,18 @@ sub dump {
   return '<pre>' . Data::Dumper::Dumper(@_) . '</pre>';
 }
 
+sub truncate {
+  my ($self, $text, @slurp) = @_;
+  my %params                = _hashify(@slurp);
+
+  $params{at}             ||= 50;
+  $params{at}               =  3 if 3 > $params{at};
+  $params{at}              -= 3;
+
+  return $text if length($text) < $params{at};
+  return substr($text, 0, $params{at}) . '...';
+}
+
 1;
 
 __END__
@@ -918,6 +930,16 @@ the resulting tab will get ignored by C<tabbed>:
 
   L.tab('Awesome tab wih much info', '_much_info.html', if => SELF.wants_all)
 
+=item C<truncate $text, %params>
+
+Returns the C<$text> truncated after a certain number of
+characters.
+
+The number of characters to truncate at is determined by the parameter
+C<at> which defaults to 50. If the text is longer than C<$params{at}>
+then it will be truncated and postfixed with '...'. Otherwise it will
+be returned unmodified.
+
 =back
 
 =head1 MODULE AUTHORS