Apache-SdnFw
view release on metacpan or search on metacpan
lib/Apache/SdnFw/lib/Core.pm view on Meta::CPAN
=head2 format_date
my $string = $s->format_date($string);
Given YYYY-MM-DD (or a timestamp with YYYY-MM-DD HH...) and
returns MM/DD/YYYY.
=cut
my $s = shift;
my $timestamp = shift;
if ($timestamp =~ m/^(\d{4})-(\d{2})-(\d{2})\s/) {
return "$2/$3/$1";
} elsif ($timestamp =~ m/^(\d{4})-(\d{2})-(\d{2})$/) {
return "$2/$3/$1";
} else {
return $timestamp;
}
}
sub format_phone {
=head2 format_phone
my $string = $s->format_phone($number);
Returns 123-123-1234 if $number is 10 digits.
=cut
my $s = shift;
my $number = shift;
return $number unless($number =~ m/^\d{10}$/);
$number =~ s/^(\d{3})(\d{3})(\d{4})$/$1-$2-$3/;
return $number;
}
sub format_boolean {
=head2 format_boolean
my $string = $s->format_boolean($value);
Returns Yes for true value, No for false value, and '' for empty value.
=cut
my $s = shift;
my $value = shift;
return $value if ($value eq '');
return 'Yes' if ($value);
return 'No' if (!$value);
}
sub format_percent {
=head2 format_percent
my $string = $s->format_percent($number);
Given 0.123, returns 12.3%.
=cut
my $s = shift;
my $number = shift;
my $d = shift;
$d = 1 unless(defined($d));
return $number unless($number);
$number = (sprintf "%.${d}f", $number*100).'%';
return $number;
}
sub csv_to_array {
=head2 csv_to_array
my @array = $s->csv_to_array($text,[$onerow]);
=cut
my $s = shift;
my $text = shift;
my $onerow = shift;
my @rows = ();
$text =~ s/\s+$//s;
my $row = [];
while ($text=~ m/( (?!")[^,\r\n]* # Handle normal fields
| "(?:["\\]"|[^"])*?" # Handle quoted fields, escaped quotes as "" or \"
)(\r?\n|,|$)
/sgx) {
my $val = defined $1 ? $1 : '';
my $eol = $2;
if ($val =~ m/^"(.*)"$/s) {
$val = defined $1 ? $1 : '';
$val =~ s/["\\]"/"/sg;
}
push @{$row}, $val;
if ((!$eol || $eol ne ',') && scalar(@{$row}) > 0) {
push @rows, $row;
$row = [];
last if ($onerow);
}
last unless($eol);
}
if ($onerow) {
return @{$rows[0]};
}
( run in 0.991 second using v1.01-cache-2.11-cpan-ceb78f64989 )