// Copyright © Corporation for National Research Initiatives
package org.python.util;
import org.python.core.*;
import org.gnu.readline.*;

// Based on CPython-1.5.2's code module

public class ReadlineConsole extends InteractiveConsole {
    public String filename;

    public ReadlineConsole() {
        this(null, "<console>");
    }
    public ReadlineConsole(PyObject locals) {
        this(locals, "<console>");
    }
    public ReadlineConsole(PyObject locals, String filename) {
        super(locals,filename);
	try {
	  Readline.load(ReadlineLibrary.Editline);
	} catch (Exception e) {
	}
	Readline.initReadline("jpython");
    }


    /**
     * 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 {
           return Readline.readline(prompt==null ? "" : prompt.toString());
        } catch (java.io.EOFException eofe) {
           throw new PyException(Py.EOFError);
        } catch (java.io.IOException ioe) {
           throw new PyException();
        } catch (java.io.UnsupportedEncodingException e) {
           throw new PyException();
        }
    }
}
