<?php

namespace CouponsPlus\App\Coupon\Attributes\Factories;

use CouponsPlus\App\Coupon\Attributes\Abilities\AttributeData;
use CouponsPlus\App\Coupon\Attributes\Abilities\AttributeValueData;
use CouponsPlus\App\Coupon\Attributes\Data\LocalAttributeValueData;
use CouponsPlus\App\Coupon\Attributes\Abilities\AttributeValueDataFactory;

class LocalAttributeValueDataFactory implements AttributeValueDataFactory
{
    /**
     * @var AttributeData
     */
    protected $attributeData;

    public function setAttributeData(AttributeData $attributeData)
    {
        $this->attributeData = $attributeData;
    }


    /**
     * @param $value string|AttributeValueData
     */
    public function create($value): AttributeValueData
    {
        if ($value instanceof AttributeValueData) {
            return $value;
        }

        return new LocalAttributeValueData($value, $this->attributeData);
    }
}