Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
16.67% |
2 / 12 |
CRAP | |
6.25% |
3 / 48 |
SectionsTrait | |
0.00% |
0 / 1 |
|
16.67% |
2 / 12 |
316.45 | |
6.25% |
3 / 48 |
setViewFactory | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
getViewFactory | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
startSection | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 7 |
|||
inject | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
yieldSection | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
stopSection | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 6 |
|||
appendSection | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 6 |
|||
extendSection | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 5 |
|||
yieldContent | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 10 |
|||
flushSections | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
flushSectionsIfDoneRendering | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 4 |
|||
getSections | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
<?php | |
/** | |
* Part of the Laradic packages. | |
*/ | |
namespace Radic\BladeExtensions\Traits; | |
use Illuminate\Contracts\View\Factory; | |
/** | |
* Trait SectionsTrait | |
* | |
* @package Radic\BladeExtensions\Traits | |
* @author Robin Radic | |
* @license MIT | |
* @copyright 2011-2015, Robin Radic | |
* @link http://radic.mit-license.org | |
*/ | |
trait SectionsTrait | |
{ | |
/** | |
* @var array | |
*/ | |
protected $sections = []; | |
/** | |
* @var array | |
*/ | |
protected $sectionStack = []; | |
/** | |
* @var \Illuminate\View\Factory | |
*/ | |
protected $viewFactory; | |
/** | |
* setViewFactory | |
* | |
* @param \Illuminate\Contracts\View\Factory $factory | |
* @return $this | |
*/ | |
public function setViewFactory(Factory $factory) | |
{ | |
$this->viewFactory = $factory; | |
return $this; | |
} | |
/** | |
* Get the value of viewFactory | |
* | |
* @return \Illuminate\View\Factory | |
*/ | |
public function getViewFactory() | |
{ | |
return $this->viewFactory; | |
} | |
/** | |
* Start injecting content into a section. | |
* | |
* @param string $section | |
* @param string $content | |
* @return void | |
*/ | |
public function startSection($section, $content = '') | |
{ | |
if ($content === '') { | |
if (ob_start()) { | |
$this->sectionStack[] = $section; | |
} | |
} else { | |
$this->extendSection($section, $content); | |
} | |
} | |
/** | |
* Inject inline content into a section. | |
* | |
* @param string $section | |
* @param string $content | |
* @return SectionsTrait | |
*/ | |
public function inject($section, $content) | |
{ | |
$this->startSection($section, $content); | |
return $this; | |
} | |
/** | |
* Stop injecting content into a section and return its contents. | |
* | |
* @return string | |
*/ | |
public function yieldSection() | |
{ | |
return $this->yieldContent($this->stopSection()); | |
} | |
/** | |
* Stop injecting content into a section. | |
* | |
* @param bool $overwrite | |
* @return string | |
*/ | |
public function stopSection($overwrite = false) | |
{ | |
$last = array_pop($this->sectionStack); | |
if ($overwrite) { | |
$this->sections[$last] = ob_get_clean(); | |
} else { | |
$this->extendSection($last, ob_get_clean()); | |
} | |
return $last; | |
} | |
/** | |
* Stop injecting content into a section and append it. | |
* | |
* @return string | |
*/ | |
public function appendSection() | |
{ | |
$last = array_pop($this->sectionStack); | |
if (isset($this->sections[$last])) { | |
$this->sections[$last] .= ob_get_clean(); | |
} else { | |
$this->sections[$last] = ob_get_clean(); | |
} | |
return $last; | |
} | |
/** | |
* Append content to a given section. | |
* | |
* @param string $section | |
* @param string $content | |
* @return SectionsTrait | |
*/ | |
protected function extendSection($section, $content) | |
{ | |
if (isset($this->sections[$section])) { | |
$content = str_replace('@parent', $content, $this->sections[$section]); | |
} | |
$this->sections[$section] = $content; | |
return $this; | |
} | |
/** | |
* Get the string contents of a section. | |
* | |
* @param string $section | |
* @param string $default | |
* @return string | |
*/ | |
public function yieldContent($section, $default = '') | |
{ | |
$sectionContent = $default; | |
if (isset($this->sections[$section])) { | |
$sectionContent = $this->sections[$section]; | |
} | |
$sectionContent = str_replace('@@parent', '--parent--holder--', $sectionContent); | |
return str_replace( | |
'--parent--holder--', | |
'@parent', | |
str_replace('@parent', '', $sectionContent) | |
); | |
} | |
/** | |
* Flush all of the section contents. | |
* | |
* @return SectionsTrait | |
*/ | |
public function flushSections() | |
{ | |
$this->sections = array(); | |
$this->sectionStack = array(); | |
return $this; | |
} | |
/** | |
* Flush all of the section contents if done rendering. | |
* | |
* @return SectionsTrait | |
*/ | |
public function flushSectionsIfDoneRendering() | |
{ | |
if ($this->viewFactory->doneRendering()) { | |
$this->flushSections(); | |
return $this; | |
} | |
} | |
/** | |
* Get the entire array of sections. | |
* | |
* @return array | |
*/ | |
public function getSections() | |
{ | |
return $this->sections; | |
} | |
} |