a619295dd7
The hy2py tool has been very useful for me, but most of the time, it's only a part of its output that one is interested in. The whole output, with source code, AST and python code together is one big monstrosity. So instead of printing all that, lets have a few handy command-line options to control which part gets printed. By default, only the generated python source is, as that's what the name of the tool implies. Also, don't run it. That's what hy is for. Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
40 lines
1.2 KiB
Python
Executable File
40 lines
1.2 KiB
Python
Executable File
#!/usr/bin/env python
|
|
from __future__ import print_function
|
|
from hy.importer import (import_file_to_ast, import_file_to_hst)
|
|
|
|
import argparse
|
|
import sys
|
|
|
|
import astor.codegen
|
|
|
|
module_name = "<STDIN>"
|
|
|
|
parser = argparse.ArgumentParser(
|
|
prog="hy2py",
|
|
usage="%(prog)s [options] FILE",
|
|
formatter_class=argparse.RawDescriptionHelpFormatter)
|
|
parser.add_argument("--with-source", "-s", action="store_true",
|
|
help="Show the parsed source structure")
|
|
parser.add_argument("--with-ast", "-a", action="store_true",
|
|
help="Show the generated AST")
|
|
parser.add_argument("--without-python", "-np", action="store_true",
|
|
help="Do not show the python code generated from the AST")
|
|
parser.add_argument('args', nargs=argparse.REMAINDER, help=argparse.SUPPRESS)
|
|
|
|
options = parser.parse_args(sys.argv[1:])
|
|
|
|
if options.with_source:
|
|
hst = import_file_to_hst(options.args[0])
|
|
print(str(hst).encode("utf-8"))
|
|
print()
|
|
print()
|
|
|
|
_ast = import_file_to_ast(options.args[0], module_name)
|
|
if options.with_ast:
|
|
print(astor.dump(_ast).encode("utf-8"))
|
|
print()
|
|
print()
|
|
|
|
if not options.without_python:
|
|
print(astor.codegen.to_source(_ast).encode("utf-8"))
|