PDK-Content
view release on metacpan or search on metacpan
lib/PDK/Content/Reader.pm view on Meta::CPAN
package PDK::Content::Reader;
use utf8;
use v5.30;
use Moose;
use Digest::MD5;
use DateTime;
use Carp qw'croak';
use namespace::autoclean;
use Data::Dumper;
has config => (is => 'ro', isa => 'ArrayRef[Str]', required => 1, );
has confContent => (is => 'ro', isa => 'Str', lazy => 1, builder => '_buildConfContent', );
has cursor => (is => 'ro', isa => 'Int', default => 0, );
with 'PDK::Content::Role';
with 'PDK::Content::Dumper';
has '+sign' => (required => 0, lazy => 1, builder => '_buildSign', );
has '+timestamp' => (required => 0, builder => '_buildTimestamp', );
sub _buildSign {
my $self = shift;
return Digest::MD5::md5_hex(join("\n", @{$self->config}));
}
sub _buildConfContent {
my $self = shift;
return join("\n", @{$self->config});
}
sub _buildTimestamp {
shift;
return DateTime->now->strftime('%Y-%m-%d %H:%M:%S');
}
sub _buildLineParsedFlags {
my $self = shift;
return [map {0} (1 .. @{$self->config})];
}
sub goToHead {
my $self = shift;
$self->{cursor} = 0;
$self->dump("[goToHead] 游æ 已移è³é¦è¡ï¼$self->{config}->[$self->{cursor}]");
}
sub nextLine {
my $self = shift;
my $result;
if ($self->cursor < scalar(@{$self->config})) {
$result = $self->config->[$self->cursor];
$self->dump("[nextLine] è·åå½åæ¸¸æ æåçä¸ä¸è¡å
容ï¼$result");
$self->{cursor}++;
}
return $result;
}
sub prevLine {
my $self = shift;
( run in 0.951 second using v1.01-cache-2.11-cpan-39bf76dae61 )