builtup4/bu4/isynced.py
2021-09-12 13:33:13 +03:00

23 lines
794 B
Python

# Copyright (c) PARRRATE T&V 2021. All rights reserved.
from bu4.combinatory.tocombinatory import to_combinatory
from bu4.evaluation.constructs.evalue import EValue
from bu4.evaluation.sync import sync
from bu4.linkable.toolchain.parse import parse
from bu4.linkable.toolchain.stdext import standard_extensions
from bu4.linkable.toolchain.transply import transply
from bu4.transform.transform import transform
__all__ = ('isynced',)
def isynced(source: str, *, combinatory=False) -> EValue:
bsource = transply(source)
parsed = parse(bsource, standard_extensions)
linked = transform(parsed.link(set()))
if combinatory:
linked = transform(to_combinatory(linked))
indexed = transform(linked.index([]))
evaluable = indexed.attach([])
return sync(evaluable)