CLre/CLre_server/Tweaks/Chat/Attributes.cs

60 lines
1.7 KiB
C#
Raw Normal View History

using System.Reflection;
using System.Text.RegularExpressions;
namespace CLre_server.Tweaks.Chat
{
public class Attributes
{
}
[System.AttributeUsage(System.AttributeTargets.Method)]
public class ChatCommandAttribute : System.Attribute
{
public readonly string Name;
private readonly Regex _pattern;
private readonly Regex _usernamePattern;
public ChatCommandAttribute(string name, string pattern,
string usernamePattern = null,
RegexOptions options = RegexOptions.Compiled | RegexOptions.IgnoreCase)
{
this.Name = name;
this._pattern = new Regex(pattern, options);
this._usernamePattern = usernamePattern == null ? null : new Regex(pattern, options);
Assembly asm = Assembly.GetCallingAssembly();
if (!ChatConnectionEngine._assembliesToCheck.Contains(asm))
{
ChatConnectionEngine._assembliesToCheck.Add(asm);
}
if (ChatHandler.IsAuthenticationReady && CLre.Config.chat_commands)
{
// Chat system is already started
// TODO
}
}
public Regex GetPattern()
{
return _pattern;
}
public Match RegexMatch(string sender, string message)
{
if (this._usernamePattern != null)
{
if (this._usernamePattern.IsMatch(sender))
{
return _pattern.Match(message);
}
}
else
{
return _pattern.Match(message);
}
return System.Text.RegularExpressions.Match.Empty;
}
}
}