forked from mglaman/drupalorg-cli
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAbstractFormatter.php
More file actions
48 lines (44 loc) · 2.8 KB
/
AbstractFormatter.php
File metadata and controls
48 lines (44 loc) · 2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
namespace mglaman\DrupalOrgCli\Formatter;
use mglaman\DrupalOrg\Result\Issue\IssueForkResult;
use mglaman\DrupalOrg\Result\Issue\IssueResult;
use mglaman\DrupalOrg\Result\Maintainer\MaintainerIssuesResult;
use mglaman\DrupalOrg\Result\MergeRequest\MergeRequestDiffResult;
use mglaman\DrupalOrg\Result\MergeRequest\MergeRequestFilesResult;
use mglaman\DrupalOrg\Result\MergeRequest\MergeRequestListResult;
use mglaman\DrupalOrg\Result\MergeRequest\MergeRequestStatusResult;
use mglaman\DrupalOrg\Result\Issue\IssueSearchResult;
use mglaman\DrupalOrg\Result\Project\ProjectIssuesResult;
use mglaman\DrupalOrg\Result\Project\ProjectReleasesResult;
use mglaman\DrupalOrg\Result\ResultInterface;
abstract class AbstractFormatter implements FormatterInterface
{
final public function format(ResultInterface $result): string
{
return match (true) {
$result instanceof IssueResult => $this->formatIssue($result),
$result instanceof IssueForkResult => $this->formatIssueFork($result),
$result instanceof IssueSearchResult => $this->formatIssueSearch($result),
$result instanceof ProjectIssuesResult => $this->formatProjectIssues($result),
$result instanceof MaintainerIssuesResult => $this->formatMaintainerIssues($result),
$result instanceof ProjectReleasesResult => $this->formatProjectReleases($result),
$result instanceof MergeRequestListResult => $this->formatMergeRequestList($result),
$result instanceof MergeRequestStatusResult => $this->formatMergeRequestStatus($result),
$result instanceof MergeRequestFilesResult => $this->formatMergeRequestFiles($result),
$result instanceof MergeRequestDiffResult => $this->formatMergeRequestDiff($result),
default => throw new \InvalidArgumentException(
sprintf('Unsupported result type: %s', get_class($result))
),
};
}
abstract protected function formatIssue(IssueResult $result): string;
abstract protected function formatIssueFork(IssueForkResult $result): string;
abstract protected function formatIssueSearch(IssueSearchResult $result): string;
abstract protected function formatProjectIssues(ProjectIssuesResult $result): string;
abstract protected function formatMaintainerIssues(MaintainerIssuesResult $result): string;
abstract protected function formatProjectReleases(ProjectReleasesResult $result): string;
abstract protected function formatMergeRequestList(MergeRequestListResult $result): string;
abstract protected function formatMergeRequestStatus(MergeRequestStatusResult $result): string;
abstract protected function formatMergeRequestFiles(MergeRequestFilesResult $result): string;
abstract protected function formatMergeRequestDiff(MergeRequestDiffResult $result): string;
}