diff --git a/src/Languages/JavaScript/Patterns/JsDoubleQuoteValuePattern.php b/src/Languages/JavaScript/Patterns/JsDoubleQuoteValuePattern.php index 2ed49e1..98e9eec 100644 --- a/src/Languages/JavaScript/Patterns/JsDoubleQuoteValuePattern.php +++ b/src/Languages/JavaScript/Patterns/JsDoubleQuoteValuePattern.php @@ -11,7 +11,7 @@ #[PatternTest( input: 'return "hello"', - output: 'hello', + output: '"hello"', )] final readonly class JsDoubleQuoteValuePattern implements Pattern { @@ -19,7 +19,7 @@ public function getPattern(): string { - return '"(?.*?)"'; + return '(?"(\\\"|.)*?")'; } public function getTokenType(): TokenTypeEnum diff --git a/src/Languages/JavaScript/Patterns/JsSingleQuoteValuePattern.php b/src/Languages/JavaScript/Patterns/JsSingleQuoteValuePattern.php index d605a25..c2630f6 100644 --- a/src/Languages/JavaScript/Patterns/JsSingleQuoteValuePattern.php +++ b/src/Languages/JavaScript/Patterns/JsSingleQuoteValuePattern.php @@ -11,7 +11,7 @@ #[PatternTest( input: "return 'hello';", - output: 'hello', + output: "'hello'", )] final readonly class JsSingleQuoteValuePattern implements Pattern { @@ -19,7 +19,7 @@ public function getPattern(): string { - return "'(?.*?)'"; + return "(?'(\\\'|.)*?')"; } public function getTokenType(): TokenTypeEnum diff --git a/src/Languages/Php/Patterns/DoubleQuoteValuePattern.php b/src/Languages/Php/Patterns/DoubleQuoteValuePattern.php index 43e4ee4..eadadee 100644 --- a/src/Languages/Php/Patterns/DoubleQuoteValuePattern.php +++ b/src/Languages/Php/Patterns/DoubleQuoteValuePattern.php @@ -11,7 +11,7 @@ #[PatternTest( input: 'return "hello"', - output: 'hello', + output: '"hello"', )] final readonly class DoubleQuoteValuePattern implements Pattern { @@ -19,7 +19,7 @@ public function getPattern(): string { - return '"(?.*?)"'; + return '(?"(\\\"|.)*?")'; } public function getTokenType(): TokenTypeEnum diff --git a/src/Languages/Php/Patterns/SingleQuoteValuePattern.php b/src/Languages/Php/Patterns/SingleQuoteValuePattern.php index c17703c..e624646 100644 --- a/src/Languages/Php/Patterns/SingleQuoteValuePattern.php +++ b/src/Languages/Php/Patterns/SingleQuoteValuePattern.php @@ -11,7 +11,15 @@ #[PatternTest( input: "return 'hello';", - output: 'hello', + output: "'hello'", +)] +#[PatternTest( + input: "echo 'Yo\\';", + output: "'Yo\\'", +)] +#[PatternTest( + input: "echo 'Very \'long\'\\\'annoying\' string';", + output: "'Very \'long\'\\\'annoying\' string'", )] final readonly class SingleQuoteValuePattern implements Pattern { @@ -19,7 +27,7 @@ public function getPattern(): string { - return "'(?.*?)'"; + return "(?'(\\\'|.)*?')"; } public function getTokenType(): TokenTypeEnum diff --git a/tests/Languages/Base/Injections/GutterInjectionTest.php b/tests/Languages/Base/Injections/GutterInjectionTest.php index 09fe1ae..c004439 100644 --- a/tests/Languages/Base/Injections/GutterInjectionTest.php +++ b/tests/Languages/Base/Injections/GutterInjectionTest.php @@ -35,10 +35,10 @@ public function test_gutter_injection(): void 10foreach ($lines as $i => $line) { 11 $gutterNumber = $gutterNumbers[$i]; 12 - 13 $gutterClass = 'hl-gutter ' . ($this->classes[$i + 1] ?? ''); + 13 $gutterClass = 'hl-gutter ' . ($this->classes[$i + 1] ?? ''); 14 + 15 + $lines[$i] = sprintf( -16 + Escape::tokens('<span class="%s">%s</span>%s'), +16 + Escape::tokens('<span class="%s">%s</span>%s'), 17 $gutterClass, 18 str_pad( 19 - string: $gutterNumber, @@ -128,7 +128,7 @@ public function test_gutter_injection_terminal(): void TXT; $expected = <<<'TXT' -ICAxMCAbWzM0bWZvcmVhY2gbWzBtICgbWzBtJGxpbmVzG1swbSAbWzM0bWFzG1swbSAbWzBtJGkbWzBtID0+IBtbMG0kbGluZRtbMG0pIHsKICAxMSAgICAgG1swbSRndXR0ZXJOdW1iZXIbWzBtID0gG1swbSRndXR0ZXJOdW1iZXJzG1swbVsbWzBtJGkbWzBtXTsKICAxMiAKICAxMyAgICAgG1swbSRndXR0ZXJDbGFzcxtbMG0gPSAnG1szMG1obC1ndXR0ZXIgG1swbScgLiAoG1swbSR0aGlzG1swbS0+G1szMm1jbGFzc2VzG1swbVsbWzBtJGkbWzBtICsgMV0gPz8gJxtbMzBtG1swbScpOwoxNCArIBtbMG0bWzBtCjE1ICsgICAgIBtbMG0kbGluZXMbWzBtWxtbMG0kaRtbMG1dID0gG1szMm1zcHJpbnRmG1swbSgKMTYgKyAgICAgICAgIBtbMzFtRXNjYXBlG1swbTo6G1szMm10b2tlbnMbWzBtKCcbWzMwbTxzcGFuIGNsYXNzPSIlcyI+JXM8L3NwYW4+JXMbWzBtJyksG1swbRtbMG0KICAxNyAgICAgICAgIBtbMG0kZ3V0dGVyQ2xhc3MbWzBtLAogIDE4ICAgICAgICAgG1szMm1zdHJfcGFkG1swbSgKMTkgLSAgICAgICAgICAgICAbWzMybXN0cmluZxtbMG06IBtbMG0bWzBtG1swbSRndXR0ZXJOdW1iZXIbWzBtG1swbRtbMG0sCiAgMjAgICAgICAgICAgICAgG1szMm1sZW5ndGgbWzBtOiAbWzBtJGd1dHRlcldpZHRoG1swbSwKICAyMSAgICAgICAgICAgICAbWzMybXBhZF90eXBlG1swbTogG1szMm1TVFJfUEFEX0xFRlQbWzBtLAogIDIyICAgICAgICAgKSwKICAyMyAgICAgICAgIBtbMG0kbGluZRtbMG0sCiAgMjQgICAgICk7CiAgMjUgfQ== +ICAxMCAbWzM0bWZvcmVhY2gbWzBtICgbWzBtJGxpbmVzG1swbSAbWzM0bWFzG1swbSAbWzBtJGkbWzBtID0+IBtbMG0kbGluZRtbMG0pIHsKICAxMSAgICAgG1swbSRndXR0ZXJOdW1iZXIbWzBtID0gG1swbSRndXR0ZXJOdW1iZXJzG1swbVsbWzBtJGkbWzBtXTsKICAxMiAKICAxMyAgICAgG1swbSRndXR0ZXJDbGFzcxtbMG0gPSAbWzMwbSdobC1ndXR0ZXIgJxtbMG0gLiAoG1swbSR0aGlzG1swbS0+G1szMm1jbGFzc2VzG1swbVsbWzBtJGkbWzBtICsgMV0gPz8gG1szMG0nJxtbMG0pOwoxNCArIBtbMG0bWzBtCjE1ICsgICAgIBtbMG0kbGluZXMbWzBtWxtbMG0kaRtbMG1dID0gG1szMm1zcHJpbnRmG1swbSgKMTYgKyAgICAgICAgIBtbMzFtRXNjYXBlG1swbTo6G1szMm10b2tlbnMbWzBtKBtbMzBtJzxzcGFuIGNsYXNzPSIlcyI+JXM8L3NwYW4+JXMnG1swbSksG1swbRtbMG0KICAxNyAgICAgICAgIBtbMG0kZ3V0dGVyQ2xhc3MbWzBtLAogIDE4ICAgICAgICAgG1szMm1zdHJfcGFkG1swbSgKMTkgLSAgICAgICAgICAgICAbWzMybXN0cmluZxtbMG06IBtbMG0bWzBtG1swbSRndXR0ZXJOdW1iZXIbWzBtG1swbRtbMG0sCiAgMjAgICAgICAgICAgICAgG1szMm1sZW5ndGgbWzBtOiAbWzBtJGd1dHRlcldpZHRoG1swbSwKICAyMSAgICAgICAgICAgICAbWzMybXBhZF90eXBlG1swbTogG1szMm1TVFJfUEFEX0xFRlQbWzBtLAogIDIyICAgICAgICAgKSwKICAyMyAgICAgICAgIBtbMG0kbGluZRtbMG0sCiAgMjQgICAgICk7CiAgMjUgfQ== TXT; $highlighter = (new Highlighter(new LightTerminalTheme()))->withGutter(10); diff --git a/tests/Languages/JavaScript/JavaScriptLanguageTest.php b/tests/Languages/JavaScript/JavaScriptLanguageTest.php index ca8514f..8083155 100644 --- a/tests/Languages/JavaScript/JavaScriptLanguageTest.php +++ b/tests/Languages/JavaScript/JavaScriptLanguageTest.php @@ -126,12 +126,12 @@ function getMandatedParams() { // ... qq.DeleteFileAjaxRequester = function(o) { - "use strict"; + "use strict"; var requester, options = { - method: "DELETE", - uuidParamName: "qquuid", + method: "DELETE", + uuidParamName: "qquuid", endpointStore: {}, maxConnections: 3, customHeaders: function(id) {return {};}, @@ -148,9 +148,9 @@ function getMandatedParams() { qq.extend(options, o); function getMandatedParams() { - if (options.method.toUpperCase() === "POST") { + if (options.method.toUpperCase() === "POST") { return { - _method: "DELETE" + _method: "DELETE" }; } @@ -158,8 +158,8 @@ function getMandatedParams() { } requester = qq.extend(this, new qq.AjaxRequester({ - acceptHeader: "application/json", - validMethods: ["POST", "DELETE"], + acceptHeader: "application/json", + validMethods: ["POST", "DELETE"], method: options.method, endpointStore: options.endpointStore, paramsStore: options.paramsStore, @@ -178,9 +178,9 @@ function getMandatedParams() { sendDelete: function(id, uuid, additionalMandatedParams) { var additionalOptions = additionalMandatedParams || {}; - options.log("Submitting delete file request for " + id); + options.log("Submitting delete file request for " + id); - if (options.method === "DELETE") { + if (options.method === "DELETE") { requester.initTransport(id) .withPath(uuid) .withParams(additionalOptions) @@ -230,7 +230,7 @@ class Point { this.y = y; } - static displayName = "Point"; + static displayName = "Point"; static distance(a, b) { const dx = a.x - b.x; const dy = a.y - b.y; diff --git a/tests/Languages/Php/PhpLanguageTest.php b/tests/Languages/Php/PhpLanguageTest.php index 962db14..b873793 100644 --- a/tests/Languages/Php/PhpLanguageTest.php +++ b/tests/Languages/Php/PhpLanguageTest.php @@ -24,15 +24,15 @@ public function test_highlight(string $content, string $expected): void public static function data(): array { return [ - ["'php()'", "'php()'"], - ["#[PatternTest(input: 'new Foo()', output: 'Foo')]", '#[PatternTest(input: \'new Foo()\', output: \'Foo\')]'], + ["'php()'", "'php()'"], + ["#[PatternTest(input: 'new Foo()', output: 'Foo')]", '#[PatternTest(input: \'new Foo()\', output: \'Foo\')]'], ['$foo && $bar', '$foo && $bar'], ['$foo || $bar', '$foo || $bar'], ['$foo <=> $bar', '$foo <=> $bar'], - ["public const string|\Stringable MESSAGE = 'hi';", 'public const string|\Stringable MESSAGE = \'hi\';'], + ["public const string|\Stringable MESSAGE = 'hi';", 'public const string|\Stringable MESSAGE = \'hi\';'], ["public string|\Stringable \$message;", 'public string|\Stringable $message;'], ['for($x = 0; $x < 150; $x++) {', 'for($x = 0; $x < 150; $x++) {'], - ["'namespace ';", "'namespace ';"], + ["'namespace ';", "'namespace ';"], ["static::foo()", 'static::foo()'], ['$class', '$class'], ['protected $resolved = [];', 'protected $resolved = [];'], @@ -50,7 +50,7 @@ public static function data(): array ['fn&(', 'fn&('], ['enum Foo: string', 'enum Foo: string'], ['case Foo;', 'case Foo;'], - ['$this->extends("View/base.view.php");', '$this->extends("View/base.view.php");'], + ['$this->extends("View/base.view.php");', '$this->extends("View/base.view.php");'], ['$foo = null;', '$foo = null;'], ['$foo = true;', '$foo = true;'], ['$foo = false;', '$foo = false;'], @@ -66,8 +66,8 @@ public static function data(): array set (string $value) => $this->first . " " . $this->last; }', 'public string $fullName { - get => $this->first . " " . $this->last; - set (string $value) => $this->first . " " . $this->last; + get => $this->first . " " . $this->last; + set (string $value) => $this->first . " " . $this->last; }', ], [ @@ -86,9 +86,9 @@ public function info( #[ConsoleCommand] public function info( #[ConsoleArgument( - description: 'The name of the package', - help: 'Extended help text for this argument', - aliases: ['n'], + description: 'The name of the package', + help: 'Extended help text for this argument', + aliases: ['n'], )] string $name ): void {} diff --git a/tests/Languages/Python/PythonLanguageTest.php b/tests/Languages/Python/PythonLanguageTest.php index 72e861a..5da0103 100644 --- a/tests/Languages/Python/PythonLanguageTest.php +++ b/tests/Languages/Python/PythonLanguageTest.php @@ -46,7 +46,7 @@ public static function data(): array """Print a Fibonacci series up to n.""" a, b = 0, 1 while a < n: - print(a, end=' ') + print(a, end=' ') a, b = b, a+b print() diff --git a/tests/Languages/Twig/TwigLanguageTest.php b/tests/Languages/Twig/TwigLanguageTest.php index 461e284..061fa90 100644 --- a/tests/Languages/Twig/TwigLanguageTest.php +++ b/tests/Languages/Twig/TwigLanguageTest.php @@ -36,7 +36,7 @@ public static function data(): array ["{{ parent() }}", '{{ parent() }}'], ["{{ impersonation_exit_path(path('app.user.list') ) }}", '{{ impersonation_exit_path(path(\'app.user.list\') ) }}'], ["{{ app.user.userIdentifier }}", '{{ app.user.userIdentifier }}'], - ['', '<script>const mainSearchUrl = "";</script>'], + ['', '<script>const mainSearchUrl = "";</script>'], ['{% cache "cache key" %}', '{% cache "cache key" %}'], ['{{ "foobar"|data_uri(mime="text/html", parameters={charset: "ascii"}) }}', '{{ "<b>foobar</b>"|data_uri(mime="text/html", parameters={charset: "ascii"}) }}'], ]; diff --git a/tests/stubs/01.txt b/tests/stubs/01.txt index 56a7ddf..17bad43 100644 --- a/tests/stubs/01.txt +++ b/tests/stubs/01.txt @@ -18,18 +18,18 @@ final readonly class HomeController === final readonly class HomeController { - #[Get(uri: '/home')] + #[Get(uri: '/home')] public function __invoke(): View { - return view('Views/home.view.php') + return view('Views/home.view.php') ->data( - name: 'Brent', + name: 'Brent', date: new DateTime(), ); } - #[Post(uri: '/home')] + #[Post(uri: '/home')] public function __invoke(): View { } -} \ No newline at end of file +}