view pydershell/test.py @ 28:f974d4a80473 default tip

Some fixes.
author Atul Varma <varmaa@toolness.com>
date Tue, 08 Sep 2009 15:27:02 -0700
parents b7037cd0f375
children
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):
        __jsprops__ = ['moose']

        def __init__(self):
            self._moose = 0

        def get_moose(self):
            self._moose += 1
            return self._moose

        def set_moose(self, value):
            self._moose = value

        moose = property(get_moose, set_moose)

        @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)