Parse input text using various triggers, some returning text and some for
    engaging functions. If triggered, a trigger returns text or True if and if
    not triggered, returns False. If no triggers are triggered, return False, if
    one trigger is triggered, return the value returned by that trigger, and if
    multiple triggers are triggered, return a list of the values returned by
    those triggers.

    Options such as humour engage or disengage various triggers.

def parse(
    text   = None,
    humour = 75
    ):
    """
    Parse input text using various triggers, some returning text and some for
    engaging functions. If triggered, a trigger returns text or True if and if
    not triggered, returns False. If no triggers are triggered, return False, if
    one trigger is triggered, return the value returned by that trigger, and if
    multiple triggers are triggered, return a list of the values returned by
    those triggers.

    Options such as humour engage or disengage various triggers.
    """
    triggers = []

    # general

    if humour >= 75:
        triggers.extend([
            trigger_keyphrases(
                text       = text,
                keyphrases = [
                             "image"
                             ],
                response   = "http://i.imgur.com/MiqrlTh.jpg"
            ),
            trigger_keyphrases(
                text       = text,
                keyphrases = [
                             "sup",
                             "hi"
                             ],
                response   = "sup home bean"
            ),
            trigger_keyphrases(
                text       = text,
                keyphrases = [
                             "thanks",
                             "thank you"
                             ],
                response   = "you're welcome, boo ;)"
            )
        ])

    # information

    triggers.extend([
        trigger_keyphrases(
            text       = text,
            keyphrases = [
                         "where are you",
                         "IP",
                         "I.P.",
                         "IP address",
                         "I.P. address",
                         "ip address"
                         ],
            function   = report_IP
        ),
        trigger_keyphrases(
            text       = text,
            keyphrases = [
                         "how are you",
                         "are you well",
                         "status"
                         ],
            function   = report_system_status,
            kwargs     = {"humour": humour}
        ),
        trigger_keyphrases(
            text       = text,
            keyphrases = [
                         "heartbeat"
                         ],
            function   = heartbeat_message
        ),
        trigger_keyphrases(
            text       = text,
            keyphrases = [
                         "METAR"
                         ],
            function   = report_METAR,
            kwargs     = {"text": text}
        ),
        trigger_keyphrases(
            text       = text,
            keyphrases = [
                         "TAF"
                         ],
            response   = report_TAF,
            kwargs     = {"text": text}
        ),
        trigger_keyphrases(
            text       = text,
            keyphrases = [
                         "rain"
                         ],
            response   = report_rain_times,
            kwargs     = {"text": text}
        )
    ])

    # actions

    triggers.extend([
        trigger_keyphrases(
            text       = text,
            keyphrases = [
                         "command",
                         "run command",
                         "engage command",
                         "execute command"
                         ],
            response   = command()
        ),
        trigger_keyphrases(
            text                          = text,
            keyphrases                    = [
                                            "restart"
                                            ],
            function                      = restart,
            confirm                       = True,
            confirmation_prompt           = "Do you want to restart this "
                                            "program? (y/n)",
            confirmation_feedback_confirm = "confirm restart",
            confirmation_feedback_deny    = "deny restart"
        )
    ])

    if any(triggers):
        responses = [response for response in triggers if response]
        if len(responses) > 1:
            return responses
        else:
            return responses[0]
    else:
        return False