'''
from Tkinter import Listbox, SINGLE
from Tkdnd import dnd_start
-from joy.utils.stack import iter_stack, list_to_stack
+from joy.utils.stack import iter_stack, list_to_stack, expression_to_string
class SourceWrapper:
def _update(self):
self.delete(0, 'end')
- self.insert(0, *self.stack)
+ self.insert(0, *map(self.format, self.stack))
def update_stack(self, stack):
self.stack = list(iter_stack(stack))
ControllerListbox.dnd_commit(self, source, event)
self._update()
self.world.stack = list_to_stack(self.stack)
+
+ @staticmethod
+ def format(item):
+ if isinstance(item, tuple):
+ return '[%s]' % expression_to_string(item)
+ return str(item)
There is no "Stack" Python class, instead we use the `cons list`_, a
venerable two-tuple recursive sequence datastructure, where the
-empty tuple ``()`` is the empty stack and ``(head, rest)`` gives the recursive
-form of a stack with one or more items on it::
+empty tuple ``()`` is the empty stack and ``(head, rest)`` gives the
+recursive form of a stack with one or more items on it::
stack := () | (item, stack)