Summer of Code/2013/Turtle Blocks Python export project: Difference between revisions

add details to timeline
update decisions; move deferred ones to new Deferred section
Line 53: Line 53:
* The path to the TA installation must be in the environment variable <code>PYTHONPATH</code>.
* The path to the TA installation must be in the environment variable <code>PYTHONPATH</code>.
* Boxes and actions are stored in a dictionary in order to allow for arbitrary names (e.g., names that start with a number or names that are read from the content of a box).
* Boxes and actions are stored in a dictionary in order to allow for arbitrary names (e.g., names that start with a number or names that are read from the content of a box).
* All blocks (including the ones introduced by plugins) reference a <code>Primitive</code> object, which can be called to execute the block in TA, or transformed into a Python AST.
** Type conversion and other modification of the arguments of a block is done by ''slot wrappers''. A slot wrapper is a <code>Primitive</code> that is attached to the argument of another <code>Primitive</code>. Slot wrappers are called/ transformed before the <code>Primitive</code> itself.


=== Pending ===
=== Pending ===
Line 58: Line 60:
The following design issues have yet to be decided:
The following design issues have yet to be decided:


* Enable the user to control the speed of execution (e.g., by setting a global <code>step_time</code>)? ''deferred on 2013-06-14''
=== Deferred ===
 
The following design issues have not yet been decided, but are being deferred due to their low priority:
 
* Enable the user to control the speed of execution (e.g., by setting a global <code>step_time</code>)?
** How to implement this? E.g., call a <code>wait(step_time)</code> function in between two steps?
** How to implement this? E.g., call a <code>wait(step_time)</code> function in between two steps?
* Should the status bar be shown when the exported code is run?
* Should the status bar be shown when the exported code is run?
* Blocks introduced by plugins: Should the plugin provide info about how to transform its blocks into Python?
* How to handle type conversion between numbers and strings that is done implicitly in TA?
** E.g., resolve types when converting the code (possible?), and output the code specific to the type.