# -*- coding: UTF-8 -*-
# this file is needed in site-packages to emulate readline
# necessary for rlcompleter since it relies on the existance
# of a readline module
from __future__ import absolute_import, print_function, unicode_literals

from pyreadline3.rlmain import Readline

__all__ = [
    'parse_and_bind',
    'get_line_buffer',
    'insert_text',
    'clear_history',
    'read_init_file',
    'read_history_file',
    'write_history_file',
    'get_current_history_length',
    'get_history_length',
    'get_history_item',
    'set_history_length',
    'set_startup_hook',
    'set_pre_input_hook',
    'set_completer',
    'get_completer',
    'get_begidx',
    'get_endidx',
    'set_completer_delims',
    'get_completer_delims',
    'add_history',
    'callback_handler_install',
    'callback_handler_remove',
    'callback_read_char',
    'redisplay',
]  # Some other objects are added below


# create a Readline object to contain the state
rl = Readline()

if rl.disable_readline:
    def dummy(completer=""):
        pass
    for funk in __all__:
        globals()[funk] = dummy
else:
    def GetOutputFile():
        '''Return the console object used by readline so that it can be
        used for printing in color.'''
        return rl.console
    __all__.append("GetOutputFile")

    import pyreadline3.console as console

    # make these available so this looks like the python readline module
    read_init_file = rl.read_init_file
    parse_and_bind = rl.parse_and_bind
    clear_history = rl.clear_history
    add_history = rl.add_history
    insert_text = rl.insert_text

    write_history_file = rl.write_history_file
    read_history_file = rl.read_history_file

    get_completer_delims = rl.get_completer_delims
    get_current_history_length = rl.get_current_history_length
    get_history_length = rl.get_history_length
    get_history_item = rl.get_history_item
    get_line_buffer = rl.get_line_buffer
    set_completer = rl.set_completer
    get_completer = rl.get_completer
    get_begidx = rl.get_begidx
    get_endidx = rl.get_endidx

    set_completer_delims = rl.set_completer_delims
    set_history_length = rl.set_history_length
    set_pre_input_hook = rl.set_pre_input_hook
    set_startup_hook = rl.set_startup_hook

    callback_handler_install = rl.callback_handler_install
    callback_handler_remove = rl.callback_handler_remove
    callback_read_char = rl.callback_read_char

    redisplay = rl.redisplay

    console.install_readline(rl.readline)

__all__.append("rl")
