Example #1
0
def parse_sexp_to_condition(
    sexp: Program, ) -> Tuple[Optional[Err], Optional[ConditionWithArgs]]:
    """
    Takes a ChiaLisp sexp and returns a ConditionWithArgs.
    If it fails, returns an Error
    """
    as_atoms = sexp.as_atom_list()
    if len(as_atoms) < 1:
        return Err.INVALID_CONDITION, None
    opcode = as_atoms[0]
    opcode = ConditionOpcode(opcode)
    return None, ConditionWithArgs(opcode, as_atoms[1:])
Example #2
0
def parse_sexp_to_condition(
    sexp: Program, ) -> Tuple[Optional[Err], Optional[ConditionWithArgs]]:
    """
    Takes a ChiaLisp sexp and returns a ConditionWithArgs.
    If it fails, returns an Error
    """
    as_atoms = sexp.as_atom_list()
    if len(as_atoms) < 1:
        return Err.INVALID_CONDITION, None
    opcode = as_atoms[0]
    try:
        opcode = ConditionOpcode(opcode)
    except ValueError:
        # TODO: this remapping is bad, and should probably not happen
        # it's simple enough to just store the opcode as a byte
        opcode = ConditionOpcode.UNKNOWN
    return None, ConditionWithArgs(opcode, as_atoms[1:])