( # noqa: C901
self, value: str | Any, by: str, multiple: bool = False
)
| 510 | return self.find_broadcast(value, by) |
| 511 | |
| 512 | def find_block( # noqa: C901 |
| 513 | self, value: str | Any, by: str, multiple: bool = False |
| 514 | ) -> None | block.Block | prim.Prim | list[block.Block | prim.Prim]: |
| 515 | _ret = [] |
| 516 | by = by.lower() |
| 517 | for _block_id, _block in (self.blocks | self.prims).items(): |
| 518 | _block: block.Block | prim.Prim |
| 519 | |
| 520 | is_block = isinstance(_block, block.Block) |
| 521 | is_prim = isinstance(_block, prim.Prim) |
| 522 | |
| 523 | compare = None |
| 524 | if by == "id": |
| 525 | compare = _block_id |
| 526 | elif by == "argument ids": |
| 527 | if is_prim: |
| 528 | continue |
| 529 | |
| 530 | if _block.mutation is not None: |
| 531 | compare = _block.mutation.argument_ids |
| 532 | elif by == "opcode": |
| 533 | if is_prim: |
| 534 | continue |
| 535 | |
| 536 | # Defaulting |
| 537 | compare = _block.opcode |
| 538 | else: |
| 539 | if is_block: |
| 540 | compare = _block.opcode |
| 541 | else: |
| 542 | compare = _block.value |
| 543 | |
| 544 | if compare == value: |
| 545 | if multiple: |
| 546 | _ret.append(_block) |
| 547 | else: |
| 548 | return _block |
| 549 | # Search in stage for global variables |
| 550 | if self.project: |
| 551 | if not self.is_stage: |
| 552 | if multiple: |
| 553 | _ret += self.stage.find_block(value, by, True) |
| 554 | else: |
| 555 | return self.stage.find_block(value, by) |
| 556 | |
| 557 | if multiple: |
| 558 | return _ret |
| 559 | return None |
| 560 | |
| 561 | def export(self, fp: Optional[str] = None, *, export_as_zip: bool = True): |
| 562 | if fp is None: |
no outgoing calls
no test coverage detected