##// END OF EJS Templates
Major refactoring of prefilter mechanism. Much of the transformation process has been moved out of the iplib.InteractiveShell class and into a separate module, IPython.prefilter. In addition, extensive tests have been added for prefiltering.
Major refactoring of prefilter mechanism. Much of the transformation process has been moved out of the iplib.InteractiveShell class and into a separate module, IPython.prefilter. In addition, extensive tests have been added for prefiltering.

File last commit:

r655:97c2a6de
r657:499f6d7b
Show More
macro.py
43 lines | 1.3 KiB | text/x-python | PythonLexer
"""Support for interactive macros in IPython"""
#*****************************************************************************
# Copyright (C) 2001-2005 Fernando Perez <fperez@colorado.edu>
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#*****************************************************************************
import IPython.ipapi
from IPython.genutils import Term
from IPython.ipapi import IPyAutocall
class Macro(IPyAutocall):
"""Simple class to store the value of macros as strings.
Macro is just a callable that executes a string of IPython
input when called.
Args to macro are available in _margv list if you need them.
"""
def __init__(self,data):
# store the macro value, as a single string which can be evaluated by
# runlines()
self.value = ''.join(data).rstrip()+'\n'
def __str__(self):
return self.value
def __repr__(self):
return 'IPython.macro.Macro(%s)' % repr(self.value)
def __call__(self,*args):
Term.cout.flush()
self._ip.user_ns['_margv'] = args
self._ip.runlines(self.value)
def getstate(self):
""" needed for safe pickling via %store """
return {'value': self.value}