stabilizaiton work - projects rework for maintenanceability and ui livening
This commit is contained in:
47
src/__Libraries/StellaOps.Provenance/DocumentArray.cs
Normal file
47
src/__Libraries/StellaOps.Provenance/DocumentArray.cs
Normal file
@@ -0,0 +1,47 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace StellaOps.Provenance;
|
||||
|
||||
public class DocumentArray : DocumentValue, IEnumerable<DocumentValue>
|
||||
{
|
||||
private readonly List<object?> _items = new();
|
||||
|
||||
public DocumentArray()
|
||||
{
|
||||
}
|
||||
|
||||
public DocumentArray(IEnumerable items)
|
||||
{
|
||||
foreach (var item in items)
|
||||
{
|
||||
Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
public DocumentArray(IEnumerable<object?> 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<DocumentValue> GetEnumerator() =>
|
||||
_items.Select(DocumentValue.Wrap).GetEnumerator();
|
||||
|
||||
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
|
||||
}
|
||||
Reference in New Issue
Block a user