Add an utility function to extract all blocks out of a stack

This commit is contained in:
Sayamindu Dasgupta 2013-06-15 07:39:50 +00:00
parent 3b3f50a72f
commit 770dfa70ad
2 changed files with 25 additions and 0 deletions
python/libscratchproject

View file

@ -1 +1,3 @@
import utils
from project import Project

View file

@ -0,0 +1,23 @@
def _real_extract_blocks_from_stack(stack):
for block in stack:
if isinstance(block, list):
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(stack[2]))
return blocks