using System;

namespace TechBot.IRCLibrary
{
	/// <summary>
	/// IRC user.
	/// </summary>
	public class IrcUser
	{
		#region Private fields

		private string nickname;
		private string decoratedNickname;

		#endregion

		#region Public properties

		/// <summary>
		/// Nickname of user.
		/// </summary>
		public string Nickname
		{
			get
			{
				return nickname;
			}
		}

		/// <summary>
		/// Decorated nickname of user.
		/// </summary>
		public string DecoratedNickname
		{
			get
			{
				return decoratedNickname;
			}
		}

		/// <summary>
		/// Wether user is channel operator.
		/// </summary>
		public bool Operator
		{
			get
			{
				return decoratedNickname.StartsWith("@");
			}
		}

		/// <summary>
		/// Wether user has voice.
		/// </summary>
		public bool Voice
		{
			get
			{
				return decoratedNickname.StartsWith("+");
			}
		}

		#endregion

		/// <summary>
		/// Constructor.
		/// </summary>
		/// <param name="nickname">Nickname (possibly decorated) of user.</param>
		public IrcUser(string nickname)
		{
			this.decoratedNickname = nickname.Trim();
			this.nickname = StripDecoration(decoratedNickname);
		}

		/// <summary>
		/// Strip docoration of nickname.
		/// </summary>
		/// <param name="nickname">Possible decorated nickname.</param>
		/// <returns>Undecorated nickname.</returns>
		public static string StripDecoration(string decoratedNickname)
		{
			if (decoratedNickname.StartsWith("@"))
			{
				return decoratedNickname.Substring(1);
			}
			else if (decoratedNickname.StartsWith("+"))
			{
				return decoratedNickname.Substring(1);
			}
			else
			{
				return decoratedNickname;
			}
		}
	}
}