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

from typing import Callable

from bu4.linking.states.linkingstate import LinkingState
from bu4.linking.targets.altarget import ALTarget
from bu4.parsing.constructs.linked import Linked

__all__ = ('ALLambda',)


class ALLambda(ALTarget):
    def __init__(self, lambda_: Callable[[Linked], LinkingState]):
        self.lambda_ = lambda_

    def given(self, linked: Linked) -> LinkingState:
        return self.lambda_(linked)