def _code_insert(code1, code2, ndx) -> Union[Token, Tuple[Atom]]: if not isinstance(code1, CodeBlock): code1 = CodeBlock([code1]) if code1.size() == 0: return code1.append(code2), ndx = abs(ndx) % code1.size() return code1.with_code_inserted_at_point(code2, ndx),
def test_with_code_inserted_at_point(self): code_block = CodeBlock([ CodeBlock([ Literal(value="A", push_type=PushStr), Literal(value="B", push_type=PushStr) ]), Literal(value="C", push_type=PushStr) ]) code = Literal(value="Z", push_type=PushStr) assert code_block.with_code_inserted_at_point(code, 0) == CodeBlock([ code, CodeBlock([ Literal(value="A", push_type=PushStr), Literal(value="B", push_type=PushStr) ]), Literal(value="C", push_type=PushStr) ]) assert code_block.with_code_inserted_at_point(code, 1) == CodeBlock([ CodeBlock([ code, Literal(value="A", push_type=PushStr), Literal(value="B", push_type=PushStr) ]), Literal(value="C", push_type=PushStr) ]) assert code_block.with_code_inserted_at_point(code, 2) == CodeBlock([ CodeBlock([ Literal(value="A", push_type=PushStr), code, Literal(value="B", push_type=PushStr) ]), Literal(value="C", push_type=PushStr) ]) assert code_block.with_code_inserted_at_point(code, 3) == CodeBlock([ CodeBlock([ Literal(value="A", push_type=PushStr), Literal(value="B", push_type=PushStr), code ]), Literal(value="C", push_type=PushStr) ]) assert code_block.with_code_inserted_at_point(code, 4) == CodeBlock([ CodeBlock([ Literal(value="A", push_type=PushStr), Literal(value="B", push_type=PushStr) ]), code, Literal(value="C", push_type=PushStr) ]) assert code_block.with_code_inserted_at_point(code, 5) == CodeBlock([ CodeBlock([ Literal(value="A", push_type=PushStr), Literal(value="B", push_type=PushStr) ]), Literal(value="C", push_type=PushStr), code ]) assert code_block.with_code_inserted_at_point(code, 100) == CodeBlock([ CodeBlock([ Literal(value="A", push_type=PushStr), Literal(value="B", push_type=PushStr) ]), Literal(value="C", push_type=PushStr), code ])