From e8cecbc4eb39dabf172f1bd10cf1caf336ae24a7 2008-02-11 18:08:42 From: vivainio Date: 2008-02-11 18:08:42 Subject: [PATCH] add ipy_leo extension --- diff --git a/IPython/Extensions/ipy_leo.py b/IPython/Extensions/ipy_leo.py new file mode 100644 index 0000000..8157205 --- /dev/null +++ b/IPython/Extensions/ipy_leo.py @@ -0,0 +1,45 @@ +import IPython.ipapi +ip = IPython.ipapi.get() + +from IPython.external.simplegeneric import generic + +@generic +def format_for_leo(obj): + """ Convert obj to string representiation (for editing in Leo)""" + return str(obj) + +@format_for_leo.when_type(list) +def format_list(obj): + return "\n".join(str(s) for s in obj) + + +def add_var(self,varname): + ip = self.getapi() + leo = ip.user_ns['leox'] + c,g = leo.c, leo.g + nodename = '@ipy-var ' + varname + p2 = g.findNodeAnywhere(c,nodename) + if not c.positionExists(p2): + p2 = c.currentPosition().insertAfter() + c.setHeadString(p2,'@ipy-var ' + varname) + + c.setCurrentPosition(p2) + val = ip.user_ns[varname] + formatted = format_for_leo(val) + c.setBodyString(p2,formatted) + +def leo_f(self,s): + ip = self.getapi() + s = s.strip() + if s in ip.user_ns: + add_var(self,s) + +ip.expose_magic('leo',leo_f) + + + + + + + +