diff options
author | Marion <marion.zepf@gmail.com> | 2013-09-01 14:42:21 (GMT) |
---|---|---|
committer | Marion <marion.zepf@gmail.com> | 2013-09-01 14:42:21 (GMT) |
commit | 767023a5ba68b33dcf1a4858f462e8917c25d20f (patch) | |
tree | 7421dba79da0b42693d401af88478cdc94c51b13 /TurtleArt/tabasics.py | |
parent | 5bb8683e7489c240e81f90b9555d7ada47008dfa (diff) |
update Primitive for 'identity' block, correct those of 'arc' and 'heading'
Diffstat (limited to 'TurtleArt/tabasics.py')
-rw-r--r-- | TurtleArt/tabasics.py | 29 |
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', |