<?php
namespace App\Services;
use Cocur\Slugify\Slugify;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
class PageBuilder
{
public function __construct(ParameterBagInterface $params)
{
$this->params = $params;
$this->slugify = new Slugify(['regexp' => '/([^A-Za-z0-9.]|-)+/']);
}
public function compile($source) {
$arr = json_decode($source);
$comp = "";
foreach($arr->sections as $section)
{
$comp .= $this->compileSection($section);
}
return $comp;
}
private function compileSection($section) {
$rows = "";
foreach($section->rows as $row) {
$rows .= $this->compileRow($row);
}
return "<section><div class='container'>".$rows."</div></section>";
}
private function compileRow($row) {
$columns = "";
foreach ($row->columns as $column)
$columns .= $this->compileColumn($column);
return "<div class='row'>".$columns."</div>";
}
private function compileColumn($column) {
$blocks = "";
foreach ($column->blocks as $block)
$blocks .= $this->compileBlock($block);
return "<div class='col'>".$blocks."</div>";
}
private function compileBlock($block) {
$content = isset($block->content) ? $block->content : "";
return "<div class='block'>".$content."</div>";
}
}