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 )