strlimit()
parent
35cda84d26
commit
737149818c
|
@ -30,7 +30,7 @@ our @EXPORT_OK = qw(
|
|||
file_get_contents dbi_hacks ar1el filemd5 mysql_quote updaterow_hashref updateall_hashref
|
||||
insertall_arrayref insertall_hashref deleteall_hashref dumper_no_lf str2time callif urandom
|
||||
normalize_url utf8on utf8off rfrom_to mysql2time mysqllocaltime resub requote
|
||||
hashmrg litsplit strip_tagspace timestamp
|
||||
hashmrg litsplit strip_tagspace timestamp strlimit
|
||||
), @EXPORT;
|
||||
our %EXPORT_TAGS = (all => [ @EXPORT_OK ]);
|
||||
|
||||
|
@ -843,5 +843,27 @@ sub litsplit
|
|||
return @r;
|
||||
}
|
||||
|
||||
# ограничение длины строки $maxlen символами на границе пробелов и добавление '...', если что.
|
||||
sub strlimit
|
||||
{
|
||||
my ($str, $maxlen) = @_;
|
||||
if (!$maxlen || $maxlen < 1 || length($str) <= $maxlen)
|
||||
{
|
||||
return $str;
|
||||
}
|
||||
$str = substr($str, 0, $maxlen);
|
||||
my $p = rindex($str, ' ');
|
||||
if ($p < 0 || (my $pt = rindex($str, "\t")) > $p)
|
||||
{
|
||||
$p = $pt;
|
||||
}
|
||||
if ($p > 0)
|
||||
{
|
||||
# обрезаем
|
||||
$str = substr($str, 0, $p);
|
||||
}
|
||||
return $str . '...';
|
||||
}
|
||||
|
||||
1;
|
||||
__END__
|
||||
|
|
|
@ -4,6 +4,9 @@
|
|||
# Компилятор переписан уже 2 раза - сначала на regexы, потом на index() :-)
|
||||
# А обратная совместимость по синтаксису, как ни странно, до сих пор цела.
|
||||
|
||||
# Homepage: http://yourcmc.ru/wiki/VMX::Template
|
||||
# Author: Vitaliy Filippov, 2006-2010
|
||||
|
||||
package VMX::Template;
|
||||
|
||||
use strict;
|
||||
|
@ -689,12 +692,14 @@ sub function_join { fearr('join', @_) } *function_implode = *fun
|
|||
sub function_subst { fearr('exec_subst', @_) }
|
||||
# sprintf
|
||||
sub function_sprintf { fearr('sprintf', @_) }
|
||||
# ограничение длины строки $maxlen символами на границе пробелов и добавление '...', если что.
|
||||
sub function_strlimit{ "strlimit($_[1], $_[2])" }
|
||||
# создание хеша
|
||||
sub function_hash { shift; "{" . join(",", @_) . "}"; }
|
||||
# создание массива
|
||||
sub function_array { shift; "[" . join(",", @_) . "]"; }
|
||||
# подмассив по номерам элементов
|
||||
sub function_subarray { shift; "exec_subarray(" . join(",", @_) . ")"; }
|
||||
sub function_subarray { shift; "exec_subarray(" . join(",", @_) . ")"; } *function_array_slice = *function_subarray;
|
||||
# подмассив по кратности номеров элементов
|
||||
sub function_subarray_divmod { shift; "exec_subarray_divmod(" . join(",", @_) . ")"; }
|
||||
# получить элемент хеша/массива по неконстантному ключу (например get(iteration.array, rand(5)))
|
||||
|
@ -705,6 +710,11 @@ sub function_hget { "($_[1])->\{$_[2]}" }
|
|||
# для массива
|
||||
sub function_aget { "($_[1])->\[$_[2]]" }
|
||||
|
||||
sub function_shift { "shift(\@{$_[1]})"; }
|
||||
sub function_pop { "pop(\@{$_[1]})"; }
|
||||
sub function_unshift { shift(@_); "unshift(\@{".shift(@_)."}, ".join(",", @_).")"; }
|
||||
sub function_push { shift(@_); "push(\@{".shift(@_)."}, ".join(",", @_).")"; }
|
||||
|
||||
# map()
|
||||
sub function_map
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue