-
-
Notifications
You must be signed in to change notification settings - Fork 11
/
BaseDocset.php
113 lines (90 loc) · 2.65 KB
/
BaseDocset.php
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php
namespace Godbout\DashDocsetBuilder\Docsets;
use Godbout\DashDocsetBuilder\Contracts\Docset;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Storage;
abstract class BaseDocset implements Docset
{
public const CODE = self::CODE;
public const NAME = self::NAME;
public const URL = self::URL;
public const INDEX = self::INDEX;
public const PLAYGROUND = self::PLAYGROUND;
public const ICON_16 = self::ICON_16;
public const ICON_32 = self::ICON_32;
public const EXTERNAL_DOMAINS = self::EXTERNAL_DOMAINS;
final public function code(): string
{
return static::CODE;
}
final public function name(): string
{
return static::NAME;
}
final public function url(): string
{
return static::URL;
}
final public function index(): string
{
return static::URL . '/' . static::INDEX;
}
final public function playground(): string
{
return static::PLAYGROUND;
}
final public function icon16(): string
{
return static::URL . '/' . static::ICON_16;
}
final public function icon32(): string
{
return static::URL . '/' . static::ICON_32;
}
final public function externalDomains(): string
{
return implode(
',',
array_merge((array) static::URL, (array) static::EXTERNAL_DOMAINS)
);
}
final public function file(): string
{
return static::CODE . '/' . static::CODE . '.docset';
}
final public function innerDirectory(): string
{
return $this->file() . '/Contents/Resources/Documents';
}
final public function innerIndex(): string
{
return $this->innerDirectory() . '/' . $this->url() . '/' . static::INDEX;
}
final public function downloadedDirectory(): string
{
return static::CODE . '/docs';
}
final public function downloadedIndex(): string
{
return $this->downloadedDirectory() . '/' . $this->url() . '/' . static::INDEX;
}
final public function infoPlistFile(): string
{
return $this->file() . '/Contents/Info.plist';
}
final public function databaseFile(): string
{
return $this->file() . '/Contents/Resources/docSet.dsidx';
}
final public function htmlFiles(): Collection
{
$files = Storage::allFiles(
$this->innerDirectory()
);
return collect($files)->reject(static function ($file) {
return substr($file, -5) !== '.html';
});
}
abstract public function entries(string $file): Collection;
abstract public function format(string $file): string;
}