#  Copyright (c) PARRRATE T&V 2021. All rights reserved.

from bu4.encoding.codes import CODE_MAKE
from bu4.linkable.constructs.parsed import Parsed
from bu4.linkable.constructs.plambda import PLambda
from bu4.parsing.extensions.CodeExtension import CodeExtension
from bu4.transform.states.transformstate import TransformState

__all__ = ('XLMake',)


class XLMake(CodeExtension[Parsed], code=CODE_MAKE):
    def apply(self) -> TransformState[Parsed]:
        name = self.parser.parse_name()
        return self.readlambdafinished(
            lambda value: PLambda(name, value)
        )