namespace 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, } }