xn/Transformation/Bang.cs

30 lines
797 B
C#

using System.Collections.Generic;
using System.Xml;
using System.Xml.Linq;
using System.Xml.XPath;
using XNeedle;
using XNeedle.Parser.Elements;
namespace XNeedle.Transformation
{
public class Bang : Part
{
public required string Name { get; set; }
public required IEnumerable<string> Arguments;
public required IEnumerable<Part> Body;
public override void Operate(Context ctx)
{
var bangop = BangOperation.Resolve(Name);
if (bangop == null)
{
throw new ArgumentException($"!{Name} is not a valid bang.");
}
var bodyctx = bangop.Execute(ctx, Arguments);
foreach (var b in Body)
{
b.Operate(bodyctx);
}
}
}
}