chatsharp/ChatSharp/MaskCollection.cs
2015-03-15 21:38:55 +01:00

68 lines
1.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using System.Linq;
namespace ChatSharp
{
public class MaskCollection : IEnumerable<Mask>
{
internal MaskCollection()
{
Masks = new List<Mask>();
}
private List<Mask> Masks { get; set; }
public void Add(Mask mask)
{
Masks.Add(mask);
}
public void Remove(Mask mask)
{
Masks.Remove(mask);
}
public bool Contains(Mask mask)
{
return Masks.Contains(mask);
}
public bool ContainsMask(Mask mask)
{
return Masks.Any(m => m.Value == mask.Value);
}
public Mask this[int index]
{
get
{
return Masks[index];
}
}
public bool ContainsMatch(IrcUser user)
{
return Masks.Any(m => user.Match(m.Value));
}
public Mask GetMatch(IrcUser user)
{
var match = Masks.FirstOrDefault(m => user.Match(m.Value));
if (match == null)
throw new KeyNotFoundException("No mask matches the specified user.");
return match;
}
public IEnumerator<Mask> GetEnumerator()
{
return Masks.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
}