L.truncate: Funktion zum intelligenten Verkürzen eines Strings
authorMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 29 Aug 2012 14:05:35 +0000 (16:05 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 29 Aug 2012 14:05:35 +0000 (16:05 +0200)
SL/Template/Plugin/L.pm

index 43ac5d2..8523db9 100644 (file)
@@ -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