| @@ 38-64 (lines=27) @@ | ||
| 35 | * |
|
| 36 | * @return BladeCompiler |
|
| 37 | */ |
|
| 38 | private function addLoopDirectives(BladeCompiler $blade) |
|
| 39 | { |
|
| 40 | $blade->extend(function ($value) { |
|
| 41 | $pattern = '/(?<!\\w)(\\s*)@loop(?:\\s*)\\((.*)(?:\\sas\\s)([^)]*)\\)/'; |
|
| 42 | $replacement = <<<'EOT' |
|
| 43 | $1<?php |
|
| 44 | $loop = app('blade.loop')->newLoop($2); |
|
| 45 | foreach($loop->getItems() as $3): |
|
| 46 | $loop = app('blade.loop')->loop(); |
|
| 47 | ?> |
|
| 48 | EOT; |
|
| 49 | return preg_replace($pattern, $replacement, $value); |
|
| 50 | }); |
|
| 51 | ||
| 52 | $blade->extend(function ($value) { |
|
| 53 | $pattern = '/(?<!\\w)(\\s*)@endloop(\\s*)/'; |
|
| 54 | $replacement = <<<'EOT' |
|
| 55 | $1<?php |
|
| 56 | endforeach; |
|
| 57 | app('blade.loop')->endLoop($loop); |
|
| 58 | ?>$2 |
|
| 59 | EOT; |
|
| 60 | return preg_replace($pattern, $replacement, $value); |
|
| 61 | }); |
|
| 62 | ||
| 63 | return $blade; |
|
| 64 | } |
|
| 65 | ||
| 66 | /** |
|
| 67 | * Extend blade by continue and break directives. |
|
| @@ 73-90 (lines=18) @@ | ||
| 70 | * |
|
| 71 | * @return BladeCompiler |
|
| 72 | */ |
|
| 73 | private function addLoopControlDirectives(BladeCompiler $blade) |
|
| 74 | { |
|
| 75 | $blade->extend(function ($value) { |
|
| 76 | $pattern = '/(?<!\\w)(\\s*)@continue\\s*\\(([^)]*)\\)/'; |
|
| 77 | $replacement = '$1<?php if ($2) { continue; } ?>'; |
|
| 78 | ||
| 79 | return preg_replace($pattern, $replacement, $value); |
|
| 80 | }); |
|
| 81 | ||
| 82 | $blade->extend(function ($value) { |
|
| 83 | $pattern = '/(?<!\\w)(\\s*)@break\\s*\\(([^)]*)\\)/'; |
|
| 84 | $replacement = '$1<?php if ($2) { break; } ?>'; |
|
| 85 | ||
| 86 | return preg_replace($pattern, $replacement, $value); |
|
| 87 | }); |
|
| 88 | ||
| 89 | return $blade; |
|
| 90 | } |
|
| 91 | } |
|
| 92 | ||