MCPcopy Create free account
hub / github.com/TimMcCool/scratchattach / find_block

Method find_block

scratchattach/editor/sprite.py:512–559  ·  view source on GitHub ↗
(  # noqa: C901
        self, value: str | Any, by: str, multiple: bool = False
    )

Source from the content-addressed store, hash-verified

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:

Callers 4

link_using_spriteMethod · 0.80
link_using_blockMethod · 0.80
link_using_spriteMethod · 0.80
link_argumentsMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected