#!/usr/bin/env python
#
# License: BSD
#   https://raw.githubusercontent.com/splintered-reality/py_trees/devel/LICENSE
#
##############################################################################
# Documentation
##############################################################################

"""
.. module:: syntax_highlighting
   :synopsis: Syntax highlighting for various py_trees objects

Oh my spaghettified magnificence,
Bless my noggin with a tickle from your noodly appendages!
"""

##############################################################################
# Imports
##############################################################################

from . import common
from . import console

##############################################################################
# Syntax Highlighting
##############################################################################


_status_colour_strings = {common.Status.SUCCESS: console.green + str(common.Status.SUCCESS) + console.reset,
                          common.Status.RUNNING: console.blue + str(common.Status.RUNNING) + console.reset,
                          common.Status.FAILURE: console.red + str(common.Status.FAILURE) + console.reset,
                          common.Status.INVALID: console.yellow + str(common.Status.INVALID) + console.reset
                          }

_status_colour_codes = {common.Status.SUCCESS: console.green,
                        common.Status.RUNNING: console.cyan,
                        common.Status.FAILURE: console.red,
                        common.Status.INVALID: console.yellow
                        }


def status(status):
    """
    Syntax colouring for :py:class:`~py_trees.common.Status`

    :param :py:class:`~py_trees.common.Status` Status: behaviour status
    :returns: syntax highlighted string representation of the status
    """
    return _status_colour_strings[status]


def status_colour_code(status):
    """
    Colour code associated with the :py:class:`~py_trees.common.Status` for
    syntax highlighting

    :param :py:class:`~py_trees.common.Status` Status: behaviour status
    :returns: console colour code associated with the status
    """
    return _status_colour_codes[status]
