diff --git a/bin/hy b/bin/hy index 3668c54..14cf5e0 100755 --- a/bin/hy +++ b/bin/hy @@ -4,26 +4,5 @@ import sys from hy.cmdline import cmdline_handler -class HyQuitter(object): - def __init__(self, name): - self.name = name - - def __repr__(self): - return "Use (%s) or Ctrl-D (i.e. EOF) to exit" % (self.name) - - __str__ = __repr__ - - def __call__(self, code=None): - try: - sys.stdin.close() - except: - pass - raise SystemExit(code) - - -__builtins__.quit = HyQuitter('quit') -__builtins__.exit = HyQuitter('exit') - - if __name__ == '__main__': sys.exit(cmdline_handler("hy", sys.argv)) diff --git a/hy/cmdline.py b/hy/cmdline.py index 3d61669..0393e6a 100644 --- a/hy/cmdline.py +++ b/hy/cmdline.py @@ -49,6 +49,31 @@ from hy.models.symbol import HySymbol _machine = Machine(Idle, 1, 0) +try: + import __builtin__ as builtins +except ImportError: + import builtins + + +class HyQuitter(object): + def __init__(self, name): + self.name = name + + def __repr__(self): + return "Use (%s) or Ctrl-D (i.e. EOF) to exit" % (self.name) + + __str__ = __repr__ + + def __call__(self, code=None): + try: + sys.stdin.close() + except: + pass + raise SystemExit(code) + +builtins.quit = HyQuitter('quit') +builtins.exit = HyQuitter('exit') + class HyREPL(code.InteractiveConsole): def runsource(self, source, filename='', symbol='single'): diff --git a/tests/test_bin.py b/tests/test_bin.py index 79d20fa..e366c0c 100644 --- a/tests/test_bin.py +++ b/tests/test_bin.py @@ -91,3 +91,10 @@ def test_hy2py(): assert len(ret[1]) > 1, f assert len(ret[2]) == 0, f assert i + + +def test_bin_hy_builtins(): + import hy.cmdline + + assert str(exit) == "Use (exit) or Ctrl-D (i.e. EOF) to exit" + assert str(quit) == "Use (quit) or Ctrl-D (i.e. EOF) to exit"