imanghafoori1/laravel-widgetize

View on GitHub
src/Utils/Normalizer.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace Imanghafoori\Widgets\Utils;

class Normalizer
{
    /**
     * @var NormalizerContract[]
     */
    private $normalizers = [];

    public function addNormalizer(NormalizerContract $normalizer): void
    {
        $this->normalizers[] = $normalizer;
    }

    /**
     * Figures out and sets the widget configs according to conventions.
     *
     * @param  object  $widget
     */
    public function normalizeWidgetConfig($widget): void
    {
        // to avoid normalizing a widget multiple times unnecessarily :
        if (isset($widget->isNormalized)) {
            return;
        }

        foreach ($this->normalizers as $normalizer) {
            $normalizer->normalize($widget);
        }

        $widget->isNormalized = true;
    }
}