// Copyright 2014 Vic Demuzere
//
// Use of this source code is governed by the MIT license.

// Package ctcp implements partial support for the Client-to-Client Protocol.
//
// CTCP defines extended messages using the standard PRIVMSG and NOTICE
// commands in IRC. This means that any CTCP messages are embedded inside the
// normal message text. Clients that don't support CTCP simply show
// the encoded message to the user.
//
// Most IRC clients support only a subset of the protocol, and only a few
// commands are actually used. This package aims to implement the most basic
// CTCP messages: a single command per IRC message. Quoting is not supported.
//
// Example using the irc.Message type:
//
//    m := irc.ParseMessage(...)
//
//    if tag, text, ok := ctcp.Decode(m.Trailing); ok {
//        // This is a CTCP message.
//    } else {
//        // This is not a CTCP message.
//    }
//
// Similar, for encoding messages:
//
//    m.Trailing = ctcp.Encode("ACTION","wants a cookie!")
//
// Do not send a complete IRC message to Decode, it won't work.
package ctcp