80 lines
1.6 KiB
Python
80 lines
1.6 KiB
Python
|
|
||
|
HISTFILE = '.jep'
|
||
|
|
||
|
import traceback
|
||
|
import jep
|
||
|
from jep import *
|
||
|
|
||
|
hasReadline = False
|
||
|
|
||
|
try:
|
||
|
import readline
|
||
|
|
||
|
try:
|
||
|
hasReadline = True
|
||
|
import os
|
||
|
HISTFILE = '%s/.jep' % (os.environ['HOME'])
|
||
|
if(not os.access(HISTFILE, os.W_OK)):
|
||
|
os.open(HISTFILE, os.O_CREAT)
|
||
|
readline.read_history_file(HISTFILE)
|
||
|
except:
|
||
|
traceback.print_exc()
|
||
|
pass
|
||
|
except:
|
||
|
print """
|
||
|
No readline available.
|
||
|
You may want to set the LD_PRELOAD environment variable, see the
|
||
|
README file for details.
|
||
|
|
||
|
|
||
|
i.e.: export LD_PRELOAD=/usr/lib/libpython2.3.so.1.0
|
||
|
|
||
|
If your platform really doesn't have readline, try this:
|
||
|
http://newcenturycomputers.net/projects/readline.html """
|
||
|
|
||
|
|
||
|
PS1 = ">>> "
|
||
|
PS2 = "... "
|
||
|
|
||
|
|
||
|
def prompt(jep):
|
||
|
global hasReadline
|
||
|
|
||
|
try:
|
||
|
line = None
|
||
|
while(1):
|
||
|
ran = True
|
||
|
try:
|
||
|
ran = jep.eval(line)
|
||
|
except:
|
||
|
traceback.print_exc()
|
||
|
|
||
|
try:
|
||
|
if(ran):
|
||
|
line = raw_input(PS1)
|
||
|
else:
|
||
|
line = raw_input(PS2)
|
||
|
except:
|
||
|
break
|
||
|
|
||
|
finally:
|
||
|
if(hasReadline):
|
||
|
readline.write_history_file(HISTFILE)
|
||
|
|
||
|
|
||
|
if(__name__ == '__main__'):
|
||
|
Jep = findClass('jep.Jep')
|
||
|
jep = Jep(True)
|
||
|
|
||
|
# Pass argv to interactive prompt. We can't pass a Python object,
|
||
|
# but we can make a new one.
|
||
|
jep.eval("argv = %s" % argv)
|
||
|
|
||
|
try:
|
||
|
prompt(jep)
|
||
|
except:
|
||
|
traceback.print_exc()
|
||
|
|
||
|
print ''
|
||
|
jep.close()
|