view pydershell/test.py @ 25:64fb84017d87

Added .hgignore.
author Atul Varma <varmaa@toolness.com>
date Mon, 07 Sep 2009 17:20:24 -0700
parents dace90a7f5e3
children b7037cd0f375
line wrap: on
line source

#! /usr/bin/env python

# Trivial embedding of pydershell.

import sys

import pydermonkey
from pydershell import JsSandbox, JsExposedObject, jsexposed

if __name__ == '__main__':
    sandbox = JsSandbox()

    class Baz(JsExposedObject):
        @jsexposed
        def woozle(self, blap):
            return blap + 5

    @jsexposed(on=sandbox.root)
    def baz():
        return Baz()

    @jsexposed(on=sandbox.root)
    def bar(obj):
        print obj.bar()

    @jsexposed(on=sandbox.root)
    def foo(callback):
        return callback()

    @jsexposed(on=sandbox.root)
    def ensureBaz(baz):
        if not isinstance(baz, Baz):
            print "Uhoh"
        else:
            print "ok"

    @jsexposed(name="print", on=sandbox.root)
    def jsprint(string):
        print string

    retval = sandbox.run_script('test.js')

    sandbox.finish()
    del sandbox

    import gc
    gc.collect()
    if pydermonkey.get_debug_info()['runtime_count']:
        print "WARNING: JS runtime was not destroyed."

    sys.exit(retval)