diff --git a/src/Entity/Code.php b/src/Entity/Code.php new file mode 100644 index 0000000..6a4dad1 --- /dev/null +++ b/src/Entity/Code.php @@ -0,0 +1,23 @@ +setData( + $data + ); + + $this->setEscaped( + $escaped + ); + + $this->setNumber( + $number + ); + } + + public function getData(): string + { + return $this->_data; + } + + public function setData( + string $data + ): void + { + $this->_data = $data; + } + + public function getEscaped(): bool + { + return $this->_escaped; + } + + public function setEscaped( + bool $escaped + ): void + { + $this->_escaped = $escaped; + } + + public function getNumber(): ?int + { + return $this->_number; + } + + public function setNumber( + ?int $number + ): void + { + $this->_number = $number; + } +} diff --git a/src/Entity/Link.php b/src/Entity/Link.php new file mode 100644 index 0000000..afe6453 --- /dev/null +++ b/src/Entity/Link.php @@ -0,0 +1,122 @@ +setAddress( + $address + ); + + $this->setAlt( + $alt + ); + + $this->setDate( + $date + ); + } + + public function setAddress( + string $address + ): void + { + $address = trim( + $address + ); + + if (empty($address)) + { + throw new \Exception( + _('Address required') + ); + } + + $this->_address = $address; + } + + public function getAddress(): string + { + return $this->_address; + } + + public function setAlt( + ?string $alt + ): void + { + if ($alt) + { + $alt = trim( + $alt + ); + } + + $this->_alt = $alt; + } + + public function getAlt(): ?string + { + return $this->_alt; + } + + public function setDate( + ?string $date + ): void + { + if ($date) + { + $date = trim( + $date + ); + + if (!preg_match('/^\d{4}-\d{2}-\d{2}$/')) + { + throw new \Exception( + _('Date does not match format YYYY-MM-DD') + ); + } + } + + $this->_date = $date; + } + + public function getDate(): ?string + { + return $this->_date; + } + + public function toString(): string + { + $parts = [ + '=>', + $this->getAddress() + ]; + + if ($date = $this->getDate()) + { + $parts[] = $date; + } + + if ($alt = $this->getAlt()) + { + $parts[] = $alt; + } + + return implode( + ' ', + $parts + ); + } +} \ No newline at end of file