Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/TurtleArt/tabasics.py
diff options
context:
space:
mode:
authorMarion <marion.zepf@gmail.com>2013-09-01 14:42:21 (GMT)
committer Marion <marion.zepf@gmail.com>2013-09-01 14:42:21 (GMT)
commit767023a5ba68b33dcf1a4858f462e8917c25d20f (patch)
tree7421dba79da0b42693d401af88478cdc94c51b13 /TurtleArt/tabasics.py
parent5bb8683e7489c240e81f90b9555d7ada47008dfa (diff)
update Primitive for 'identity' block, correct those of 'arc' and 'heading'
Diffstat (limited to 'TurtleArt/tabasics.py')
-rw-r--r--TurtleArt/tabasics.py29
1 files changed, 23 insertions, 6 deletions
diff --git a/TurtleArt/tabasics.py b/TurtleArt/tabasics.py
index abdcdb2..17e3e56 100644
--- a/TurtleArt/tabasics.py
+++ b/TurtleArt/tabasics.py
@@ -108,8 +108,8 @@ from talogo import (primitive_dictionary, logoerror)
from tautils import (convert, chr_to_ord, round_int)
from taconstants import (Color, CONSTANTS)
from taprimitive import (ArgSlot, ConstantArg, or_, Primitive)
-from tatype import (TYPE_COLOR, TYPE_FLOAT, TYPE_INT, TYPE_NUMBER, TYPE_OBJECT,
- TYPE_STRING)
+from tatype import (TYPE_CHAR, TYPE_COLOR, TYPE_FLOAT, TYPE_INT, TYPE_NUMBER,
+ TYPE_NUMERIC_STRING, TYPE_OBJECT, TYPE_STRING)
from taturtle import Turtle
@@ -250,8 +250,8 @@ degrees)'))
help_string=_('moves turtle along an arc'))
self.tw.lc.def_prim('arc', 2,
Primitive(Turtle.arc,
- arg_descs=[ArgSlot(TYPE_FLOAT),
- ArgSlot(TYPE_FLOAT)],
+ arg_descs=[ArgSlot(TYPE_NUMBER),
+ ArgSlot(TYPE_NUMBER)],
call_afterwards=self.after_arc))
define_logo_function('taarc', 'to taarc :a :r\nrepeat round :a \
[right 1 forward (0.0175 * :r)]\nend\n')
@@ -319,7 +319,7 @@ turtle (can be used in place of a number block)'),
prim_name='heading',
logo_command='heading')
self.tw.lc.def_prim('heading', 0,
- Primitive(Turtle.get_heading, return_type=TYPE_FLOAT))
+ Primitive(Turtle.get_heading, return_type=TYPE_NUMBER))
palette.add_block('turtle-label',
hidden=True,
@@ -697,7 +697,24 @@ minus :y\nend\n')
prim_name='id',
help_string=_('identity operator used for extending \
blocks'))
- self.tw.lc.def_prim('id', 1, Primitive(Primitive.identity))
+ self.tw.lc.def_prim('id', 1,
+ # preserve the Type of the argument: try less general types first
+ or_(Primitive(Primitive.identity, return_type=TYPE_NUMERIC_STRING,
+ arg_descs=[ArgSlot(TYPE_NUMERIC_STRING)]),
+ Primitive(Primitive.identity, return_type=TYPE_CHAR,
+ arg_descs=[ArgSlot(TYPE_CHAR)]),
+ Primitive(Primitive.identity, return_type=TYPE_COLOR,
+ arg_descs=[ArgSlot(TYPE_COLOR)]),
+ Primitive(Primitive.identity, return_type=TYPE_FLOAT,
+ arg_descs=[ArgSlot(TYPE_FLOAT)]),
+ Primitive(Primitive.identity, return_type=TYPE_INT,
+ arg_descs=[ArgSlot(TYPE_INT)]),
+ Primitive(Primitive.identity, return_type=TYPE_NUMBER,
+ arg_descs=[ArgSlot(TYPE_NUMBER)]),
+ Primitive(Primitive.identity, return_type=TYPE_STRING,
+ arg_descs=[ArgSlot(TYPE_STRING)]),
+ Primitive(Primitive.identity, return_type=TYPE_OBJECT,
+ arg_descs=[ArgSlot(TYPE_OBJECT)])))
palette.add_block('remainder2',
style='number-style-porch',