All Downloads are FREE. Search and download functionalities are using the official Maven repository.

src.org.python.util.ReadlineConsole Maven / Gradle / Ivy

Go to download

Jython is an implementation of the high-level, dynamic, object-oriented language Python written in 100% Pure Java, and seamlessly integrated with the Java platform. It thus allows you to run Python on any Java platform.

There is a newer version: 2.7.4
Show newest version
// Copyright (c) Corporation for National Research Initiatives
package org.python.util;

import java.io.EOFException;
import java.io.IOException;

import org.gnu.readline.Readline;
import org.gnu.readline.ReadlineLibrary;

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

/**
 * Uses: Java Readline 

* * Based on CPython-1.5.2's code module * */ public class ReadlineConsole extends InteractiveConsole { public String filename; public ReadlineConsole() { this(null, CONSOLE_FILENAME); } public ReadlineConsole(PyObject locals) { this(locals, CONSOLE_FILENAME); } public ReadlineConsole(PyObject locals, String filename) { super(locals, filename, true); String backingLib = PySystemState.registry.getProperty("python.console.readlinelib", "Editline"); try { Readline.load(ReadlineLibrary.byName(backingLib)); } catch(RuntimeException e) { // Silently ignore errors during load of the native library. // Will use a pure java fallback. } Readline.initReadline("jython"); try { // Force rebind of tab to insert a tab instead of complete Readline.parseAndBind("tab: tab-insert"); } catch (UnsupportedOperationException uoe) { // parseAndBind not supported by this readline } } /** * Write a prompt and read a line. * * The returned line does not include the trailing newline. When the user * enters the EOF key sequence, EOFError is raised. * * This subclass implements the functionality using JavaReadline. */ public String raw_input(PyObject prompt) { try { String line = Readline.readline(prompt == null ? "" : prompt.toString()); return (line == null ? "" : line); } catch(EOFException eofe) { throw new PyException(Py.EOFError); } catch(IOException ioe) { throw new PyException(Py.IOError); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy