MediaList
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Text;
namespace AngleSharp.DOM.Collections
{
public class MediaList : DOMCollection, IEnumerable<string>, IEnumerable
{
private static readonly string[] ALLOWED = new string[9] {
"tv",
"screen",
"tty",
"projection",
"handheld",
"print",
"braille",
"aural",
"all"
};
private StringCollection media;
public string this[int index] {
get {
if (index < 0 || index >= media.Count)
return null;
return media[index];
}
}
public int Length => media.Count;
public string MediaText {
get {
StringBuilder stringBuilder = new StringBuilder();
if (media.Count > 0) {
stringBuilder.Append(media[0]);
for (int i = 1; i < media.Count; i++) {
stringBuilder.Append(',').Append(media[i]);
}
}
return stringBuilder.ToString();
}
set {
string[] array = value.SplitCommas();
string[] array2 = array;
foreach (string medium in array2) {
if (!CheckSyntax(medium))
throw new DOMException(ErrorCode.SyntaxError);
}
media.Clear();
string[] array3 = array;
foreach (string newMedium in array3) {
AppendMedium(newMedium);
}
}
}
public MediaList()
{
media = new StringCollection();
}
protected virtual bool CheckSyntax(string medium)
{
if (string.IsNullOrEmpty(medium))
return false;
return true;
}
public MediaList AppendMedium(string newMedium)
{
if (!CheckSyntax(newMedium))
throw new DOMException(ErrorCode.SyntaxError);
if (media.Contains(newMedium))
media.Remove(newMedium);
media.Add(newMedium);
return this;
}
public MediaList DeleteMedium(string oldMedium)
{
if (!media.Contains(oldMedium))
throw new DOMException(ErrorCode.ItemNotFound);
media.Remove(oldMedium);
return this;
}
public IEnumerator<string> GetEnumerator()
{
StringEnumerator enumerator = media.GetEnumerator();
try {
while (enumerator.MoveNext()) {
string medium = enumerator.Current;
yield return medium;
}
} finally {
(enumerator as IDisposable)?.Dispose();
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable)media).GetEnumerator();
}
public override string ToHtml()
{
return string.Empty;
}
}
}