rendered paste bodynamespace IRCLib_Tester
{
public class MessageParser
{
string[] likeWords;
string[] hateWords;
string[] nicknames;
string[] ignoreWords;
public MessageParser()
{
likeWords = new string[0];
hateWords = new string[0];
nicknames = new string[0];
ignoreWords = new string[0];
}
public MessageType Parse( string message )
{
if ( HasIgnore( message ) )
return MessageType.Ignored;
if ( IsLike( message ) )
return MessageType.Like;
else if ( IsHate( message ) )
return MessageType.Hate;
else
return MessageType.Neutral;
}
public MessageInfo GetInfo( string message )
{
MessageInfo mi = new MessageInfo();
if ( HasIgnore( message ) )
{
mi.ContainsNick = false;
return mi;
}
if ( HasNick( message ) )
{
mi.ContainsNick = true;
mi.Nickname = WhichNick( message );
}
else
{
mi.ContainsNick = false;
}
return mi;
}
private bool IsLike( string message )
{
for ( int x = 0 ; x < likeWords.Length ; x++ )
{
if ( message.IndexOf( likeWords[x], 0, StringComparison.InvariantCultureIgnoreCase ) != -1 )
return true;
}
return false;
}
private bool IsHate( string message )
{
for ( int x = 0 ; x < hateWords.Length ; x++ )
{
if ( message.IndexOf( hateWords[x], 0, StringComparison.InvariantCultureIgnoreCase ) != -1 )
return true;
}
return false;
}
private bool HasNick( string message )
{
for ( int x = 0 ; x < nicknames.Length ; x++ )
{
if ( message.IndexOf( nicknames[x], 0, StringComparison.InvariantCultureIgnoreCase ) != -1 )
return true;
}
return false;
}
private bool HasIgnore( string message )
{
for ( int x = 0 ; x < ignoreWords.Length ; x++ )
{
if ( message.IndexOf( ignoreWords[x], 0, StringComparison.InvariantCultureIgnoreCase ) != -1 )
return true;
}
return false;
}
private string WhichNick( string message )
{
for ( int x = 0 ; x < nicknames.Length ; x++ )
{
if ( message.IndexOf( nicknames[x], 0, StringComparison.InvariantCultureIgnoreCase ) != -1 )
return nicknames[x];
}
return null;
}
public string[] LikeWords
{
get { return likeWords; }
set { likeWords = value; }
}
public string[] HateWords
{
get { return hateWords; }
set { hateWords = value; }
}
public string[] Nicknames
{
get { return nicknames; }
set { nicknames = value; }
}
public string[] IgnoreWords
{
get { return ignoreWords; }
set { ignoreWords = value; }
}
}
public struct MessageInfo
{
public bool ContainsNick;
public string Nickname;
}
public enum MessageType
{
Like,
Hate,
Neutral,
Ignored,
}
}