diff --git a/laravel/blade.php b/laravel/blade.php index f0a520ab..e9d91c21 100644 --- a/laravel/blade.php +++ b/laravel/blade.php @@ -303,7 +303,7 @@ protected static function compile_unless($value) { $pattern = '/(\s*)@unless(\s*\(.*\))/'; - return preg_replace($pattern, '$1', $value); + return preg_replace($pattern, '$1', $value); } /** diff --git a/laravel/tests/cases/blade.test.php b/laravel/tests/cases/blade.test.php index 70e80b3b..a3653d43 100644 --- a/laravel/tests/cases/blade.test.php +++ b/laravel/tests/cases/blade.test.php @@ -18,6 +18,20 @@ public function testEchosAreConvertedProperly() $this->assertEquals('', Blade::compile_string($blade2)); } + /** + * Test the compilation of comments statements. + * + * @group laravel + */ + public function testCommentsAreConvertedProperly() + { + $blade1 = "{{-- This is a comment --}}"; + $blade2 = "{{--\nThis is a\nmulti-line\ncomment.\n--}}"; + + $this->assertEquals("\n", Blade::compile_string($blade1)); + $this->assertEquals("\n", Blade::compile_string($blade2)); + } + /** * Test the compilation of control structures. * @@ -29,11 +43,22 @@ public function testControlStructuresAreCreatedCorrectly() $blade2 = "@if (count(".'$something'.") > 0)\nfoo\n@endif"; $blade3 = "@if (true)\nfoo\n@elseif (false)\nbar\n@endif"; $blade4 = "@if (true)\nfoo\n@else\nbar\n@endif"; + $blade5 = "@unless (count(".'$something'.") > 0)\nfoobar\n@endunless"; + $blade6 = "@for (Foo::all() as ".'$foo'.")\nfoo\n@endfor"; + $blade7 = "@foreach (Foo::all() as ".'$foo'.")\nfoo\n@endforeach"; + $blade8 = "@forelse (Foo::all() as ".'$foo'.")\nfoo\n@empty\nbar\n@endforelse"; + $blade9 = "@while (true)\nfoo\n@endwhile"; $this->assertEquals("\nfoo\n", Blade::compile_string($blade1)); $this->assertEquals(" 0): ?>\nfoo\n", Blade::compile_string($blade2)); $this->assertEquals("\nfoo\n\nbar\n", Blade::compile_string($blade3)); $this->assertEquals("\nfoo\n\nbar\n", Blade::compile_string($blade4)); + $this->assertEquals(" 0))): ?>\nfoobar\n", Blade::compile_string($blade5)); + $this->assertEquals("\nfoo\n", Blade::compile_string($blade6)); + $this->assertEquals("\nfoo\n", Blade::compile_string($blade7)); + $this->assertEquals(" 0): ?>\nfoo\n\nbar\n", Blade::compile_string($blade8)); + $this->assertEquals("\nfoo\n", Blade::compile_string($blade9)); + } /** @@ -60,4 +85,28 @@ public function testSectionsAreCompiledCorrectly() $this->assertEquals("\nfoo\n", Blade::compile_string($blade)); } + /** + * Test the compilation of include statements. + * + * @group laravel + */ + public function testIncludesAreCompiledCorrectly() + { + $blade = "@include('user.profile')"; + + $this->assertEquals("with(get_defined_vars())->render(); ?>", Blade::compile_string($blade)); + } + + /** + * Test the compilation of render statements. + * + * @group laravel + */ + public function testRendersAreCompiledCorrectly() + { + $blade = "@render('user.profile')"; + + $this->assertEquals("", Blade::compile_string($blade)); + } + } \ No newline at end of file