Package com.scratchdisk.script.jython

Source Code of com.scratchdisk.script.jython.JythonScope

/*
* Scriptographer
*
* This file is part of Scriptographer, a Scripting Plugin for Adobe Illustrator
* http://scriptographer.org/
*
* Copyright (c) 2002-2010, Juerg Lehni
* http://scratchdisk.com/
*
* All rights reserved. See LICENSE file for details.
*
* File created on Apr 14, 2007.
*/

package com.scratchdisk.script.jython;

import org.python.core.Py;
import org.python.core.PyDictionary;
import org.python.core.PyException;
import org.python.core.PyObject;

import com.scratchdisk.script.Scope;

/**
* @author lehni
*
*/
public class JythonScope extends Scope {
  private PyObject scope;

  /**
   * Wraps an existing scope
   *
   * @param scope
   */
  public JythonScope(PyObject scope) {
    this.scope = scope;
  }
 
  public JythonScope() {
    scope = new PyDictionary();
  }
 
  public PyObject getScope() {
    return scope;
  }

  public Object get(String name) {
    try {
      PyObject obj = scope.__getitem__(Py.java2py(name));
      if (obj == null)
        return null;
      if (obj.isCallable())
        return new JythonCallable(obj);
      return obj.__tojava__(Object.class);
    } catch (PyException e) {
      // catch not defined exception
      return null;
    }
  }

  public Object put(String name, Object value, boolean readOnly) {
    Object prev = get(name);
    // TODO: Implement readOnly
    scope.__setitem__(name, Py.java2py(value));
    return prev;
  }

  public Object[] getKeys() {
    // TODO: Implement
    return new Object[0];
  }
}
TOP

Related Classes of com.scratchdisk.script.jython.JythonScope

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.