23 lines
724 B
Python
23 lines
724 B
Python
|
|
|
|
def _real_extract_blocks_from_stack(stack):
|
|
for block in stack:
|
|
if isinstance(block, list) and block:
|
|
if isinstance(block[0], str): # Got a primitive
|
|
yield block
|
|
for item in _real_extract_blocks_from_stack(block[1:]):
|
|
yield item
|
|
else: # Inside a sequence
|
|
for item in _real_extract_blocks_from_stack(block):
|
|
yield item
|
|
|
|
|
|
def extract_blocks_from_script(script):
|
|
'''
|
|
Returns a flattened list of blocks used in the stack.
|
|
Includes all arguments passed to the block.
|
|
'''
|
|
blocks = []
|
|
blocknames = []
|
|
blocks = list(_real_extract_blocks_from_stack(script[2]))
|
|
return blocks
|