from __future__ import unicode_literals

"""
Copyright OpenSearch Contributors
SPDX-License-Identifier: Apache-2.0
"""


from prompt_toolkit.enums import DEFAULT_BUFFER
from prompt_toolkit.filters import Condition
from prompt_toolkit.application import get_app


def opensearch_is_multiline(opensearchsql_cli):
    """Return function that returns boolean to enable/unable multiline mode."""

    @Condition
    def cond():
        doc = get_app().layout.get_buffer_by_name(DEFAULT_BUFFER).document

        if not opensearchsql_cli.multi_line:
            return False
        if opensearchsql_cli.multiline_mode == "safe":
            return True
        else:
            return not _multiline_exception(doc.text)

    return cond


def _is_complete(sql):
    # A complete command is an sql statement that ends with a semicolon
    return sql.endswith(";")


def _multiline_exception(text):
    text = text.strip()
    return _is_complete(text)