59 lines
1.0 KiB
PHP
59 lines
1.0 KiB
PHP
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace Doctrine\RST\Parser;
|
||
|
|
||
|
use Iterator;
|
||
|
|
||
|
/** @template-implements Iterator<array-key, string> */
|
||
|
final class Lines implements Iterator
|
||
|
{
|
||
|
/** @var string[] */
|
||
|
private $lines = [];
|
||
|
|
||
|
/** @var int */
|
||
|
private $position = 0;
|
||
|
|
||
|
/** @param string[] $lines */
|
||
|
public function __construct(array $lines)
|
||
|
{
|
||
|
$this->lines = $lines;
|
||
|
}
|
||
|
|
||
|
public function getPreviousLine(): string
|
||
|
{
|
||
|
return $this->lines[$this->position - 1] ?? '';
|
||
|
}
|
||
|
|
||
|
public function getNextLine(): string
|
||
|
{
|
||
|
return $this->lines[$this->position + 1] ?? '';
|
||
|
}
|
||
|
|
||
|
public function rewind(): void
|
||
|
{
|
||
|
$this->position = 0;
|
||
|
}
|
||
|
|
||
|
public function current(): string
|
||
|
{
|
||
|
return $this->lines[$this->position];
|
||
|
}
|
||
|
|
||
|
public function key(): int
|
||
|
{
|
||
|
return $this->position;
|
||
|
}
|
||
|
|
||
|
public function next(): void
|
||
|
{
|
||
|
++$this->position;
|
||
|
}
|
||
|
|
||
|
public function valid(): bool
|
||
|
{
|
||
|
return isset($this->lines[$this->position]);
|
||
|
}
|
||
|
}
|