use strict;
-use parent qw(Exporter);
+use SL::Presenter::EscapedText qw(escape);
use Exporter qw(import);
-our @EXPORT = qw(format_man_days simple_format truncate);
+our @EXPORT_OK = qw(format_man_days simple_format truncate);
+our %EXPORT_TAGS = (ALL => \@EXPORT_OK);
use Carp;
sub truncate {
- my ($self, $text, %params) = @_;
+ my ($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}) . '...';
+ escape(Common::truncate($text, %params));
}
sub simple_format {
- my ($self, $text, %params) = @_;
+ my ($text, %params) = @_;
$text = $::locale->quote_special_chars('HTML', $text || '');
}
sub format_man_days {
- my ($self, $value, %params) = @_;
+ my ($value, %params) = @_;
return '---' if $params{skip_zero} && !$value;
- return $self->escape($::locale->text('#1 h', $::form->format_amount(\%::myconfig, $value, 2))) if 8.0 > $value;
+ return escape($::locale->text('#1 h', $::form->format_amount(\%::myconfig, $value, 2))) if 8.0 > $value;
$value /= 8.0;
my $output = $::locale->text('#1 MD', int($value));
my $rest = ($value - int($value)) * 8.0;
$output .= ' ' . $::locale->text('#1 h', $::form->format_amount(\%::myconfig, $rest)) if $rest > 0.0;
- return $self->escape($output);
+ escape($output);
}
1;
=head1 SYNOPSIS
+ use SL::Presenter::Text qw(truncate);
+
my $long_text = "This is very, very long. Need shorter, surely.";
- my $truncated = $::request->presenter->truncate($long_text, at => 10);
+ my $truncated = truncate($long_text, at => 10);
# Result: "This is..."
=head1 FUNCTIONS
If the parameter C<skip_zero> is trueish then C<---> is returned
instead of the normal formatting if C<$value> equals 0.
-=item C<truncate $text, [%params]>
+=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.
+characters. See L<Common/truncate> for the actual implementation and
+supported parameters.
=item C<simple_format $text>