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 Arguments; public required IEnumerable 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); Console.WriteLine($"Operate Bang: {Name}, {string.Join(",", Arguments)}"); foreach (var b in Body) { b.Operate(bodyctx); } } } }