PluginProbe
Packeta / 2.3.1
Packeta v2.3.1
2.3.1 trunk 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3.0 1.3.1 1.3.2 1.4 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 All 55 releases
packeta / scoper.custom.php

scoper.custom.php in Packeta 2.3.1, at scoper.custom.php

118 lines 2.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Scoper config.
4 *
5 * @package Packetery
6 */
7
8 /**
9 * Customizes PHP scoper config.
10 *
11 * @param array $config Config.
12 *
13 * @return array
14 */
15 function customize_php_scoper_config( array $config ): array {
16 $config['tag-declarations-as-internal'] = false;
17 $config['patchers'][] = static function ( string $filePath, string $prefix, string $content ): string {
18 $regexForPrefix = "([\\s\"'\\[(<@|])";
19 if ( str_contains( $filePath, 'latte/latte' ) ) {
20 // would not work for other imported namespace
21 // e.g.: use Nette\Bridges\Latte; echo Latte\SomeClass::method();
22 // luckily Nette related packages do not do that
23 $content = preg_replace(
24 [
25 "~{$regexForPrefix}\\\\\\\\Latte\\\\\\\\~",
26 "~{$regexForPrefix}Latte\\\\\\\\~",
27 "~{$regexForPrefix}\\\\Latte\\\\~",
28 "~{$regexForPrefix}Latte\\\\~",
29 ],
30 [
31 '$1\\\\\\\\Packetery\\\\\\\\Latte\\\\\\\\',
32 '$1\\\\\\\\Packetery\\\\\\\\Latte\\\\\\\\',
33 '$1\\\\Packetery\\\\Latte\\\\',
34 '$1\\\\Packetery\\\\Latte\\\\',
35 ],
36 $content
37 );
38
39 $content = str_replace( [
40 'namespace \\Packetery',
41 'use Tracy\\Dumper;',
42 'use Tracy\\Helpers;',
43 ], [
44 // would not work in string context
45 'namespace Packetery',
46 'use \\Packetery\\Tracy\\Dumper;',
47 'use \\Packetery\\Tracy\\Helpers;',
48 ], $content );
49 }
50
51 if ( str_contains( $filePath, 'nette/' ) ) {
52 $content = preg_replace(
53 [
54 "~{$regexForPrefix}\\\\\\\\Nette\\\\\\\\~",
55 "~{$regexForPrefix}Nette\\\\\\\\~",
56 "~{$regexForPrefix}\\\\Nette\\\\~",
57 "~{$regexForPrefix}Nette\\\\~",
58 ],
59 [
60 '$1\\\\\\\\Packetery\\\\\\\\Nette\\\\\\\\',
61 '$1\\\\\\\\Packetery\\\\\\\\Nette\\\\\\\\',
62 '$1\\\\Packetery\\\\Nette\\\\',
63 '$1\\\\Packetery\\\\Nette\\\\',
64 ],
65 $content
66 );
67
68 $content = str_replace( [
69 'namespace \\Packetery',
70 'use Nette;',
71 'use Tracy\\Dumper;',
72 'use Tracy\\Helpers;',
73 ], [
74 // would not work in string context
75 'namespace Packetery',
76 'use \\Packetery\\Nette;',
77 'use \\Packetery\\Tracy\\Dumper;',
78 'use \\Packetery\\Tracy\\Helpers;',
79 ], $content );
80 }
81
82 if ( str_contains( $filePath, 'tracy/tracy/' ) ) {
83 $content = preg_replace(
84 [
85 "~{$regexForPrefix}\\\\\\\\Tracy\\\\\\\\~",
86 "~{$regexForPrefix}Tracy\\\\\\\\~",
87 "~{$regexForPrefix}\\\\Tracy\\\\~",
88 "~{$regexForPrefix}Tracy\\\\~",
89 ],
90 [
91 '$1\\\\\\\\Packetery\\\\\\\\Tracy\\\\\\\\',
92 '$1\\\\\\\\Packetery\\\\\\\\Tracy\\\\\\\\',
93 '$1\\\\Packetery\\\\Tracy\\\\',
94 '$1\\\\Packetery\\\\Tracy\\\\',
95 ],
96 $content
97 );
98
99 $content = str_replace(
100 [
101 'namespace \\Packetery',
102 'namespace Tracy',
103 ],
104 [
105 // would not work in string context
106 'namespace Packetery',
107 'namespace Packetery\\Tracy',
108 ],
109 $content
110 );
111 }
112
113 return $content;
114 };
115
116 return $config;
117 }
118