31 lines
884 B
C#
31 lines
884 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);
|
|
Console.WriteLine($"Operate Bang: {Name}, {string.Join(",", Arguments)}");
|
|
foreach (var b in Body)
|
|
{
|
|
b.Operate(bodyctx);
|
|
}
|
|
}
|
|
}
|
|
} |