X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/bc9f12ced08474ba6569a60b6b308b1a0ad855f7..4f15b8f0ee316711afb118db91f057eec5924d43:/SL/Presenter/Text.pm diff --git a/SL/Presenter/Text.pm b/SL/Presenter/Text.pm new file mode 100644 index 000000000..bcae2f96f --- /dev/null +++ b/SL/Presenter/Text.pm @@ -0,0 +1,84 @@ +package SL::Presenter::Text; + +use strict; + +use parent qw(Exporter); + +use Exporter qw(import); +our @EXPORT = qw(simple_format truncate); + +use Carp; + +sub truncate { + my ($self, $text, %params) = @_; + + $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}) . '...'; +} + +sub simple_format { + my ($self, $text, %params) = @_; + + $text = $::locale->quote_special_chars('HTML', $text || ''); + + $text =~ s{\r\n?}{\n}g; # \r\n and \r -> \n + $text =~ s{\n\n+}{
\n\n}g; # 2+ newline -> paragraph
+ $text =~ s{([^\n]\n)(?=[^\n])}{$1
}g; # 1 newline -> br
+
+ return '
' . $text;
+}
+
+1;
+__END__
+
+=pod
+
+=encoding utf8
+
+=head1 NAME
+
+SL::Presenter::Text - Presenter module for assorted text helpers
+
+=head1 SYNOPSIS
+
+ my $long_text = "This is very, very long. Need shorter, surely.";
+ my $truncated = $::request->presenter->truncate($long_text, at => 10);
+ # Result: "This is..."
+
+=head1 FUNCTIONS
+
+=over 4
+
+=item C