using System.Collections; using System.Collections.Generic; using System.Linq; namespace StellaOps.Provenance; public class DocumentArray : DocumentValue, IEnumerable { private readonly List _items = new(); public DocumentArray() { } public DocumentArray(IEnumerable items) { foreach (var item in items) { Add(item); } } public DocumentArray(IEnumerable items) : this() { foreach (var item in items) { Add(item); } } public DocumentValue this[int index] => DocumentValue.Wrap(_items[index]); public void Add(DocumentObject doc) => _items.Add(doc); public void Add(object? value) => _items.Add(value); public int Count => _items.Count; public override object? Value => this; public override DocumentArray AsDocumentArray => this; public IEnumerator GetEnumerator() => _items.Select(DocumentValue.Wrap).GetEnumerator(); IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); }