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

from bu4.evaluation.constructs.evalue import EValue
from bu4.evaluation.sync import sync
from bu4.linking.evaluable_from_parsed import evaluable_from_parsed
from bu4.parsing.toolchain.parse import parse
from bu4.parsing.toolchain.stdext import standard_extension
from bu4.parsing.toolchain.transply import transply

__all__ = ('synced',)


def synced(source: str) -> EValue:
    bsource = transply(source)
    parsed = parse(bsource, standard_extension)
    evaluable = evaluable_from_parsed({}, parsed)
    return sync(evaluable)