Mojolicious-Plugin-Human
view release on metacpan or search on metacpan
lib/Mojolicious/Plugin/Human.pm view on Meta::CPAN
return undef unless length $str;
my $delim = $conf->{money_delim};
my $digit = $conf->{money_digit};
$str = sprintf $format, $str;
$str =~ s{$REGEXP_FRACTIONAL_DELIMITER}{$delim};
1 while $str =~ s{$REGEXP_DIGIT}{$1$digit$2};
return Mojo::ByteStream->new($str);
});
$app->helper(human_money_short => sub {
my $self = shift;
my $stream = $self->human_money(@_);
return undef unless defined $stream;
my $str = "$stream";
s{\D00$}{} for $str;
return Mojo::ByteStream->new($str);
});
# Phones
$app->helper(flat_phone => sub {
my ($self, $phone, $country) = @_;
return undef unless $phone;
# clear
s/$REGEXP_PHONE_SYMBOL//ig for $phone;
return undef unless 10 <= length $phone;
$country //= $conf->{phone_country};
# make full
$phone = '+' . $country . $phone unless $phone =~ m{^\+};
return Mojo::ByteStream->new($phone);
});
$app->helper(human_phone => sub {
my ($self, $phone, $country, $add) = @_;
return unless $phone;
# make clean
$phone = $self->flat_phone( $phone, $country );
return $phone unless $phone;
# make awesome
$add //= $conf->{phone_add};
s{$REGEXP_PHONE_AWESOME}{$1-$2-$3-$4},
s{$REGEXP_PHONE_COMMAND}{$add}ig
for $phone;
return Mojo::ByteStream->new($phone);
});
$app->helper(human_phones => sub {
my ($self, $str, $country, $add) = @_;
return '' unless $str;
my @phones = split m{$REGEXP_SEPARATOR}, $str;
my $phones = join ', ' => grep { $_ } map {
$self->human_phone( $_, $country, $add )
} @phones;
return Mojo::ByteStream->new($phones);
});
# Text
# DEPRICATED
$app->helper(human_suffix => sub {
my ($self, $str, $count, $one, $two, $many) = @_;
warn 'human_suffix DEPRICATED!';
return unless defined $str;
return $str unless defined $count;
# Last digit
my $tail = abs( $count ) % 10;
# Default suffix
$one //= $str . $conf->{suffix_one};
$two //= $str . $conf->{suffix_two};
$many //= $str . $conf->{suffix_many};
# Get right suffix
my $result =
( $tail == 0 ) ?$many :
( $tail == 1 ) ?$one :
( $tail >= 2 and $tail < 5 ) ?$two :$many;
# For 10 - 20 get special suffix
$tail = abs( $count ) % 100;
$result =
( $tail >= 10 and $tail < 21 ) ?$many :$result;
return Mojo::ByteStream->new($result);
});
$app->helper(human_suffix_ru => sub {
my ($self, $count, $one, $two, $many) = @_;
return unless defined $count;
# Last digit
my $tail = abs( $count ) % 10;
# Get right suffix
my $result =
( $tail == 0 ) ?$many :
( $tail == 1 ) ?$one :
( $tail >= 2 and $tail < 5 ) ?$two :$many;
# For 10 - 20 get special suffix
$tail = abs( $count ) % 100;
$result =
( $tail >= 10 and $tail < 21 ) ?$many :$result;
return Mojo::ByteStream->new($result);
( run in 1.316 second using v1.01-cache-2.11-cpan-71847e10f99 )