PluginProbe
Packeta / 1.6.2
Packeta v1.6.2
2.3.2 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 All 56 releases
packeta / scoper.custom.php

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

117 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['patchers'][] = static function ( string $filePath, string $prefix, string $content ): string {
17 $regexForPrefix = "([\\s\"'\\[(<@|])";
18 if ( str_contains( $filePath, 'latte/latte' ) ) {
19 // would not work for other imported namespace
20 // e.g.: use Nette\Bridges\Latte; echo Latte\SomeClass::method();
21 // luckily Nette related packages do not do that
22 $content = preg_replace(
23 [
24 "~{$regexForPrefix}\\\\\\\\Latte\\\\\\\\~",
25 "~{$regexForPrefix}Latte\\\\\\\\~",
26 "~{$regexForPrefix}\\\\Latte\\\\~",
27 "~{$regexForPrefix}Latte\\\\~",
28 ],
29 [
30 '$1\\\\\\\\Packetery\\\\\\\\Latte\\\\\\\\',
31 '$1\\\\\\\\Packetery\\\\\\\\Latte\\\\\\\\',
32 '$1\\\\Packetery\\\\Latte\\\\',
33 '$1\\\\Packetery\\\\Latte\\\\',
34 ],
35 $content
36 );
37
38 $content = str_replace( [
39 'namespace \\Packetery',
40 'use Tracy\\Dumper;',
41 'use Tracy\\Helpers;',
42 ], [
43 // would not work in string context
44 'namespace Packetery',
45 'use \\Packetery\\Tracy\\Dumper;',
46 'use \\Packetery\\Tracy\\Helpers;',
47 ], $content );
48 }
49
50 if ( str_contains( $filePath, 'nette/' ) ) {
51 $content = preg_replace(
52 [
53 "~{$regexForPrefix}\\\\\\\\Nette\\\\\\\\~",
54 "~{$regexForPrefix}Nette\\\\\\\\~",
55 "~{$regexForPrefix}\\\\Nette\\\\~",
56 "~{$regexForPrefix}Nette\\\\~",
57 ],
58 [
59 '$1\\\\\\\\Packetery\\\\\\\\Nette\\\\\\\\',
60 '$1\\\\\\\\Packetery\\\\\\\\Nette\\\\\\\\',
61 '$1\\\\Packetery\\\\Nette\\\\',
62 '$1\\\\Packetery\\\\Nette\\\\',
63 ],
64 $content
65 );
66
67 $content = str_replace( [
68 'namespace \\Packetery',
69 'use Nette;',
70 'use Tracy\\Dumper;',
71 'use Tracy\\Helpers;',
72 ], [
73 // would not work in string context
74 'namespace Packetery',
75 'use \\Packetery\\Nette;',
76 'use \\Packetery\\Tracy\\Dumper;',
77 'use \\Packetery\\Tracy\\Helpers;',
78 ], $content );
79 }
80
81 if ( str_contains( $filePath, 'tracy/tracy/' ) ) {
82 $content = preg_replace(
83 [
84 "~{$regexForPrefix}\\\\\\\\Tracy\\\\\\\\~",
85 "~{$regexForPrefix}Tracy\\\\\\\\~",
86 "~{$regexForPrefix}\\\\Tracy\\\\~",
87 "~{$regexForPrefix}Tracy\\\\~",
88 ],
89 [
90 '$1\\\\\\\\Packetery\\\\\\\\Tracy\\\\\\\\',
91 '$1\\\\\\\\Packetery\\\\\\\\Tracy\\\\\\\\',
92 '$1\\\\Packetery\\\\Tracy\\\\',
93 '$1\\\\Packetery\\\\Tracy\\\\',
94 ],
95 $content
96 );
97
98 $content = str_replace(
99 [
100 'namespace \\Packetery',
101 'namespace Tracy',
102 ],
103 [
104 // would not work in string context
105 'namespace Packetery',
106 'namespace Packetery\\Tracy',
107 ],
108 $content
109 );
110 }
111
112 return $content;
113 };
114
115 return $config;
116 }
117