summaryrefslogtreecommitdiff
path: root/vendor/sebastian/lines-of-code/src/LinesOfCode.php
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2022-03-22 12:24:31 +0300
committerAndrew Dolgov <[email protected]>2022-03-22 12:24:31 +0300
commit1c4f7ab3b838b23afb2ee4dab14acbf75956e952 (patch)
tree0a19274107d717efe92d2c0376cd3105fead5a11 /vendor/sebastian/lines-of-code/src/LinesOfCode.php
parent711662948768492e8d05b778a7d80eacaec368d2 (diff)
* add phpunit as a dev dependency
* add some basic tests for UrlHelper::rewrite_relative() * fix UrlHelper::rewrite_relative() to work better on non-absolute relative URL paths
Diffstat (limited to 'vendor/sebastian/lines-of-code/src/LinesOfCode.php')
-rw-r--r--vendor/sebastian/lines-of-code/src/LinesOfCode.php98
1 files changed, 98 insertions, 0 deletions
diff --git a/vendor/sebastian/lines-of-code/src/LinesOfCode.php b/vendor/sebastian/lines-of-code/src/LinesOfCode.php
new file mode 100644
index 000000000..41829981a
--- /dev/null
+++ b/vendor/sebastian/lines-of-code/src/LinesOfCode.php
@@ -0,0 +1,98 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/lines-of-code.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * 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(),
+ );
+ }
+}