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..861ce115 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. * @@ -27,13 +41,28 @@ public function testControlStructuresAreCreatedCorrectly() { $blade1 = "@if (true)\nfoo\n@endif"; $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"; + $blade3 = "@if (true)\nfoo\n@elseif (false)\nbar\n@else\nfoobar\n@endif"; + $blade4 = "@if (true)\nfoo\n@elseif (false)\nbar\n@endif"; + $blade5 = "@if (true)\nfoo\n@else\nbar\n@endif"; + $blade6 = "@unless (count(".'$something'.") > 0)\nfoobar\n@endunless"; + $blade7 = "@for (Foo::all() as ".'$foo'.")\nfoo\n@endfor"; + $blade8 = "@foreach (Foo::all() as ".'$foo'.")\nfoo\n@endforeach"; + $blade9 = "@forelse (Foo::all() as ".'$foo'.")\nfoo\n@empty\nbar\n@endforelse"; + $blade10 = "@while (true)\nfoo\n@endwhile"; + $blade11 = "@while (Foo::bar())\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("\nfoo\n\nbar\n\nfoobar\n", Blade::compile_string($blade3)); + $this->assertEquals("\nfoo\n\nbar\n", Blade::compile_string($blade4)); + $this->assertEquals("\nfoo\n\nbar\n", Blade::compile_string($blade5)); + $this->assertEquals(" 0))): ?>\nfoobar\n", Blade::compile_string($blade6)); + $this->assertEquals("\nfoo\n", Blade::compile_string($blade7)); + $this->assertEquals("\nfoo\n", Blade::compile_string($blade8)); + $this->assertEquals(" 0): ?>\nfoo\n\nbar\n", Blade::compile_string($blade9)); + $this->assertEquals("\nfoo\n", Blade::compile_string($blade10)); + $this->assertEquals("\nfoo\n", Blade::compile_string($blade11)); } /** @@ -60,4 +89,33 @@ public function testSectionsAreCompiledCorrectly() $this->assertEquals("\nfoo\n", Blade::compile_string($blade)); } + /** + * Test the compilation of include statements. + * + * @group laravel + */ + public function testIncludesAreCompiledCorrectly() + { + $blade1 = "@include('user.profile')"; + $blade2 = "@include(Config::get('application.default_view', 'user.profile'))"; + + $this->assertEquals("with(get_defined_vars())->render(); ?>", Blade::compile_string($blade1)); + $this->assertEquals("with(get_defined_vars())->render(); ?>", Blade::compile_string($blade2)); + } + + /** + * Test the compilation of render statements. + * + * @group laravel + */ + public function testRendersAreCompiledCorrectly() + { + $blade1 = "@render('user.profile')"; + $blade2 = "@render(Config::get('application.default_view', 'user.profile'))"; + + $this->assertEquals("", Blade::compile_string($blade1)); + $this->assertEquals("", Blade::compile_string($blade2)); + + } + } \ No newline at end of file