# -*- coding: utf-8 -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
import i_need_py23

"""Accès aux paramètres configurables de ulib/utools dans l'environnement.
"""

__all__ = ('get_default_encoding', 'get_input_encoding', 'get_output_encoding',
           'get_editor', 'get_editor_options', 'get_editor_setrow', 'get_editor_encoding',
           'get_pager',
           )

from os import environ

from encoding import get_encoding_or_default, UTF8

try: from ULIB_CONFIG import DEFAULT_INPUT_ENCODING
except ImportError: DEFAULT_INPUT_ENCODING = UTF8
try: from ULIB_CONFIG import DEFAULT_OUTPUT_ENCODING
except ImportError: DEFAULT_OUTPUT_ENCODING = UTF8

def get_default_encoding(encoding=None, default_encoding=DEFAULT_OUTPUT_ENCODING):
    """Si encoding est None, essayer de déterminer l'encoding par défaut avec
    getlocale(), getdefaultlocale() puis DEFAULT_ENCODING.
    """
    return get_encoding_or_default(encoding, default_encoding)

def get_input_encoding():
    encoding = environ.get('UTOOLS_INPUT_ENCODING', None)
    if encoding is None:
        encoding = environ.get('UTOOLS_OUTPUT_ENCODING', None)
    return get_default_encoding(encoding, DEFAULT_INPUT_ENCODING)

def get_output_encoding():
    encoding = environ.get('UTOOLS_OUTPUT_ENCODING', None)
    return get_default_encoding(encoding, DEFAULT_OUTPUT_ENCODING)

def get_editor():
    return environ.get('UTOOLS_EDITOR', environ.get('EDITOR', None))
def get_editor_options():
    return environ.get('UTOOLS_EDITOR_OPTIONS', None)
def get_editor_setrow():
    return environ.get('UTOOLS_EDITOR_SETROW', None)
def get_editor_encoding():
    encoding = environ.get('UTOOLS_EDITOR_ENCODING', None)
    if encoding is None:
        encoding = environ.get('UTOOLS_INPUT_ENCODING', None)
    if encoding is None:
        encoding = environ.get('UTOOLS_OUTPUT_ENCODING', None)
    return get_default_encoding(encoding, DEFAULT_INPUT_ENCODING)

def get_pager():
    return environ.get('UTOOLS_PAGER', environ.get('PAGER', None))
def get_pager_options():
    return environ.get('UTOOLS_PAGER_OPTIONS', None)
