#! /usr/bin/env python

# Trivial embedding of pydershell.

import sys

import pydermonkey
from pydershell import JsSandbox, JsExposedObject

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

    class Baz(JsExposedObject):
        def woozle(self, blap):
            return blap + 5
        woozle.__jsexposed__ = True

    def baz():
        return Baz()
    sandbox.root.baz = baz

    def bar(obj):
        print obj.bar()
    sandbox.root.bar = bar

    def foo(callback):
        return callback()
    sandbox.root.foo = foo

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

    def jsprint(string):
        print string
    sandbox.root['print'] = jsprint

    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)
