Bulk substitution across all PHP files in src/ and test/. Covers namespace declarations, use statements, fully-qualified class references, and @package PHPDoc tags. No logic changes.
99 lines
1.9 KiB
PHP
99 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace IndifferentKetchup\Codex\Printer;
|
|
|
|
use IndifferentKetchup\Codex\Log\EntryInterface;
|
|
use IndifferentKetchup\Codex\Log\LineInterface;
|
|
use IndifferentKetchup\Codex\Log\LogInterface;
|
|
|
|
/**
|
|
* Class Printer
|
|
*
|
|
* @package IndifferentKetchup\Codex\Printer
|
|
*/
|
|
abstract class Printer implements PrinterInterface
|
|
{
|
|
protected ?LogInterface $log = null;
|
|
protected ?EntryInterface $entry = null;
|
|
|
|
/**
|
|
* Set the log
|
|
*
|
|
* @param LogInterface $log
|
|
* @return $this
|
|
*/
|
|
public function setLog(LogInterface $log): static
|
|
{
|
|
$this->log = $log;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Set the entry
|
|
*
|
|
* @param EntryInterface $entry
|
|
* @return $this
|
|
*/
|
|
public function setEntry(EntryInterface $entry): static
|
|
{
|
|
$this->entry = $entry;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Print the log
|
|
*
|
|
* @return string
|
|
*/
|
|
public function print(): string
|
|
{
|
|
if ($this->entry) {
|
|
return $this->printEntry();
|
|
} else {
|
|
return $this->printLog();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Print a log
|
|
*
|
|
* @return string
|
|
*/
|
|
protected function printLog(): string
|
|
{
|
|
$return = "";
|
|
foreach ($this->log as $entry) {
|
|
$return .= $this->printEntry($entry);
|
|
}
|
|
|
|
return $return;
|
|
}
|
|
|
|
/**
|
|
* Print an entry
|
|
*
|
|
* @param EntryInterface|null $entry
|
|
* @return string
|
|
*/
|
|
protected function printEntry(?EntryInterface $entry = null): string
|
|
{
|
|
if ($entry === null) {
|
|
$entry = $this->entry;
|
|
}
|
|
|
|
$return = "";
|
|
foreach ($entry as $line) {
|
|
$return .= $this->printLine($line);
|
|
}
|
|
|
|
return $return;
|
|
}
|
|
|
|
/**
|
|
* Print a line
|
|
*
|
|
* @param LineInterface $line
|
|
* @return string
|
|
*/
|
|
abstract protected function printLine(LineInterface $line): string;
|
|
} |