1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <?php declare(strict_types=1);
- /*
- * This file is part of sebastian/lines-of-code.
- *
- * (c) Sebastian Bergmann <sebastian@phpunit.de>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace SebastianBergmann\LinesOfCode;
- /**
- * @psalm-immutable
- */
- final class LinesOfCode
- {
- /**
- * @var int
- */
- private $linesOfCode;
- /**
- * @var int
- */
- private $commentLinesOfCode;
- /**
- * @var int
- */
- private $nonCommentLinesOfCode;
- /**
- * @var int
- */
- private $logicalLinesOfCode;
- /**
- * @throws IllogicalValuesException
- * @throws NegativeValueException
- */
- public function __construct(int $linesOfCode, int $commentLinesOfCode, int $nonCommentLinesOfCode, int $logicalLinesOfCode)
- {
- if ($linesOfCode < 0) {
- throw new NegativeValueException('$linesOfCode must not be negative');
- }
- if ($commentLinesOfCode < 0) {
- throw new NegativeValueException('$commentLinesOfCode must not be negative');
- }
- if ($nonCommentLinesOfCode < 0) {
- throw new NegativeValueException('$nonCommentLinesOfCode must not be negative');
- }
- if ($logicalLinesOfCode < 0) {
- throw new NegativeValueException('$logicalLinesOfCode must not be negative');
- }
- if ($linesOfCode - $commentLinesOfCode !== $nonCommentLinesOfCode) {
- throw new IllogicalValuesException('$linesOfCode !== $commentLinesOfCode + $nonCommentLinesOfCode');
- }
- $this->linesOfCode = $linesOfCode;
- $this->commentLinesOfCode = $commentLinesOfCode;
- $this->nonCommentLinesOfCode = $nonCommentLinesOfCode;
- $this->logicalLinesOfCode = $logicalLinesOfCode;
- }
- public function linesOfCode(): int
- {
- return $this->linesOfCode;
- }
- public function commentLinesOfCode(): int
- {
- return $this->commentLinesOfCode;
- }
- public function nonCommentLinesOfCode(): int
- {
- return $this->nonCommentLinesOfCode;
- }
- public function logicalLinesOfCode(): int
- {
- return $this->logicalLinesOfCode;
- }
- public function plus(self $other): self
- {
- return new self(
- $this->linesOfCode() + $other->linesOfCode(),
- $this->commentLinesOfCode() + $other->commentLinesOfCode(),
- $this->nonCommentLinesOfCode() + $other->nonCommentLinesOfCode(),
- $this->logicalLinesOfCode() + $other->logicalLinesOfCode(),
- );
- }
- }
|