AlignDB-Stopwatch

 view release on metacpan or  search on metacpan

lib/AlignDB/Stopwatch.pm  view on Meta::CPAN

    $self->{uuid}       = Data::UUID->new->create_str;

    return;
}

#@returns AlignDB::Stopwatch
sub record {
    my $self = shift;

    $self->{program_name} = $main::0;

    $self->{program_argv} = [@main::ARGV];

    return $self;
}

#@returns AlignDB::Stopwatch
sub record_conf {
    my $self = shift;
    my $conf = shift;

    $self->{program_conf} = $conf;

    return $self;
}

sub _divider {
    my $self  = shift;
    my $title = shift;

    my $title_length = $title ? length $title : 0;

    my $div_char       = $self->div_char;
    my $div_length     = $self->div_length;
    my $min_div_length = $self->min_div_length;

    my $divider_str;

    if ( !$title_length ) {
        $divider_str .= $div_char x $div_length;
        $divider_str .= "\n";
    }
    elsif ( $title_length > $div_length - 2 * $min_div_length ) {
        $divider_str .= $div_char x $min_div_length;
        $divider_str .= $title;
        $divider_str .= $div_char x $min_div_length;
        $divider_str .= "\n";
    }
    else {
        my $left_length = int( ( $div_length - $title_length ) / 2 );
        my $right_length = $div_length - $title_length - $left_length;
        $divider_str .= $div_char x $left_length;
        $divider_str .= $title;
        $divider_str .= $div_char x $right_length;
        $divider_str .= "\n";
    }

    return $divider_str;
}

sub _prompt {
    my $self = shift;
    return "==> ";
}

sub _empty_line {
    my $self = shift;
    return "\n";
}

sub _time {
    my $self  = shift;
    my $title = shift;

    my $time_str;

    if ( !defined $title ) {
        $time_str .= "Current time: ";
    }
    elsif ( $title =~ /start/i ) {
        $time_str .= "Start at: ";
    }
    elsif ( $title =~ /end/i ) {
        $time_str .= "End at: ";
    }
    else {
        $time_str .= "$title: ";
    }
    $time_str .= scalar localtime;
    $time_str .= "\n";

    return $time_str;
}

sub _duration {
    my $self = shift;
    return "Runtime " . $self->duration_now . ".\n";
}

sub _message {
    my $self    = shift;
    my $message = shift;

    $message = '' unless defined $message;

    return $message . "\n";
}

sub duration_now {
    my $self = shift;
    return Time::Duration::duration( time - $self->start_time );
}

sub block_message {
    my $self          = shift;
    my $message       = shift;
    my $with_duration = shift;

    my $text;
    $text .= $self->_empty_line;
    $text .= $self->_prompt;
    $text .= $self->_message($message);
    if ($with_duration) {
        $text .= $self->_prompt;
        $text .= $self->_duration;
    }
    $text .= $self->_empty_line;

    print $text;

    return;
}

sub start_message {
    my $self             = shift;
    my $message          = shift;
    my $embed_in_divider = shift;

    my $text;
    if ( defined $message ) {
        if ( defined $embed_in_divider ) {
            $text .= $self->_divider($message);
        }
        else {
            $text .= $self->_divider;
            $text .= $self->_message($message);
        }
    }
    else {
        $text .= $self->_divider;
    }
    $text .= $self->_time("start");
    $text .= $self->_empty_line;

    print $text;

    return;
}

sub end_message {
    my $self    = shift;
    my $message = shift;

    my $text;
    $text .= $self->_empty_line;
    if ( defined $message ) {
        $text .= $self->_message($message);

    }
    $text .= $self->_time("end");
    $text .= $self->_duration;
    $text .= $self->_divider;

    print $text;

    return;
}

sub cmd_line {
    my $self = shift;
    return join( ' ', $self->program_name, @{ $self->program_argv } );
}

sub init_config {



( run in 2.307 seconds using v1.01-cache-2.11-cpan-6aa56a78535 )