xn/Transformation/Bangs/AddBang.cs

28 lines
849 B
C#

using System.Xml.Linq;
using XNeedle.Parser.Elements;
namespace XNeedle.Transformation.Bangs
{
public class AddBang : BangOperation
{
public override string Name => "add";
public override Context Execute(Context ctx, IEnumerable<string> arguments)
{
if (ctx.Node == null)
{
throw new ArgumentNullException("!add needs a reachable node");
}
if (arguments.Count() < 1)
{
throw new ArgumentException("!add needs at least the tag name as argument.");
}
var tagname = arguments.ElementAt(0);
var element = new XElement(tagname, "");
ctx.Node.Add(element);
return new Context{ Node = element, SLoc = ctx.SLoc.AsSynthetic(), XPathSelector = tagname};
}
}
}