예제 #1
0
def main():
    parser = OptionParser(usage="%prog [options] filename",
                          description="Python to JavaScript compiler.")

    parser.add_option("--output",
                      action="store",
                      dest="output",
                      help="write output to OUTPUT")

    parser.add_option("-i",
                      "--include-builtins",
                      action="store_true",
                      dest="include_builtins",
                      default=False,
                      help="include py-builtins.js library in the output")

    parser.add_option(
        "-I",
        "--import-builtins",
        action="store_true",
        dest="import_builtins",
        default=False,
        help="call load('py-builtins.js') to source the standard library")

    parser.add_option(
        "-N",
        "--no-include",
        action="store_true",
        dest="no_builtins",
        default=False,
        help=
        "Do not include attempt to load py-builtins.js. The generated javascript code will not run by itself, unless this library is included"
    )

    options, args = parser.parse_args()

    if options.include_builtins + options.import_builtins + options.no_builtins <> 1 and len(
            args) == 1:
        print "You must specify either the -i, -I or -N mode!"
    elif len(args) == 1:
        filename = args[0]

        if options.output:
            output = open(options.output, "w")
        else:
            output = sys.stdout

        if options.include_builtins:
            builtins = open(path_library).read()
            output.write("  Standard library  ".center(80, "#") + "\n")
            output.write(builtins)
            output.write("  User code  ".center(80, "#") + "\n")
        elif options.import_builtins:
            output.write('load("%s");\n' % path_library)

        c = Compiler()
        c.append_string(open(filename).read())
        output.write(str(c))
    else:
        parser.print_help()
예제 #2
0
파일: pyjs.py 프로젝트: stjordanis/pyjaco
def compile_file(infile, outfile, options):
    '''Compile a single python file object to a single javascript output file
    object'''
    if options.builtins == "include":
        builtins = BuiltinGenerator().generate_builtins()

        outfile.write("/*%s*/\n" % "  Standard library  ".center(76, "*"))
        outfile.write(builtins)
        outfile.write("/*%s*/\n" % "  User code  ".center(76, "*"))
    elif options.builtins == "import":
        outfile.write('load("py-builtins.js");\n')

    c = Compiler()
    c.append_string(infile.read())
    outfile.write(str(c))