Merge MVP features #1

Merged
dominic merged 16 commits from prototype into master 2026-04-24 18:48:16 +00:00
2 changed files with 32 additions and 14 deletions
Showing only changes of commit 13e375c145 - Show all commits

View File

@ -1,5 +1,7 @@
using System; using System;
using System.Xml; using System.Xml;
using System.Xml.Linq;
using CommandLine;
using Sprache; using Sprache;
using XNeedle.Parser; using XNeedle.Parser;
using XNeedle.Parser.Elements; using XNeedle.Parser.Elements;
@ -9,24 +11,39 @@ namespace XNeedle
{ {
class Program class Program
{ {
static void Main() public class Options
{ {
var input = "$(\"//Device/Type[@ProductCode='#x0B583052' and @RevisionNo='#x00110000']\")"; [Value(0, MetaName = "xn", Required = true, HelpText = "XN transformation definition")]
public string XnDefinition { get; set; }
var rule = (Rule)XnParser.RuleObject.Parse(input); [Option('i', "input", HelpText = "Input XML file", Required = true)]
public string Input { get; set; }
XmlDocument doc = new XmlDocument(); [Option('o', "output", HelpText = "Output XML file", Required = true)]
doc.Load("ELx9xx.xml"); public string Output { get; set; }
rule.Transform(doc); [Option('v', "verbose", Required = false, HelpText = "Set output to verbose messages.")]
public bool Verbose { get; set; }
}
static void Main(string[] args)
{
CommandLine.Parser.Default.ParseArguments<Options>(args)
.WithParsed(RunOptions)
.WithNotParsed(HandleParseError);
}
XmlWriterSettings settings = new XmlWriterSettings(); static void RunOptions(Options opts)
settings.Indent = true; {
XmlWriter writer = XmlWriter.Create("El9xxFi.xml", settings); var masterRule = (Rule)XnParser.RuleObject.Parse(File.ReadAllText(opts.XnDefinition));
var doc = new XmlDocument();
doc.PreserveWhitespace = true;
doc.Load(opts.Input);
masterRule.Transform(doc);
doc.Save(opts.Output);
doc.WriteContentTo(writer); Console.WriteLine($"Applied \"{opts.XnDefinition}\" to \"{opts.Input}\" and saved result to \"{opts.Output}\"");
}
Console.WriteLine("Done."); static void HandleParseError(IEnumerable<Error> errs) {}
}
} }
} }

View File

@ -8,6 +8,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="CommandLineParser" Version="2.9.1" />
<PackageReference Include="Sprache" Version="3.0.0-develop-00049" /> <PackageReference Include="Sprache" Version="3.0.0-develop-00049" />
<PackageReference Include="System.IO.Hashing" Version="10.0.0" /> <PackageReference Include="System.IO.Hashing" Version="10.0.0" />
</ItemGroup> </ItemGroup>