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 )