mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2025-01-30 05:39:12 +02:00
731b862e6f
This is consistent with the way BackRest and BackRest test were renamed way back in 18fd2523. More modules will be moving to pgBackRestDoc soon so renaming now reduces churn later.
122 lines
3.2 KiB
Perl
122 lines
3.2 KiB
Perl
####################################################################################################################################
|
|
# COMMON STRING MODULE
|
|
####################################################################################################################################
|
|
package pgBackRestDoc::Common::String;
|
|
|
|
use strict;
|
|
use warnings FATAL => qw(all);
|
|
use Carp qw(confess longmess);
|
|
|
|
use Exporter qw(import);
|
|
our @EXPORT = qw();
|
|
use File::Basename qw(dirname);
|
|
|
|
####################################################################################################################################
|
|
# trim
|
|
#
|
|
# Trim whitespace.
|
|
####################################################################################################################################
|
|
sub trim
|
|
{
|
|
my $strBuffer = shift;
|
|
|
|
if (!defined($strBuffer))
|
|
{
|
|
return;
|
|
}
|
|
|
|
$strBuffer =~ s/^\s+|\s+$//g;
|
|
|
|
return $strBuffer;
|
|
}
|
|
|
|
push @EXPORT, qw(trim);
|
|
|
|
####################################################################################################################################
|
|
# coalesce - return first defined parameter
|
|
####################################################################################################################################
|
|
sub coalesce
|
|
{
|
|
foreach my $strParam (@_)
|
|
{
|
|
if (defined($strParam))
|
|
{
|
|
return $strParam;
|
|
}
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
push @EXPORT, qw(coalesce);
|
|
|
|
####################################################################################################################################
|
|
# timestampFormat
|
|
#
|
|
# Get standard timestamp format (or formatted as specified).
|
|
####################################################################################################################################
|
|
sub timestampFormat
|
|
{
|
|
my $strFormat = shift;
|
|
my $lTime = shift;
|
|
|
|
if (!defined($strFormat))
|
|
{
|
|
$strFormat = '%4d-%02d-%02d %02d:%02d:%02d';
|
|
}
|
|
|
|
if (!defined($lTime))
|
|
{
|
|
$lTime = time();
|
|
}
|
|
|
|
my ($iSecond, $iMinute, $iHour, $iMonthDay, $iMonth, $iYear, $iWeekDay, $iYearDay, $bIsDst) = localtime($lTime);
|
|
|
|
if ($strFormat eq "%4d")
|
|
{
|
|
return sprintf($strFormat, $iYear + 1900)
|
|
}
|
|
else
|
|
{
|
|
return sprintf($strFormat, $iYear + 1900, $iMonth + 1, $iMonthDay, $iHour, $iMinute, $iSecond);
|
|
}
|
|
}
|
|
|
|
push @EXPORT, qw(timestampFormat);
|
|
|
|
####################################################################################################################################
|
|
# stringSplit
|
|
####################################################################################################################################
|
|
sub stringSplit
|
|
{
|
|
my $strString = shift;
|
|
my $strChar = shift;
|
|
my $iLength = shift;
|
|
|
|
if (length($strString) <= $iLength)
|
|
{
|
|
return $strString, undef;
|
|
}
|
|
|
|
my $iPos = index($strString, $strChar);
|
|
|
|
if ($iPos == -1)
|
|
{
|
|
return $strString, undef;
|
|
}
|
|
|
|
my $iNewPos = $iPos;
|
|
|
|
while ($iNewPos != -1 && $iNewPos + 1 < $iLength)
|
|
{
|
|
$iPos = $iNewPos;
|
|
$iNewPos = index($strString, $strChar, $iPos + 1);
|
|
}
|
|
|
|
return substr($strString, 0, $iPos + 1), substr($strString, $iPos + 1);
|
|
}
|
|
|
|
push @EXPORT, qw(stringSplit);
|
|
|
|
1;
|