forked from tempestphp/highlight
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathApacheDirectivePattern.php
More file actions
55 lines (47 loc) · 2 KB
/
ApacheDirectivePattern.php
File metadata and controls
55 lines (47 loc) · 2 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
49
50
51
52
53
54
55
<?php
declare(strict_types=1);
namespace Tempest\Highlight\Languages\Apache\Patterns;
use Tempest\Highlight\IsPattern;
use Tempest\Highlight\Pattern;
use Tempest\Highlight\PatternTest;
use Tempest\Highlight\Tokens\TokenTypeEnum;
#[PatternTest(input: 'ServerName example.com', output: 'ServerName')]
#[PatternTest(input: 'DocumentRoot /var/www/html', output: 'DocumentRoot')]
#[PatternTest(input: ' RewriteRule ^(.*)$ index.php [L]', output: 'RewriteRule')]
#[PatternTest(input: 'Listen 80', output: 'Listen')]
#[PatternTest(input: 'SSLEngine on', output: 'SSLEngine')]
final readonly class ApacheDirectivePattern implements Pattern
{
use IsPattern;
private const DIRECTIVES = [
'ServerRoot', 'Listen', 'LoadModule',
'ServerAdmin', 'ServerName', 'ServerAlias',
'DocumentRoot', 'ErrorLog', 'CustomLog', 'LogLevel', 'LogFormat',
'DirectoryIndex', 'Options', 'AllowOverride',
'Require', 'Order', 'Allow', 'Deny',
'Include', 'IncludeOptional',
'RewriteEngine', 'RewriteCond', 'RewriteRule', 'RewriteBase',
'SSLEngine', 'SSLCertificateFile', 'SSLCertificateKeyFile', 'SSLCertificateChainFile',
'ProxyPass', 'ProxyPassReverse', 'ProxyPreserveHost',
'Header', 'RequestHeader',
'SetEnv', 'SetEnvIf', 'PassEnv',
'Redirect', 'RedirectMatch', 'RedirectPermanent',
'Alias', 'ScriptAlias',
'AddType', 'AddHandler', 'AddOutputFilterByType',
'ErrorDocument',
'Timeout', 'KeepAlive', 'MaxKeepAliveRequests', 'KeepAliveTimeout',
'AccessFileName', 'DefaultType', 'HostnameLookups',
'UseCanonicalName', 'ServerSignature', 'ServerTokens',
'TypesConfig', 'MIMEMagicFile',
'ExpiresActive', 'ExpiresByType', 'ExpiresDefault',
];
public function getPattern(): string
{
$directives = implode('|', self::DIRECTIVES);
return "/^\s*(?<match>{$directives})\b/m";
}
public function getTokenType(): TokenTypeEnum
{
return TokenTypeEnum::KEYWORD;
}
}