#!/usr/bin/env python3

r"""
This module provides validation functions like valid_value(), valid_integer(), etc. for robot programs.
"""

import re

import func_args as fa
import gen_print as gp
import gen_valid as gv
from robot.libraries.BuiltIn import BuiltIn


def valid_var_name(var_name):
    r"""
    Validate the robot variable name and return its value.

    If the variable is undefined, this function will print an error message and call BuiltIn().fail().

    Description of arguments():
    var_name                        The name of the robot variable (e.g. "var1").  Do not include "${}" (e.g.
                                    "${var1}".  Just provide the simple name of the variable.
    """

    # Note: get_variable_value() seems to have no trouble with local variables.
    var_value = BuiltIn().get_variable_value("${" + var_name + "}")
    if var_value is None:
        var_value = "<undefined>"
        error_message = gv.valid_value(
            var_value, invalid_values=[var_value], var_name=var_name
        )
        BuiltIn().fail(error_message)

    return var_value


def valid_init(var_name, *args, **kwargs):
    r"""
    Do initialization for variable validation and return var_name, args and kwargs.

    This function is to be called by all of the various validation functions in this module.

    This function is designed solely for use by other functions in this file.

    Description of argument(s):
    var_name                        The name of the variable to be validated.
    args                            The positional arguments to be passed to a validation function.
    kwargs                          The keyword arguments to be passed to a validation function.
    """

    var_value = valid_var_name(var_name)
    # Convert python string object definitions to objects (useful for robot callers).
    args = fa.args_to_objects(args)
    kwargs = fa.args_to_objects(kwargs)
    return var_value, args, kwargs


def process_error_message(error_message):
    r"""
    Process an error message.

    If error_message is non-blank, fail.  Otherwise, do nothing.

    This function is designed solely for use by other functions in this file.

    Description of argument(s):
    error_message                   The error message to be processed.
    """

    if error_message:
        error_message = gp.sprint_error_report(error_message)
        BuiltIn().fail(error_message)


# The docstring header will be pre-pended to each validation function's existing docstring.
docstring_header = r"""
    Fail if the variable named by var_name is invalid.
    """


def customize_doc_string(doc_string):
    r"""
    Customize a gen_valid function docstring and return the result.

    This function is designed solely for use by other functions in this file.

    The caller should pass a docstring from a gen_valid.py validation function.  This docstring will be
    changed to make a suitable docstring for this module's corresponding validation function.

    For example:

    Let's suppose that gen_valid.py has a function called "valid_value()".  This module could make the
    following call to essentially copy gen_valid's "valid_value()" function, modify it and then assign it to
    the local version of the valid_value() function.

    valid.__doc__ = customize_doc_string(gv.valid.__doc__)

    Description of argument(s):
    doc_string                      The docstring to be customized.
    """

    doc_string = docstring_header + doc_string
    doc_string = doc_string.split("\n")

    start_ix = 0
    # Find the "var_value" line.
    start_ix = next(
        (
            index
            for index, value in enumerate(doc_string[start_ix:], start_ix)
            if re.match("[ ]+var_value  ", value)
        ),
        None,
    )
    # Replace the "var_value" line with our "var_name" line.
    doc_string[start_ix] = (
        "    var_name                        "
        + "The name of the variable to be validated."
    )

    return "\n".join(doc_string)


# All of the following functions are robot wrappers for the equivalent functions defined in gen_valid.py.
# Note that the only difference between any two of these locally defined functions is the function name and
# the gv.<function name> which they call.  Also, note that the docstring for each is created by modifying the
# docstring from the supporting gen_valid.py function.


def valid_type(var_name, *args, **kwargs):
    var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
    error_message = gv.valid_type(
        var_value, *args, var_name=var_name, **kwargs
    )
    process_error_message(error_message)


def valid_value(var_name, *args, **kwargs):
    var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
    error_message = gv.valid_value(
        var_value, *args, var_name=var_name, **kwargs
    )
    process_error_message(error_message)


def valid_range(var_name, *args, **kwargs):
    var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
    error_message = gv.valid_range(
        var_value, *args, var_name=var_name, **kwargs
    )
    process_error_message(error_message)


def valid_integer(var_name, *args, **kwargs):
    var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
    error_message = gv.valid_integer(
        var_value, *args, var_name=var_name, **kwargs
    )
    process_error_message(error_message)


def valid_float(var_name, *args, **kwargs):
    var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
    error_message = gv.valid_float(
        var_value, *args, var_name=var_name, **kwargs
    )
    process_error_message(error_message)


def valid_date_time(var_name, *args, **kwargs):
    var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
    error_message = gv.valid_date_time(
        var_value, *args, var_name=var_name, **kwargs
    )
    process_error_message(error_message)


def valid_dir_path(var_name, *args, **kwargs):
    var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
    error_message = gv.valid_dir_path(
        var_value, *args, var_name=var_name, **kwargs
    )
    process_error_message(error_message)


def valid_file_path(var_name, *args, **kwargs):
    var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
    error_message = gv.valid_file_path(
        var_value, *args, var_name=var_name, **kwargs
    )
    process_error_message(error_message)


def valid_path(var_name, *args, **kwargs):
    var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
    error_message = gv.valid_path(
        var_value, *args, var_name=var_name, **kwargs
    )
    process_error_message(error_message)


def valid_list(var_name, *args, **kwargs):
    var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
    error_message = gv.valid_list(
        var_value, *args, var_name=var_name, **kwargs
    )
    process_error_message(error_message)


def valid_dict(var_name, *args, **kwargs):
    var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
    error_message = gv.valid_dict(
        var_value, *args, var_name=var_name, **kwargs
    )
    process_error_message(error_message)


def valid_program(var_name, *args, **kwargs):
    var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
    error_message = gv.valid_program(
        var_value, *args, var_name=var_name, **kwargs
    )
    process_error_message(error_message)


def valid_length(var_name, *args, **kwargs):
    var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
    error_message = gv.valid_length(
        var_value, *args, var_name=var_name, **kwargs
    )
    process_error_message(error_message)


# Modify the validation function docstrings by calling customize_doc_string for each function in the
# func_names list.
func_names = [
    "valid_type",
    "valid_value",
    "valid_range",
    "valid_integer",
    "valid_dir_path",
    "valid_file_path",
    "valid_path",
    "valid_list",
    "valid_dict",
    "valid_program",
    "valid_length",
    "valid_float",
    "valid_date_time",
]

for func_name in func_names:
    cmd_buf = (
        func_name
        + ".__doc__ = customize_doc_string(gv.raw_doc_strings['"
        + func_name
        + "'])"
    )
    exec(cmd_buf)
