Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/TurtleArt/taprimitive.py
diff options
context:
space:
mode:
Diffstat (limited to 'TurtleArt/taprimitive.py')
-rw-r--r--TurtleArt/taprimitive.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/TurtleArt/taprimitive.py b/TurtleArt/taprimitive.py
index b689de5..197a8d8 100644
--- a/TurtleArt/taprimitive.py
+++ b/TurtleArt/taprimitive.py
@@ -373,7 +373,15 @@ class Primitive(object):
loop_ast = ast.While(test=condition_ast,
body=new_arg_asts[1],
orelse=[])
- return loop_ast
+ # Until always executes its body once.
+ if controller == Primitive.controller_until:
+ loop_list = []
+ for arg_ast in new_arg_asts[1]:
+ loop_list.append(arg_ast)
+ loop_list.append(loop_ast)
+ return loop_list
+ else:
+ return loop_ast
# conditionals
elif self in (LogoCode.prim_if, LogoCode.prim_ifelse):
@@ -494,6 +502,10 @@ class Primitive(object):
return [get_call_ast('logo.prim_turtle', new_arg_asts),
ast_extensions.ExtraCode(text)]
+ elif self == LogoCode.active_turtle:
+ text = 'turtle = turtles.get_active_turtle()'
+ return ast_extensions.ExtraCode(text)
+
# comment
elif self == Primitive.comment:
if isinstance(new_arg_asts[0], ast.Str):